# Compilar e Instalar

Éste documento hace referencia a la compilación y la instalación del Apache HTTP Server sólo para los sistemas Unix y tipo Unix. Para la compilación e instalación en Windows ir a Usando Apache HTTP Server con Microsoft Windows y Compilando Apache para Microsoft Windows. Para otras plataformas visite la documentación sobre plataformas.

Apache httpd usa `libtool` y `autoconf` para crear un entorno de compilación que se parece a muchos otros proyectos de código abierto

Si está actualizando desde una versión menor a la siguiente (por ejemplo, 2.4.8 a 2.4.9), pasa a la sección de actualización.

Configuración del árbol de las fuentes de código
Arrancando Apache httpd
Parada y Reinicio

# Descripción general para los impacientes

Instalando en Fedora/CentOS/Red Hat Enterprise Linux
  sudo yum install httpd sudo service httpd start

  Las versiones más recientes de estas distribuciones utilizan `dnf` en lugar de `yum`. Vea la documentación del Proyecto Fedora para más detalles en concreto de esta plataforma.

Instalación en Ubuntu/Debian
  sudo apt install apache2 sudo service apache2 start

  Vea La documentacion oficial de Ubuntu para detalles en concreto de esta plataforma.

Installing from source

  Descarga | Descarga la última versión desde http://httpd.apache.org/download.cgi
  Extraer | `$ gzip -d httpd-NN.tar.gz $ tar xvf httpd-NN.tar $ cd httpd-NN`
  Configura | `$ ./configure --prefix=PREFIX`
  Compila | `$ make`
  Instala | `$ make install`
  Personalizalo | `$ vi PREFIX/conf/httpd.conf`
  Prueba | `$ PREFIX/bin/apachectl -k start`

  NN hay que reemplazarlo por el número de la versión menor, y PREFIX hay que reemplazarlo por la ruta en la que se va a instalar Apache. Si no especifica ningún valor en PREFIX, el valor por defecto que se toma es /usr/local/apache2.

  Cada parte del proceso de configuración e instalación se describe detalladamente más abajo, empezando por los requisitos para compilar e instalar Apache.

  ¿No se encuentra aquí su plataforma o sistema favorito? únete a colaborar y mejorar esta documentación.

# Requisitos

Estos son los requisitos necesarios para compilar Apache:

APR y APR-Util
  Asegúrate de que tiene instalado ya en su sistema APR y APR-Util. Si no es así, o no quiere utilizar la versión que le proporciona el sistema, puede descargar la última versión de ambos APR y APR-Util de Apache APR, descomprimelo en `/httpd_source_tree_root/srclib/apr` y /httpd_source_tree_root`/srclib/apr-util` (cerciórate de que no existen directorios con números de versiones; por ejemplo, la distribución de APR debe estar en /httpd_source_tree_root/srclib/apr/) y usa el comando `./configure` `--con-las-opciones-incluidas-en-apr`. En algunas plataformas deberás instalar la parte correspondiente a los paquetes `-dev` para permitir que httpd se genere contra la instalación de la copia de APR y APR-Util.
Librería Compatible de expresiones regulares de Perl (PCRE)
  Esta librería es requerida, pero ya no incluido con httpd. Descarga el código fuente de http://www.pcre.org, o instala un Port o un Paquete. Si la distrubución de su sistema no puede encontrar el escript pcre-config instalado por PCRE, seleccione utilizando el parámetro`--with-pcre`.En algunas plataformas, deberás instalar la correspondiente versión `-dev` del paquete para permitir a httpd que se genere contra la instalación de la copia del PCRE que se ha instalado.
Espacio en disco
  Compruebe que tiene disponibles al menos 50 MB de espacio libre en disco. Después de la instalación, Apache ocupa aproximadamente 10 MB. No obstante, la necesidad real de espacio en disco varía considerablemente en función de las opciones de configuración que elija y de los módulos externos que use, y como no del tamaño de la página web
Systema de compilación ANSI-C
  Compruebe que tiene instalado un compilador de ANSI-C. Se recomienda el Compilador GNU C (GCC) de la Free Software Foundation (FSF) es el recomendado. Si no tiene instalado el GCC, entonces compruebe que el compilador que va a utilizar cumple con los estándares ANSI. Además, su `PATH` debe contener la ubicación donde de encuentran las herramientas básicas para compilar tales como `make`.
Ajuste exacto del reloj del sistema
  Los elementos del protocolo HTTP están expresados según la hora del día. Por eso, si quiere puede investigar como instalar alguna utilidad para sincronizar la hora de su sistema. Para esto, normalmente, se usan los programas `ntpdate` o `xntpd`, que están basados en el protocolo "Network Time Protocol" (NTP). Consulte elsitio web de NTP para obtener más información sobre NTP y los servidores públicos de tiempo.
