Compilar Apache desde código fuente. El servidor HTTP Apache es uno de los mas conocidos y usados que existen en la red, es opensource y destaca por ser un servidor web multiplataforma. Esta publicado bajo los términos de Apache License 2.0. Apache es desarrollado y mantenido por una comunidad abierta de desarrolladores bajo el auspicio de la Apache Software Foundation.
En este articulo aprenderemos como compilar Apache 2.4 desde su código fuente, es una operación sencilla y nos permite una posterior personalización. También podemos donde y como se instala.
Para el ejemplo usaremos CentOS.
Compilar Apache
Instalamos las dependencias requeridas.
1 | yum install -y wget pcre-devel openssl openssl-devel expat-devel |
Miramos la pagina oficial y nos aseguramos de la ultima versión lanzada.
En este caso la ultima versión estable es la 2.4.29.
La descargamos.
1 | wget -O /usr/src/httpd-2.4.29.tar.gz http://apache.ip-connect.vn.ua//httpd/httpd-2.4.29.tar.gz |
Cambiamos de directorio y descomprimimos.
1 2 3 | cd /usr/src tar xfvz httpd-2.4.29.tar.gz |
1 | cd httpd-2.4.29 |
La compilación que vamos a realizar requiere apr y apr-util en el directorio srclib.
1 2 3 4 5 | cd ./srclib wget wget |
Los descomprimimos y modificamos sus nombres.
1 2 3 | tar xfvz apr-1.5.2.tar.gz; mv apr-1.5.2 apr tar xfvz apr-util-1.5.4.tar.gz; mv apr-util-1.5.4 apr-util |
Configuramos Apache
Nos movemos al principal.
1 | cd ../ |
Con «help», podemos ver las opciones de configuración, por si quieres hacer alguna modificación.
1 | ./configure --help |
ejemplo de salida:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | ./configure \ --enable-layout=RedHat \ --prefix=/usr \ --enable-expires \ --enable-headers \ --enable-rewrite \ --enable-cache \ --enable-mem-cache \ --enable-speling \ --enable-usertrack \ --enable-module=so \ --enable-unique_id \ --enable-logio \ --enable-ssl=shared \ --with-ssl=/usr \ --enable-proxy=shared \ --with-included-apr |
Continuamos con make.
1 | make |
Instalamos.
1 | make install |
En este momento ya tenemos apache instalado, ahora vamos con los servicios.
Configurar los servicios de inicio
Centos 7:
Creamos el archivo de inicio systemd.
1 | nano /etc/systemd/system/httpd.service |
Y le agregamos lo siguiente:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | [Unit] Description=The Apache HTTP Server [Service] Type=forking PIDFile=/var/apache/httpd.pid ExecStart=/usr/sbin/apachectl start ExecReload=/usr/sbin/apachectl graceful ExecStop=/usr/sbin/apachectl stop KillSignal=SIGCONT PrivateTmp=true [Install] WantedBy=multi-user.target |
Guardamos, cerramos y activamos el inicio en el arranque del sistema.
1 | systemctl enable httpd |
Iniciamos.
1 | systemctl start httpd |
Si usas Centos 6, sería:
1 2 3 4 5 | chkconfig --add httpd chkconfig httpd on service httpd start |
Ya lo tenemos instalado y en marcha.
Comprobaciones
Al introducir en tu navegador web…
1 | http://IP-del-SERVER |
veras una pagina similar a esta:
También puedes verificar que apache funciona correctamente, con:
1 | ps aux|grep httpd |
Si quieres ver los módulos compilados,usa:
1 | httpd -M |
ejemplo de salida…
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | Loaded Modules: core_module (static) authn_file_module (static) authn_default_module (static) authz_host_module (static) authz_groupfile_module (static) authz_user_module (static) authz_default_module (static) auth_basic_module (static) cache_module (static) mem_cache_module (static) include_module (static) filter_module (static) log_config_module (static) logio_module (static) env_module (static) expires_module (static) headers_module (static) usertrack_module (static) .................. .................. |
El archivo de configuración lo tienes en:
1 | /etc/httpd/conf/httpd.conf |
Si quieres habilitar el SSL en httpd.conf, debes descomentar…
1 | LoadModule ssl_module modules/mod_ssl.so |
Y agregar el puerto ssl.
1 | Listen 443 |
Recuerda que cada modificación que realices, debes reiniciar reiniciar el servicio.