Instalar apache 2.4 en Centos 6

A tener en cuenta, es necesaria la instalación de algunas dependencias que no tenemos por defecto en un entorno centos 6 “virgen”
wget http://www.trieuvan.com/apache//apr/apr-1.4.6.tar.bz2
rpmbuild -ts apr-1.4.6.tar.bz2
su -c "yum-builddep rpmbuild/SRPMS/apr-1.4.6-1.src.rpm -y"
rpmbuild --rebuild --target `uname -m` ~/rpmbuild/SRPMS/apr-1.4.6-1.src.rpm
su -c "yum localinstall rpmbuild/RPMS/i686/apr*"


wget http://mirror.atlanticmetro.net/apache//apr/apr-util-1.4.1.tar.bz2
rpmbuild -ts apr-util-1.4.1.tar.bz2
su -c "yum-builddep rpmbuild/SRPMS/apr-util-1.4.1-1.src.rpm --enablerepo=epel"
rpmbuild --rebuild --target `uname -m` ~/rpmbuild/SRPMS/apr-util-1.4.1-1.src.rpm
su -c "yum localinstall rpmbuild/RPMS/i686/apr-util-*"

yum install pcre-devel pcre-static pcre lua-devel
Aquí está el detalle.
Apache 2.4 requiere para su compilación distcache devel, esto para compilar el módulo socache (mod_socache_dc) que está por defecto en su spec, sin embargo en redhat se eliminó el soporte para discache en la versión 2.2.14-2 de httpd (hace mucho tiempo!), así que como el spec que se genera por defecto lo va a requerir, tienes 2 opciones, generar el srpm (rpmbuild -ts httpd-2.4.1.tar.bz2) y editar el spec para compilar sin soporte a distcache o descargarlo y compilarlo.
Yo opté por compilarlo:
wget http://dl.fedoraproject.org/pub/fedora/linux/releases/16/Everything/source/SRPMS/distcache-1.4.5-22.src.rpm
rpmbuild --rebuild --target `uname -m` distcache-1.4.5-22.src.rpm
su -c "yum localinstall rpmbuild/RPMS/i686/distcache*"
wget http://apache.petsads.us//httpd/httpd-2.4.1.tar.bz2
rpmbuild -tb --target `uname -m` httpd-2.4.1.tar.bz2
su -c "yum localinstall rpmbuild/RPMS/i686/httpd*"
su -c "yum localinstall rpmbuild/RPMS/noarch/httpd-manual-2.4.1-1.noarch.rpm"
su -c "yum localinstall rpmbuild/RPMS/i686/mod_*"

Desventaja: los mpm se compilan por defecto como módulos y no de forma estática, lo que lleva lógicamente a una gran flexibilidad y posibilidades de administración (una ventaja en si mismo), pero también un probable mayor consumo de recursos al ejecutarse, usualmente imperceptible (en condiciones normales), pero afecta el rendimiento con altos volúmenes de visita.
*****************************************
15-03-2012 -> Update:
Tuve un inconveniente con el script de arranque de apache, sucede que no funcionaba apropiadamente, apache no se detenía (service httpd stop), el fallo estaba en que el pidfile de la configuración del script (/etc/init.d/httpd) no apuntaba al lugar correcto, lo hacía a: /var/log/httpd/httpd.pid en lugar de /var/run/httpd.pid, fue solo cambiar la línea
pidfile=${PIDFILE-/var/log/httpd/${prog}.pid} por:
pidfile=${PIDFILE-/var/run/${prog}.pid}
*****************************************
16-03-2012 Update
Instalando php en Centos 6 con apache 2.4 (httpd 2.4)
wget http://vault.centos.org/6.2/updates/Source/SPackages/php-5.3.3-3.el6_2.6.src.rpm
su -c "yum-builddep php-5.3.3-3.el6_2.6.src.rpm"
su -c "ln -s /usr/bin/apxs /usr/sbin/apxs"
rpmbuild --rebuild --target `uname -m` php-5.3.3-3.el6_2.6.src.rpm
cd ~/rpmbuild/RPMS/i686/
su -c "yum localinstall php*"

