No hace mucho salió la versión de apache 2.4, y ya están con alguna beta de pruebas de nuevas versiones, pero el fin de este artículo es ayudar a todos los que hayais intentado realizar una instalación así, y no habéis sido capaces por la cantidad de problemas que da a la hora de compilar todo lo que hace falta y demás.
Como es una instalación un tanto enrevesada, primero tienes que pensar si te merece la pena llevarla a cabo. Si no mueves un exceso de visitas o no experimentas problemas de rendimiento, posiblemente no te haga falta utilizar apache 2.4, pero si quieres probarlo, según los benchmarks (y lo que he podido probar) el rendimiento es bastante superior, llegando hasta un 300% de mejora en muchos casos.
No me enrollo más que el artículo es un poco largo. Sobretodo ten en cuenta que si no sabes del tema, lo intento exponer para que cualquier persona sea capaz de hacerlo, aun así no garantizo nada ni me hago responsable de lo que pueda suceder. Yo he utilizado este método que he ido perfeccionando con instalaciones hasta que ha quedado bien.
Antes de que tengas dudas o preguntas te invito a que leas el artículo completo, ya que a medida que se plantean las dudas las he ido solucionando en las secciones que toca. Léelo hasta el final, y luego espero tus comenatrios o quién sabe, igual una felicitación.
Preparar el sistema para instalar LAMP 2.4, 5.5.0, 5.1.69
Lo primero en lo que nos vamos a centrar va a ser en la preparación de todas las librerias que nos van a hacer falta así como los repositorios que mantienen versiones actualizadas de los paquetes que nos interesan.
Como instalar repositorios famillecollet en Centos 6
cd /tmp wget http://rpms.famillecollet.com/RPM-GPG-KEY-remi rpm --import RPM-GPG-KEY-remi wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm wget http://rpms.famillecollet.com/enterprise/remi-release-6.rpm rpm -Uvh remi-release-6*.rpm epel-release-6*.rpm
Como instalar el repositorio de rpmforge en Centos 6
wget rpm --import rpm -K rpmforge-release-0.5.3-1.el6.rf.*.rpm # Verifies the package rpm -i rpmforge-release-0.5.3-1.el6.rf.*.rpm
Una vez terminado con todos estos comandos pasamos a instalar todos los paquetes necesarios para poder compilar más adelante
yum install rpm-build perl yum-utils autoconf doxygen libtool automake gcc gcc-c++ make libxml2-devel libmcrypt-devel
Con esto tendremos todo lo necesario para el resto del manual.
Como instalar Apache 2.4 en Centos 6.x (6.4)
Primero antes de ponernos a instalar o compilar apache, tendremos que instalar las versiones de apr y apr-utils, ya que si no son superiores a la 1.4 no nos va a dejar instalar el apache. ¿Como se instala apr 1.5 y apr-utils 1.5 en centos? muy fácil, ejecutando los siguientes comandos:
cd /tmp wget rpmbuild -ts apr-1.4.6.tar.bz2 yum-builddep /root/rpmbuild/SRPMS/apr-1.4.6-1.src.rpm -y rpmbuild --rebuild --target `uname -m` ~/rpmbuild/SRPMS/apr-1.4.6-1.src.rpm yum localinstall ~/rpmbuild/RPMS/x86_64/apr-* wget rpmbuild -ts apr-util-1.5.2.tar.bz2 yum-builddep /root/rpmbuild/SRPMS/apr-util-1.5.2-1.src.rpm --enablerepo=epel rpmbuild --rebuild --target `uname -m` ~/rpmbuild/SRPMS/apr-util-1.5.2-1.src.rpm yum localinstall ~/rpmbuild/RPMS/x86_64/apr-util-*
Ahora instalamos algunas librerías que necesitaban estos paquetes y no podíamos instalar antes:
yum install pcre-devel pcre-static pcre lua-devel
Por último antes de la instalación de apache instalaremos la versión de distcache que toca:
wget https://www.vichaunter.org/wp-content/uploads/distcache-1.4.5-22.src.rpm rpmbuild --rebuild --target `uname -m` distcache-1.4.5-22.src.rpm yum localinstall ~/rpmbuild/RPMS/x86_64/distcache*
Y ahora por fín vamos a instalar apache 2.4 en centos:
wget rpmbuild -tb --target `uname -m` httpd-2.4.4.tar.bz2 yum localinstall ~/rpmbuild/RPMS/x86_64/httpd* yum localinstall ~/rpmbuild/RPMS/x86_64/mod_*
Estas son las versiones que he hecho funcionar bien, pero eres libre de revisar si hay alguna versión nueva y compilarla.
Por último, que aún no hemos acabado con apache, vamos a configurar algunas opciones para que luego no nos de problemas. Editaremos el httpd.conf:
nano /etc/httpd/conf/httpd.conf
Añadimos esto justo debajo de – ServerRoot «/usr»:
PidFile "/var/run/httpd.pid"
La siguiente ruta podemos variarla para que coincida con nuestras necesidades, la añadiremos al final del fichero httpd.conf. Es importante que no omitais esta línea ya que luego incluirá la configuración de apache para que interprete los archivos php:
Include /etc/httpd/conf.d/*.conf
Y por último vamos a descomentar unas cuantas líneas en la sección de módulos en el mismo archivo httpd.conf (en nano si haces ctrl+w te sale un buscador):
LoadModule deflate_module lib64/httpd/modules/mod_deflate.so LoadModule suexec_module lib64/httpd/modules/mod_suexec.so LoadModule vhost_alias_module lib64/httpd/modules/mod_vhost_alias.so LoadModule rewrite_module lib64/httpd/modules/mod_rewrite.so LoadModule alias_module lib64/httpd/modules/mod_alias.so
Aquí es un poco según las necesidades de cada uno. En un principio estas son las más genéricas y que todos usan, pero puedes habilitar los módulos que necesites.
Por último, para que no perdáis el tiempo y no penseis que el manual que he hecho está icompleto, habilitaremos la reescritura para que los archivos .htaccess funcionen. Tendremos que editar la configuración de apache httpd.conf y en las etiquetas <Directory «/var/www/html»> (o el dominio y carpeta que querais editar) y dejaremos la línea donde pone AllowOverride como la siguiente:
AllowOverride All
De esta forma funcionarán los .htaccess y no tendréis problemas.
La parte de permisos es un poco diferente a apache 2.2, ya que donde antes era
Order allow,deny Allow from all
ahora debemos poner
Require all granted
Pero sabiendo esto evitaremos tener que andar buscando en la documentación. Aparte de esto no he tenido que buscar nada más.
Un último detalle por si vas a utilizar solo una web, es cambiar el usuario con el que corre apache, editaremos el httpd.conf y donde dice user daemon y group daemon, cambiaremos daemon por el user y grupo que queramos. Al finalizar con la instalación de todo tendremos opcion para crear usuarios y grupos.
Como instalar PHP 5.5.0 en Centos 6.x (6.4)
La versión de php que he usado en esta ocasión es la 5.5.0, pero puedes instalar la que necesites simplemente descargándola de la página de php.net. Puede que te interese bajar la última. Primero preparamos librerías y soft necesario para php. Es recomendable ejecutar las líneas por separado en el orden que indico:
yum groupinstall "Development Tools" yum install libxml2-devel httpd-devel libXpm-devel gmp-devel libicu-devel t1lib-devel aspell-devel openssl-devel bzip2-devel libcurl-devel libjpeg-devel libvpx-devel libpng-devel freetype-devel readline-devel libtidy-devel libxslt-devel
Ahora que ya lo tenemos instalado, vamos a bajar el archivo de la página de php.net en ese mismo enlace que os he dejado podéis ver la última versión y conseguir la url de la descarga.
wget tar jxf php-5.5.0.tar.bz2 cd php-5.5.0/ ./configure --with-config-file-path=/etc --with-libdir=lib64 --with-layout=PHP --with-pear --with-apxs2 --enable-calendar --enable-bcmath --with-gmp --enable-exif --with-mcrypt --with-mhash --with-zlib --with-bz2 --enable-zip --enable-ftp --enable-mbstring --with-iconv --enable-intl --with-icu-dir=/usr --with-gettext --with-pspell --enable-sockets --with-openssl --with-curl --with-curlwrappers --with-gd --enable-gd-native-ttf --with-jpeg-dir=/usr --with-png-dir=/usr --with-zlib-dir=/usr --with-xpm-dir=/usr --with-vpx-dir=/usr --with-freetype-dir=/usr --with-t1lib=/usr --with-libxml-dir=/usr --with-mysql --with-mysqli --with-pdo-mysql --enable-soap --with-xmlrpc --with-xsl --with-tidy=/usr --with-readline --enable-pcntl --enable-sysvshm --enable-sysvmsg --enable-shmop --prefix=/usr/local make make install
Hay que tener en cuenta aquí también que tarda un ratito. Las opciones de configuración las podéis modificar, he dejado las que a mí me han ido mejor siempre, es decir, la configuración con la que he conseguido no tener ninguna deficiencia de librerías, ni tener que andar recompilando.
Una vez se termina de instalar, tenemos que copiar la configuración predeterminada a la carpeta que toca:
cp php.ini-production /etc/php.ini
y luego la vamos a editar para colocar los parámetros que nos faltan, y alguna configuración que si no la cambiamos hará que no os funcionen las cosas y os volvais locos. Tendréis que buscar cada línea y hacer que quede como la que os pongo (buscad la primera palabra de cada línea y listo, ctrl+w):
mysql.default_socket = /var/lib/mysql/mysql.sock mysqli.default_socket = /var/lib/mysql/mysql.sock pdo_mysql.default_socket = /var/lib/mysql/mysql.sock
habilitamos también los short tags <? para que no den errores los scripts
short_open_tag = On
Creamos el archivo en el directorio que hemos incluido antes en apache para que nos interprete las páginas en php:
echo -e "<FilesMatch \.php$>nSetHandler application/x-httpd-phpn</FilesMatch>" > /etc/httpd/conf.d/php.conf
Por la parte de php esto ha sido todo, si lo hemos hecho correctamente más adelante no tendremos ningún problema.
Como instalar MySQL 5.1.69 en Centos 6.x (6.4)
Ahora le toca la parte al servidor de bases de datos, que aunque parezca mentira va a ser el más fácil, por estar disponible sobre los repositorios para yum. Para instalar MySQL simplemente tenemos que ejecutar lo siguiente:
yum install mysql-server service mysqld start mysql_secure_installation
Con el tercer comando conseguiremos que nos aparezca un menú para configurar mysql y ponerle contraseña para administrador, de esta forma tendremos opción a entrar como root a cualquier base de datos y crear usuarios, permisos etc.
Como instalar Webmin 1.630 en Centos 6
Esto no es más que un gestor de servidor gratuito, es decir, lo que vendría siendo un Plesk o un CPanel, pero sin un coste mensual, aunque no es tan intuitivo como estos otros. Al principio puede parecer un poco confuso, pero con el uso te acabas acostumbrando y te das cuenta que es igual o más potente que las otras soluciones de pago. Existe también uno llamado ISPConfig 3, pero yo me decanto más por este. Por supuesto su instalación es totalmente opcional:
Primero pondremos el repositorio de webmin para yum (pega todo el código en la consola tal cual aunque sean varias líneas):
cat > /etc/yum.repos.d/webmin.repo << EOF [Webmin] name=Webmin Distribution Neutral #baseurl=http://download.webmin.com/download/yum mirrorlist=http://download.webmin.com/download/yum/mirrorlist enabled=1 EOF
Ahora instalaremos el panel:
rpm --import http://www.webmin.com/jcameron-key.asc yum update yum install webmin
Ya lo tenemos instalado y en cuanto terminemos de configurar el servidor podremos acceder a el desde el navegador.
Rematando la instalación
Ahora que ya lo tenemos todo terminado de instalar, nos faltan pequeños remates con los que evitaremos volvernos locos más adelante, cuando veamos que nada nos funciona como debería o tenemos fallos.
Lo primero será programar apache y mysql para que se ejecuten en el arranque, así cada vez que se inicie el sistema se ejecutarán automáticamente:
chkconfig --level 235 httpd on chkconfig --level 235 mysqld on
Así evitamos que si se nos reinicia el servidor o lo apagamos y encendemos y nos olvidamos de ejecutar algún servicio, este no esté disponible.
Centos lleva de forma predeterminada iptables instalado, que es el firewall por defecto. Para que las webs y otros servicios como el webmin estén accesibles, tenemos que abrir algunos puertos. En este caso editaremos el archivo de configuración de iptables:
nano /etc/sysconfig/iptables
y después añadiremos al archivo las siguientes líneas:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 10000 -j ACCEPT
La línea para el puerto 3306 es necesaria solo en caso de que queramos acceder a mysql de forma remota con algún programa. Yo suelo poner estas líneas debajo de la que marca el puerto 22 que es el ssh, para tenerlo todo ordenado.
No nos debemos olvidar de reiniciar el iptables para que coja la nueva configuración
service iptables restart
Por último, una cosa que puede que te salve, o puede que no te sirva para nada, es el dar mas permisos en selinux para que httpd pueda trabajar a otro nivel sobre los archivos htpasswd:
semanage permissive -a httpd_t
Si por cualquier motivo nos suelta el error de semanage command not found, tendremos que ejecutar la siguiente línea primero:
yum -y install policycoreutils-python
Y con esto quedaría concluída la instalación de nuestro LAMP con las opciones que queríamos.
Yo no soy partidario de deshabilitar selinux, pero si por lo que sea te está dando problemas y quieres deshabilitarlo (o simplemente por que es bastante restrictivo) puedes desactivarlo con el siguiente comando OPCIONAL:
Editamos con nano el archivo de configuración
/etc/selinux/config
Y dejamos el contenido tal y como en el siguiente código:
# This file controls the state of SELinux on the system. # SELINUX= can take one of these three values: # enforcing - SELinux security policy is enforced. # permissive - SELinux prints warnings instead of enforcing. # disabled - No SELinux policy is loaded. SELINUX=disabled # SELINUXTYPE= can take one of these two values: # targeted - Only targeted network daemons are protected. # strict - Full SELinux protection. SELINUXTYPE=targeted
Donde hemos puesto disabled es lo único que necesitas cambiar, en caso de que no lo quieras desactivar pero quieras que sea menos restrictivo en lugar de disabled pones permissive y listo. Repito, no apoyo desactivarlo a no ser que te de problemas.
Espero que esto haya servido de ayuda, y si es así te invito a que hagas un like y un follow en las redes sociales que quieras, los botones están por la página.
Cualquier duda, pregunta, sugerencia a los comentarios y estaré encantado de ayudar.