Compilación e instalación de Apache HTTPD desde el código fuente
La mayoría de las distribuciones de Linux proporcionan una versión específica de los paquetes binarios Apache HTTPD desde sus repositorios principales. La desventaja es que esta versión a menudo no se actualiza hasta el lanzamiento principal de la siguiente distribución.
Para aprovechar las características disponibles solo a partir de una versión más reciente o para crear binarios personalizados, la compilación e instalación de Apache HTTPD a partir del código fuente es sencilla.
Este tutorial describe los pasos de compilación e instalación de Apache HTTPD en distribuciones Linux basadas en RPM (Fedora, CentOS, De) y basadas en Deb (Debian, Ubuntu, Ubuntu). La última versión disponible (2.4.x).
Código fuente HTTPD de Apache
El directorio /usr/local/src/ se usa generalmente para actividades relacionadas con la compilación (requiere privilegios de root). Se utiliza en este tutorial como el directorio de compilación.
El código fuente de Apache HTTPD está disponible como un archivo tar desde: http://httpd.apache.org/download.cgi.
Los siguientes son los pasos para descargar y extraer el código fuente en el directorio de compilación (los números de versión se pueden cambiar según sea necesario):
cd /usr/local/src/wget https://downloads.apache.org//httpd/httpd-2.4.43.tar.gztar -xzf httpd-2.4.43.tar.gzls -lcd httpd-2.4.43pwdls
Instalación de dependencias de compilación
La compilación de Apache HTTPD requiere la instalación de las herramientas de desarrollo (compilador de C, enlazador, lin) y algunas bibliotecas adicionales.
Las bibliotecas requeridas son:
- apr
- apr-util
- openssl
- expatriados
- prce
la Mayoría de las distribuciones de Linux proporcionan estas bibliotecas desde los repositorios oficiales. Si el sistema incluye una versión antigua de una biblioteca, su código fuente puede descargarse y compilarse por separado. Una sección posterior presenta cómo descargar y construir el código fuente de las bibliotecas apr y apr-util como parte del proceso de compilación de Apache HTTPD.
En distribuciones Linux basadas en RPM (Fedora, Centos, Linux), los paquetes de desarrollo de bibliotecas se pueden instalar utilizando los siguientes comandos:
yum group install developmentyum install openssl-devel expat-devel pcre-devel apr-devel apr-util-devel
En distribuciones Linux basadas en Deb (Debian, Ubuntu, Ubuntu), los paquetes de desarrollo de bibliotecas se pueden instalar utilizando el siguiente comando:
apt install build-essential libssl-dev libexpat-dev libpcre2-dev libapr1-dev libaprutil1-dev
Opciones de configuración de compilación
Después de la descarga del código fuente Apache HTTPD y la instalación de las dependencias de compilación, se pueden establecer las opciones de configuración de compilación (opciones del compilador, directorio de instalación, habilitar/deshabilitar módulos,)).
Debido a que Apache HTTPD utiliza el sistema de compilación Autoconf, proporciona un script llamado configure para establecer las opciones de configuración de compilación y generar los archivos Makefile.
A menos que se necesiten algunos ajustes, los valores predeterminados se pueden mantener. El valor predeterminado es compilar la mayoría de los módulos y establecer el directorio de instalación en /usr / local / apache2/.
Para usar los valores predeterminados, se llama al script configure sin argumentos:
cd /usr/local/src/httpd-2.4.43./configure
Para enumerar todas las opciones posibles, se llama al script configure con el argumento-help:
cd /usr/local/src/httpd-2.4.43./configure --help
Las siguientes secciones presentan algunas opciones de configuración de compilación útiles.
Directorio de instalación: – Opción de prefijo
El directorio de instalación es diferente del directorio de compilación. Es donde se colocarán los binarios y archivos de configuración resultantes una vez que la compilación tenga éxito y se ejecute el comando make install (presentado en la sección de instalación).
La opción-prefijo se utiliza para seleccionar una ruta de instalación diferente. Esta opción es útil si necesitamos compilar e instalar diferentes versiones de Apache HTTPD.
El siguiente ejemplo muestra cómo establecer el directorio de instalación en/opt / apache-2.4.43/:
cd /usr/local/src/httpd-2.4.43./configure --prefix=/opt/apache-2.4.43/
Cómo activar / desactivar un módulo: –enable-MODULE / -disable-MODULE
La mayoría de los módulos HTTPD de Apache están construidos por defecto como bibliotecas dinámicas. La opción-enable-MODULE se puede usar para habilitar un módulo o cambiar su tipo de compilación de dinámico a estático. La opción-disable-MODULE se usa para deshabilitar la creación de un módulo. El MÓDULO se sustituye por el nombre real del módulo.
Se muestra el siguiente ejemplo para compilar la reescritura del módulo como una biblioteca estática:
cd /usr/local/src/httpd-2.4.43./configure --enable-rewrite=static
Opciones del compilador
Cuando es necesario, las opciones del compilador se pasan al script de configuración como variables de entorno.
Las variables se resumen en la siguiente tabla:
CC | Se utiliza para seleccionar el comando compilador de C. El valor predeterminado es cc (el compilador GNU), pero clang también es una opción |
CFLAGS | Utilizados para pasar banderas del compilador de C |
LDFLAGS | Utilizados para pasar banderas de enlace |
LIBS | Se utiliza para pasar bibliotecas al enlazador |
CPPFLAGS | Utilizados para pasar indicadores de preprocesador C/C++ (Objetivo) |
CPP | Se utiliza para pasar parámetros del preprocesador C |
El siguiente ejemplo muestra cómo pasar un indicador de optimización al compilador de C:
cd /usr/local/src/httpd-2.4.43export CFLAGS=-o2./configure
Compilación e instalación
Después de la ejecución del script configure para establecer las opciones de configuración de compilación y generar los archivos Makefile, el proceso de compilación se inicia con el comando make.
El siguiente ejemplo muestra cómo iniciar el proceso de compilación:
cd /usr/local/src/httpd-2.4.43./configuremake
Después de que la compilación tenga éxito, la instalación en el directorio de instalación se puede iniciar con el siguiente comando:
make install
La instalación coloca todos los archivos binarios y de configuración necesarios en el directorio de instalación /usr/local/apache2. Los archivos ejecutables se colocan en / usr / local/apache2/bin/. Los archivos de configuración se colocan en / usr / local/apache2/conf/.
Cómo listar los módulos compilados
Los módulos compilados se pueden listar usando el siguiente comando:
/usr/local/apache2/bin/httpd -M
Iniciar y detener el servicio
La nueva compilación de Apache HTTPD puede iniciarse utilizando el comando / usr / local/apache2/bin / apachectl.
Para iniciar el servicio:
/usr/local/apache2/bin/apachectl start
Para detener el servicio:
/usr/local/apache2/bin/apachectl stop
Compilar apr y apr-util a partir del código fuente
Las bibliotecas necesarias para la compilación de Apache HTTPD pueden instalarse desde los repositorios principales de la distribución Linux, pero en algunas situaciones, Apache HTTPD requiere una versión más reciente de una biblioteca que no está disponible en estos repositorios. En este caso, el código fuente de la biblioteca también se puede descargar y compilar junto con Apache HTTPD.
Las bibliotecas apr y apr-util son dos de las bibliotecas principales en las que Apache HTTPD se basa para su trabajo interno para garantizar la portabilidad en muchos sistemas operativos.
El código fuente de Apache HTTPD incluye un subdirectorio que se llama srclib. Se utiliza para almacenar las bibliotecas que pueden ser construidas y utilizadas por el servidor en lugar de utilizar las bibliotecas del sistema.
Para integrar el código fuente de las bibliotecas apr y apr-util como parte del proceso de compilación de Apache HTTPD, su código fuente se descarga y extrae dentro del subdirectorio srclib.
El siguiente ejemplo muestra cómo descargar y extraer el código fuente de las dos bibliotecas apr y apr-util. Cuando se extrae el archivo tar, se debe eliminar el número de versión.Están disponibles para su descarga en el sitio web oficial: https://apr.apache.org/download.cgi.
cd /usr/local/src/httpd-2.4.43/srclib/wget https://downloads.apache.org/apr/apr-1.7.0.tar.gztar -xzf apr-1.7.0.tar.gzmv apr-1.7.0 aprlswget https://downloads.apache.org/apr/apr-util-1.6.1.tar.gztar -xzf apr-util-1.6.1.tar.gzmv apr-util-1.6.1 apr-utillscd /usr/local/src/httpd-2.4.43./configuremakemake install
Cómo actualizar desde la versión 2.x a 2.y
La actualización de un Apache HTTPD instalado desde el código fuente es posible. La práctica recomendada es utilizar un directorio de instalación separado para cada versión y copiar el subdirectorio de configuración de la versión anterior al directorio nuevo.
El siguiente ejemplo muestra cómo actualizar una versión 2.4.0 ya instalada que está instalada en /usr/local/apache-2.4.0, a una versión 2.4.43 más reciente que se instalará en /usr/local/apache-2.4.43.
Para descargar, compilar e instalar la nueva versión:
cd /usr/local/src/wget https://downloads.apache.org//httpd/httpd-2.4.43.tar.gztar -xzf httpd-2.4.43.tar.gzcd httpd-2.4.43./configure --prefix=/usr/local/apache-2.4.43makemake install
Detener el servicio de la versión anterior:
/usr/local/apache-2.4.0/bin/apachectl stop
Copie el directorio de configuración del directorio de la versión anterior al directorio de la nueva versión:
rm -rf /usr/local/apache-2.4.43/conf/cp -rp /usr/local/apache-2.4.0/conf/ /usr/local/apache-2.4.43/
Inicie el servicio desde la nueva versión:
/usr/local/apache-2.4.43/bin/apachectl start