Perl 5[OPCIONAL]
  Para algunos de los scripts de soporte como apxs o dbmmanage (que están escritos en Perl) es necesario el intérprete de Perl 5 (las versiones 5.003 o posteriores son suficientes). Si el escript configure no se encuentra, no podrá usar los escripts correspondientes que lo necesiten. Pero por supuesto podrás compilar y usar Apache httpd.

# Descargar

Puede descargar Apache desde la sección de descargas del sitio web de Apache el cual tiene varios mirrors. Para la mayoría de los usuarios de Apache que tienen sistemas tipo Unix, se recomienda que se descarguen y compilen el código fuente. El proceso de compilación (descrito más abajo) es fácil, y permite adaptar el servidor Apache a sus necesidades. Además, las versiones de disponibles en archivos binarios no están siempre actualizadas con las últimas modificaciones en el código fuente. Si se descarga un binario, siga las instrucciones contenidas en el archivo `INSTALL.bindist` incluido en la distribución

Después de la descarga, es importante que verifique que el archivo descargado del servidor HTTP Apache está completo y sin modificaciones. Esto puede hacerlo comparando el archivo descargado (.tgz) con su firma PGP. Instrucciones detalladas de cómo hacer esto están disponibles en la sección de descargas junto con un ejemplo de cómo usar PGP.

# Descomprimir

Extraer el código fuente del archivo .tgz del Servidor Apache HTTP que acabada de descargar es muy fácil. Ejecute los siguientes comandos:

$ gzip -d httpd-NN.tar.gz
$ tar xvf httpd-NN.tar

Estos comandos crearán un nuevo directorio dentro del directorio en el que se encuentra y que contendrá el código fuente de distribución. Debe cambiarse a ese directorio con `cd` para proceder a compilar el servidor Apache.

# Configuración de la estructura de directorios

El siguiente paso es configurar la estructura de directorios para su plataforma y sus necesidades personales. Esto se hace usando el script configure incluido en el directorio raíz de la distribución que acaba de descargar. (Los desarrolladores que se descarguen la versión del CVS de la estructura de directorios necesitarán tener instalados `autoconf` y `libtool`, y necesitarán ejecutar `buildconf` antes de continuar con los siguientes pasos. Esto no es preciso para las versiones oficiales.)

Para configurar la estructura de directorios a partir del código fuente usando las opciones por defecto, solo tiene que ejecutar `./configure`.Para cambiar las opciones por defecto, configure acepta una serie de variables y opciones por la línea de comandos.

La opción más importante es `--prefix` que es el directorio en el que Apache va a ser instalado después, porque Apache tiene que ser configurado para el directorio que se especifique para que funcione correctamente. Es posible lograr un mayor control del lugar donde se van a instalar los ficheros de Apache con otras opciones de configuración.

Llegados a este punto, puede especificar que características o funcionalidades quiere incluir en Apache activando o desactivando modules.Apache vine con una amplia selección de módulos incluidos por defecto. Que serán compilados como . Objetos Compartidos (DSOs) Que pueden ser activados o desactivados en tiempo de ejecución. También puede elegir por compilar módulos de forma estática usando las opciones `--enable-module=static`.

Se pueden activar otros módulos usando la opción `--enable-module`, where module es el nombre del módulo sin el `mod_` y convirtiendo los guiones bajos que tenga en guiones normales. Del mismo modo, puede desactivar los módulos con la opción `--disable-module`. Tenga cuidado al utilizar esta opción, ya que configure no le avisará si el módulo que especifica no existe; simplemente ignorará esa opción.

Además, a veces es necesario pasarle al script configure información adicional sobre donde esta su compilador, librerías o ficheros de cabecera. Esto se puede hacer, tanto pasando variables de entorno, como pasandole opciones a configure. Para más información, consulte el manual de configure. O use configure con la opción `--help`.

Para que se haga una idea sobre las posibilidades que tiene, aquí tiene un ejemplo típico que configura Apache para la ruta `/sw/pkg/apache` con un compilador y unos flags determinados, y además, con dos módulos adicionales mod_ldap y mod_ldap para cargarlos después a través del mecanismo DSO:

$ CC="pgcc" CFLAGS="-O2" \
./configure --prefix=/sw/pkg/apache \
--enable-ldap=shared \
--enable-lua=shared

Cuando se ejecuta configure se comprueban que características o funcionalidades están disponibles en su sistema y se crean los Makefiles que serán usados a continuación para compilar el servidor. Esto tardará algunos minutos.

Los detalles de todas las opciones de configure están disponibles en el manual de configure .

# Build

Ahora puede compilar las diferentes partes que forman Apache simplemente ejecutando el siguiente comando:

$ make

Por favor sea paciente llegado a este punto, ya que una configuración básica lleva unos minutos para su compilación, y el tiempo puede variar mucho dependiendo de su hardware y del número de módulos que haya habilitado para la compilación.(Se recomienda añadir al make el parámetro -j3 como mínimo para que vaya más rápido)