*****************************************
12-04-2012 Update
Instalando php extras (php-mcrypt) en Centos 6 con apache 2.4 (httpd 2.4)
/* dependencias: mcrypt */
wget http://dl.fedoraproject.org/pub/epel/6/SRPMS/libmcrypt-2.5.8-9.el6.src.rpm
su -c "yum-builddep libmcrypt-2.5.8-9.el6.src.rpm"
rpmbuild --rebuild --target `uname -m` libmcrypt-2.5.8-9.el6.src.rpm
cd ~/rpmbuild/RPMS/i686/
su -c "yum localinstall libmcrypt*"

/* dependencias: firebird */
wget http://dl.fedoraproject.org/pub/epel/6/SRPMS/firebird-2.5.1.26351.0-1.el6.src.rpm
su -c "yum-builddep firebird-2.5.1.26351.0-1.el6.src.rpm"
rpmbuild --rebuild --target `uname -m` firebird-2.5.1.26351.0-1.el6.src.rpm
cd ~/rpmbuild/RPMS/i686/
su -c "yum localinstall firebird-libfbclient-2.5.1.26351.0-1.el6.i686.rpm"
su -c "yum localinstall firebird-libfbembed-2.5.1.26351.0-1.el6.i686.rpm"
su -c "yum localinstall firebird-devel-2.5.1.26351.0-1.el6.i686.rpm"

/* php-mcrypt */
wget http://dl.fedoraproject.org/pub/epel/6/SRPMS/php-extras-5.3.3-1.el6.src.rpm
su -c "yum-builddep php-extras-5.3.3-1.el6.src.rpm"
rpmbuild --rebuild --target `uname -m` php-extras-5.3.3-1.el6.src.rpm
cd ~/rpmbuild/RPMS/i686/
su -c "yum localinstall php-mcrypt-5.3.3-1.el6.i686.rpm"
# php-interbase php-mssql php-tidy son opcionales, depende de tus requerimientos.

*****************************************
12-04-2012 Update
Instalando php PEAR (PHP Extension and Application Repository) en Centos 6 con apache 2.4 (httpd 2.4)
wget http://vault.centos.org/6.2/os/Source/SPackages/php-pear-1.9.4-4.el6.src.rpm
su -c "yum-builddep php-pear-1.9.4-4.el6.src.rpm"
rpmbuild --rebuild --target `uname -m` php-pear-1.9.4-4.el6.src.rpm
cd ~/rpmbuild/RPMS/noarch
su -c "yum localinstall php-pear-1.9.4-4.el6.noarch.rpm"

*****************************************
12-04-2012 Update
Instalando php memcache en Centos 6 con apache 2.4 (httpd 2.4)
(manual de instalación de memcached: emeraldpost.net)
wget http://memcached.googlecode.com/files/memcached-1.4.13.tar.gz
rpmbuild -ts memcached-1.4.13.tar.gz
su -c "yum-builddep ~/rpmbuild/SRPMS/memcached-1.4.13-1.el6.src.rpm"
rpmbuild --rebuild --target `uname -m` ~/rpmbuild/SRPMS/memcached-1.4.13-1.el6.src.rpm
cd ~/rpmbuild/RPMS/i686/
su -c "yum localinstall memcached-1.4.13-1.el6.i686.rpm"

wget http://vault.centos.org/6.2/os/Source/SPackages/php-pecl-memcache-3.0.5-3.el6.src.rpm
rpmbuild --rebuild --target `uname -m` php-pecl-memcache-3.0.5-3.el6.src.rpm
cd ~/rpmbuild/RPMS/i686/
su -c "yum localinstall php-pecl-memcache-3.0.5-3.el6.i686.rpm"

