Cómo compilar Apache Server en Ubuntu 18.04
|En este tutorial quiero mostrar el procedimiento para compilar una versión específica de Apache Server, claro que en los repositorios de todo sistema operativo GNU/Linux podemos encontrar ya el paquete listo para instalar, ¿entonces porqué compilarlo? la respuesta es: ¿y porqué no? No esta demás saber como, quién sabe cuando sea útil un día.
Este será un tutorial de 3 partes, la primera es compilar Apache, la segunda será compilar una versión de php que funcione como un módulo y la tercera es compilar una segunda versión de php en modo FastCGI.
NOTA: Si no tenes intención de utilizar una segunda versión de php en modo FastCGI te podes saltar esas instrucciones.
Del siguiente enlace podemos descargar el paquete de Apache, yo en este tutorial voy a utilizar la versión 2.4.29, cuando veamos un comando donde utilice esa versión solo la debes sustituir por la que vos vayas a utilizar.
PREPARACIÓN DEL SISTEMA OPERATIVO
Primero instalamos algunas herramientas de compilación necesarias para el procedimiento, ejecutamos el siguiente comando en la terminal:
1 2 |
sudo apt-get install build-essential module-assistant sudo m-a prepare |
COMPILACIÓN
1. Para ver ordenados vamos a crear una carpeta "www" dentro de /opt, y dentro de www creamos una carpeta con nombre: "tmp"
1 2 3 |
sudo mkdir /opt/www sudo mkdir /opt/www/tmp sudo chmod 777 /opt/www/tmp |
2. Instalar por anticipado los requerimientos de compilación:
1 |
sudo apt-get install autoconf libtool libpcre3-dev libexpat1-dev zlib1g-dev libssl-dev libtool-bin |
3. Descomprimir el contenido httpd-2.4.29.tar.gz con el siguiente comando:
1 |
tar -xzvf httpd-2.4.29.tar.gz |
[Si no vas a utilizar FastCGI saltar al paso 6]
4. Para habilitar FastCGI en Apache primero descargar mod_fcgi 2.3.9 de esta dirección:
http://www-eu.apache.org/dist//httpd/mod_fcgid/mod_fcgid-2.3.9.tar.gz
5. Descomprimir mod_fcgid-2.3.9.tar.gz con el comando:
1 |
tar -xzvf mod_fcgid-2.3.9.tar.gz |
Dentro de la carpeta mod_fcgid-x.x.x/modules copiar la carpeta fcgid a la carpeta modules de la carpeta httpd-x.x.x
1 |
cp -avr mod_fcgid-2.3.9/modules/fcgid /home/hugo/comp/apache/httpd-2.4.29/modules |
6. Descargaremos las librerías APR de Apache de los siguiente enlaces: apr-1.6.3.tar.gz y apr-util-1.6.1.tar.gz. Descomprimimos y renombramos las carpetas apr-x y apr-util-x quitando el numero de la versión. Copiar las dos carpetas a httpd-x.x.x/srclib.
1 2 3 4 5 6 |
tar -xzvf apr-1.6.3.tar.gz tar -xzvf apr-util-1.6.1.tar.gz mv apr-1.6.3 apr mv apr-util-1.6.1 apr-util cp -avr apr /home/hugo/comp/apache/httpd-2.4.29/srclib cp -avr apr-util /home/hugo/comp/apache/httpd-2.4.29/srclib |
7. Dentro de la carpeta httpd-x.x.x ejecutar el siguiente comando para que incluya los componentes que acabamos de copiar:
1 2 |
cd /home/hugo/comp/apache/httpd-2.4.29 ./buildconf |
8. Ejecutar el comando configure:
1 |
./configure --prefix=/opt/www/apache --enable-modules=all --enable-mods-shared=all --enable-alias --enable-auth-basic --enable-headers --enable-info --enable-cache --enable-cache-disk --enable-proxy --enable-proxy-ajp --enable-rewrite --enable-socache-shmcb --enable-ssl --enable-status --enable-expires --enable-deflate --enable-proxy-fcgi --enable-fcgid --enable-so --with-included-apr --with-included-apr-util |
--prefix es la ruta donde se realizará la instalación de los componentes del servidor web. En este comando habilitamos los componentes necesarios para el funcionamiento y el parámetro --enable-fcgid no es necesario si no vas a utilizar FastCGI.
9. Ejecutar los siguiente comandos para realizar la instalación de Apache:
1 2 |
make sudo make install |
10. Comandos para manipular Apache:
1 2 3 |
sudo /opt/www/apache/bin/httpd -k start sudo /opt/www/apache/bin/httpd -k stop sudo /opt/www/apache/bin/httpd -k restart |
11. Editar el archivo de configuración /opt/www/apache/conf/httpd.conf:
- Asegurarse de descomentar los siguientes módulos quitando el símbolo numeral (#):
1 2 3 4 5 6 7 8 9 10 11 |
mod_fcgid.so --> Debe aparecer solo para los interesados en usar fcgi, de no ser así volver al paso 4. solo verificar que exista, pero no descomentarlo todavía. mod_info.so mod_cache.so mod_cache_disk.so mod_proxy.so mod_proxy_ajp.so mod_proxy_fcgi.so --> Solo para fcgi mod_rewrite.so mod_socache_shmcb.so mod_expires.so mod_deflate.so |
- Descomentar ServerName y asignar el valor localhost:80
- Modificar <Directory "/opt/www/apache/htdocs"> para que quede como:
- 'Options Indexes FollowSymLinks' cambiar a 'Options Indexes FollowSymLinks Includes ExecCGI'
- 'AllowOverride None' cambiar a 'AllowOverride All'
- Modificar DirectoryIndex index.html para que quede con el siguiente contenido:
DirectoryIndex index.html index.php
- Copiar el siguiente contenido al final del archivo:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
# Habilita compresion de contenido <IfModule mod_deflate.c> <filesMatch "\.(js|css|html|php)$"> SetOutputFilter DEFLATE BrowserMatch ^Mozilla/4 gzip-only-text/html BrowserMatch ^Mozilla/4\.0[678] no-gzip BrowserMatch \bMSIE !no-gzip !gzip-only-text/html BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html </filesMatch> </IfModule> # Habilita expiracion de contenido # Se puede comentar aquellas opciones que no se deseen utilizar # o modificar los tiempos de este ejemplo <IfModule mod_expires.c> ExpiresActive On ExpiresDefault "access plus 10 days" ExpiresByType text/css "access plus 1 week" ExpiresByType text/plain "access plus 1 month" ExpiresByType image/gif "access plus 1 month" ExpiresByType image/png "access plus 1 month" ExpiresByType image/jpeg "access plus 1 month" ExpiresByType application/x-javascript "access plus 1 week" ExpiresByType application/javascript "access plus 1 week" ExpiresByType application/x-icon "access plus 1 year" </IfModule> |
- Guardar los cambios y salir.
12. Reiniciar Apache y verificar que la página "It works" se logre visualizar en http://localhost
CONFIGURAR APACHE PARA QUE INICIE COMO SERVICIO
1. Con permisos de administrador vamos a crear el archivo /etc/systemd/system/httpd.service con el siguiente contenido:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
[Unit] Description=The Apache HTTP Server After=network.target [Service] Type=forking ExecStart=/opt/www/apache/bin/apachectl -k start ExecReload=/opt/www/apache/bin/apachectl -k graceful ExecStop=/opt/www/apache/bin/apachectl -k graceful-stop PIDFile=/opt/www/apache/logs/httpd.pid PrivateTmp=true [Install] WantedBy=multi-user.target |
Recuerden utilizar sus rutas si no utilizan las de este ejemplo. Guardar y cerrar el documento.
2. Ejecutar los siguientes comandos en la consola:
1 2 3 |
sudo systemctl daemon-reload sudo systemctl start httpd sudo systemctl enable httpd |
3. Comandos adicionales:
1 2 3 4 |
sudo systemctl stop httpd sudo systemctl start httpd sudo systemctl restart httpd sudo systemctl status httpd |
El siguiente tutorial será cómo compilar un versión de php como módulo.