# Instalar

Ahora es el momento de instalar el paquete en el diretorio elegido en PREFIX (consulte más arriba la opción `--prefix`) ejecutando:

$ make install

Este paso requiere de forma típica privilegios de root, ya que el directorio de PREFIX es normalmente un directorio con restricciones de permisos escritura.

Si lo que esta es sólo actualizando, la instalación no sobreescribirá los archivos de configuración.

# Personalizar APACHE

Tras la instalación puede personalizarla, editando los archivos de configuracion en el directorio de `PREFIX/conf/`.

$ vi PREFIX/conf/httpd.conf

Échele un vistazo al Manual de Apache que está en `PREFIX/docs/manual/` o consulta http://httpd.apache.org/docs/&httpd.docs;/ para la versión más reciente de este manual y su completa referencia de las directivas de configuracion disponibles.

# Comprobar que la instalación funciona

Ahora puedes ejecutar tu Apache HTTP server ejecutando directamente:

$ PREFIX/bin/apachectl -k start

Ahora debe poder acceder a su primer documento bajo la URL `http://localhost/`. La página o documento que ve se encuentra en DocumentRoot, que por norma general casi siempre será `PREFIX/htdocs/`. Si quiere parar el servidor, puede hacerlo ejecutando:

$ PREFIX/bin/apachectl -k stop

# Actualizar una instalación previa

El primer paso para actualizar una instalación anterior es leer las especificaciones de la versión y el fichero `CHANGES` en la distribución de código fuente que ha descargado para encontrar los cambios que puedan afectar a su instalación actual. Cuando el cambio sea entre versiones mayores(por ejemplo, de la 2.0 a 2.2 o de la 2.2 a la 2.4), entonces es más probable que haya diferencias importantes en la compilación y en la ejecución que necesitarán ajustes manuales. Todos los módulos necesitarán también ser actualizados para adaptarse a los cambios en el interfaz de programación (API) de módulos.

Actualizando de una versión menor a la siguiente (por ejemplo, de la 2.2.55 a la 2.2.57) es mas fácil. El prodeso de realizar el `make install` no sobreescribirá ninguno de tus documentos existentes,archivos log, o archivos de configuración. De hecho, los desarrolladores están haciendo los esfuerzos necerarios para evitar cambios que generen incompatibilidades en las opciones de configure, la configuración al ser ejecutado, o el módulo de la API entre versiones menores. En la mayor parte de los casos debe poder usar un comando configure idéntico, un fichero de configuración idéntico, y todos sus módulos deben seguir funcionando.

Para actualizar entre versiones menores, empecemos encontrando el archivo de configuración `config.nice` el directorio `de instalación` del servidor o en el directorio raiz del código fuente de tu antigua instalación. Este archivo contendrá los parámetros exactos para pasarle al configure que usaste anteriormente para configurar tus directorios. Entonces, para actualizar su instalación de una versión a la siguinete, solo tiene que copiar el archivo `config.nice` a la estructura de directorios del código fuente de la nueva versión, editarlo, hacer cualquier cambio que desee, y ejecutarlo :

$ ./config.nice
$ make
$ make install
$ PREFIX/bin/apachectl -k graceful-stop
$ PREFIX/bin/apachectl -k start

Tenga en cuenta que antes de poner una nueva versión de Apache en producción, debe siempre probarla antes en un entorno de pruebas. Por ejemplo, puede instalar y ejecutar la nueva versión junto con la antigua usando un `--prefix` diferente y un puerto diferente (modificando la directiva Listen) para comprobar que no existe ninguna incompatibilidad antes de hacer la actualización definitiva.

Puede pasarle argumentos adicionales a `config.nice`, que se agregarán a susopciones originales de configure:

$ ./config.nice --prefix=/home/test/apache --with-port=90

# Paquetes de terceros

Un gran número de terceros proporcionan sus propias distribuciones empaquetadas del Apache HTTP Server para su instalación en plataformas específicas. Esto incluye las distintas distribuciones de Linux, varios paquetes de Windows de terceros, Mac OS X, Solaris, y muchos más.

Nuestra licencia de software no sólo permite, sino que anima, este tipo de redistribución. Sin embargo, se da lugar a una situación en la que el diseño y la configuración de los valores predeterminados de la instalación del servidor pueden diferir de lo que se indica en la documentación. Mientras lamentablemente, esta situación no es probable que cambie a corto plazo.

Una descripción de estas distribuciones de terceros está siendo actualizada en el servidor de la WIKI de HTTP Server, y debería reflejar el actual estado de éstas distribuciones de terceros. Sin embargo, tendrá que familiarizarse con los procedimientos de gestión e instalación de paquetes de su plataforma (SO) en particular.