8 respuesta a “Instalar apache 2.4 en Centos 6”

  1. Hola!
    Muy buen post, he instalado apache siguiendo tus pasos y ha funcionado perfectamente, el único problema me surge a la hora de incorporarle php desde algun repo no oficial (el de remi-test) a ver si pierdo un poco de tiempo y genero unos rpms de php 5.4 compatibles con centos 6 para completar tu manual 😉

  2. Hola Raúl,
    Sí, todo módulo será necesario compilarlo previamente para que funcione, pero no será gran cosa, usualmente make, make install (o lo que diga el readme).
    Genial lo de poner un how to para PHP, avisame de la URL cuando lo tengas.

  3. Excelente post, lo malo es que si bien me funcionó, igual no pude actualizar, ya que el sistema me reclamó que otros paquetes, como php, mod_perl, mod_authz_ldap y mod_python, que necesito, requieren del apache anterior y no son compatibles con el 2.4 a menos que comience a compilar c/u de ellos y no es la idea,, Sabes de alguna forma cómo subsanar este problema?

  4. Hola Ernesto Miranda,
    Efectivamente y como es de esperar, es necesario compilar cada módulo que requieras correr sobre apache 2.4, como yo lo veo es apenas una molestia menor con las ventajas que se obtienen de tener apache 2.4, sobre todo ahora que el MPM Event pasa a ser estable, así también mejoras en el rendimiento y respuestas que al menos en mis pruebas han llegado hasta un 300%. Además deberás tener consideraciones especiales con los archivos de configuración, pues algunas cosas han cambiado y otras han sido marcadas como deprecated.
    Más información:
    http://httpd.apache.org/docs/trunk/upgrading.html

  5. Hola
    a mi en CentOS 6.2 me da un error algo raro
    Checking for unpackaged file(s): /usr/lib/rpm/check-files /rpmbuild/BUILDROOT/httpd-2.4.2-1.x86_64
    error: Installed (but unpackaged) file(s) found:
    /usr/share/man/man8/fcgistarter.8.gz
    ¿tenéis idea que puede ser?
    Saludos

  6. Hola a todos
    estoy peleando con esta instalación, basándome en vuestros apuntes y me surgen varios problemas, no se si a vosotros también
    – no hay fichero /etc/sysconfig/httpd (aunque desde el init.d se le llama)
    – cuando queremos cargar el modulo LoadModule php5_module /etc/httpd/lib64/httpd/modules/libphp5.so
    PHP no funciona correctamente, ya que, por defecto Apache 2.4 escoge el modo worker y no el prefork
    Cuando cargo este módulo y no el zts de php, veo fallos en el inicio de php a través del log de errores de apache
    ….
    PHP Warning: PHP Startup: Unable to load dynamic library ‘/usr/lib64/php/modules/xsl.so’ – /usr/lib64/php/modules/xsl.so: undefined symbol: executor_globals in Unknown on line 0
    PHP Warning: PHP Startup: Unable to load dynamic library ‘/usr/lib64/php/modules/zip.so’ – /usr/lib64/php/modules/zip.so: undefined symbol: executor_globals in Unknown on line 0
    ….
    el extension_dir de php es correcto, el tema es porque apache inicia en modo worker y no en prefork ¿cómo lo podemos cambiar? ¿creando el fichero sysconfig/httpd?¿y porque no se crea en la instalación?
    Saludos 🙂

  7. Hola @RubenDOB
    En realidad debes cambiar un par de parámetros en el spec para que compile independientemente cada MPM, así lo elegirías desde /etc/sysconfig/httpd
    agregando por ej. HTTPD=/usr/sbin/httpd.worker ó HTTPD=/usr/sbin/httpd.event ó etc, “pero” como lo mencionaba en el post, los mpm se compilan como módulos y no de forma estática, así que es solo comentarear el módulo del mpm que no quieres y descomentarear la línea que llama al mpm que deseas usar en el archivo de configuración de apache.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *