Cómo Instalar Apache en FreeBSD 12

Cómo Instalar Apache en FreeBSD 12

En esta entrada vamos a ver cómo instalar Apache en FreeBSD 12 paso a paso, para tener el servidor web más usado en Internet en uno de los sistemas operativos más robustos.

Aunque la versión de Apache que instalaremos es la extendida 2.4, la configuración varía un poco con respecto a otros sistemas Unix y Linux. Pero aquí te explico todo lo que necesitas saber.

Para seguir este tutorial, partimos de una instalación limpia y actualizada de FreeBSD 12 y trabajaremos con un usuario con privilegios de sudo.

Cómo instalar Apache en FreeBSD 12

Para instalar Apache en FreeBSD usaremos el gestor de paquetes pkg para obtener Apache 2.4 desde los repositorios oficiales de FreeBSD. El paquete que necesitamos es apache24:

~$ sudo pkg install apache24

[...]

~$

Se descargará e instalará automáticamente el paquete y todas sus dependencias quedando listo para usar.

Cómo iniciar y activar el servidor Apache en FreeBSD

El servicio apache24 no se incia tras la instalación ni se activa para iniciar con el sistema. Podemos comprobar que el servicio no está corriendo con el comando service:

~$ service apache24 onestatus
apache24 is not running.
~$

Mientras no activemos el servicio en /etc/rc.conf no podremos usar las opciones start, stop, restart, reload y status, sino sus versiones onestart, onestop, onerestart, onereload y onestatus.

Para activar Apache para que inicie con el sistema hay que añadir una línea en /etc/rc.conf:

apache24_enable="YES"

Ahora ya podemos iniciar el servicio Apache usando service con la opción start (si decides no activar el servicio en /etc/rc.conf entonces será con la opción onestart):

~$ sudo service apache24 start
Performing sanity check on apache24 configuration:
AH00557: httpd: apr_sockaddr_info_get() failed for freebsd.local
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1. Set the 'ServerName' directive globally to suppress this message
Syntax OK
Starting apache24.
AH00557: httpd: apr_sockaddr_info_get() failed for freebsd.local
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1. Set the 'ServerName' directive globally to suppress this message
~$

A pesar de las advertencias y mensajes, el Apache inicia correctamente. Para comprobarlo podemos acceder a través de un navegador especificando la dirección IP o dominio del servidor:

La página por defecto es muy espartana pero cumple con su cometido, informar de que el servicio está iniciado y funcionando.

Cómo configurar Apache en FreeBSD 12

Los archivos de configuración de Apache en FreeBSD se encuentran en /usr/local/etc/apache24/.

Para eliminar los avisos que se lanzan en el arranque de Apache debemos editar su archivo principal de configuración. En FreeBSD este archivo es /usr/local/etc/apache24/httpd.conf.

Haz una copia del archivo original httpd.conf antes de empezar con las modificaciones y personalizaciones

Localizamos la cláusula ServerName:

[...]

#
# ServerName gives the name and port that the server uses to identify itself.
# This can often be determined automatically, but we recommend you specify
# it explicitly to prevent problems during startup.
#
# If your host doesn't have a registered DNS name, enter its IP address here.
#
ServerName freebsd.local:80

[...]

Por defecto viene desactivada, así que debemos eliminar el carácter # inicial y darle un nombre que tenga sentido. Tras guardar los cambios, podemos recargar la configuración del servidor Apache:

$ sudo service apache24 reload
Performing sanity check on apache24 configuration:
Syntax OK
Performing sanity check on apache24 configuration:
Syntax OK
Performing a graceful restart
$

Más sobre la configuración de Apache en FreeBSD

Como dato que en algún momento puedes llegar a necesitar, el usuario y grupo con que se ejecuta el servicio apache24 es, respectivamente, www y www.

El directorio por defecto donde Apache busca el contenido web, el WebRoot o DocumentRoot, es /usr/local/www/apache24/data/.

Todo esto y mucho más lo puedes encontrar en httpd.conf.

Cómo configurar servidores virtuales en Apache para FreeBSD

Una de las ventajas de un servidor VPS FreeBSD es poder tener alojados varios sitios web referenciados por distintos dominios. Para ello necesitamos activar la configuración de los servidores virtuales que queramos definir.

En FreeBSD esta característica viene activada por defecto, pero no cargan las definiciones de servidores virtuales, porque de entrada se supone que no existe ninguno, los vamos creando nosotros sobre la marcha.

Editaremos el archivo /usr/local/etc/apache24/httpd.conf para permitir que cargue la configuración específica de los servidores virtuales, que se encuentra en un archivo externo.

La versión original de httpd.conf viene así:

[...]

# Virtual hosts
#Include etc/apache24/extra/httpd-vhosts.conf

[...]

Debemos descomentar, eiliminando el carácter # inicial de la línea que incluye la configuración de los servidores virtuales. Quedaría así:

[...]

# Virtual hosts
Include etc/apache24/extra/httpd-vhosts.conf

[...]

A partir de ahora, cada vez que Apache cargue su configuración, incuirá también la de los servidores virtuales que se hayan configurado.

Cómo crear los servidores virtuales

Lo siguiente es crear la configuración de un servidor virtual. En este ejemplo crearé un servidor virtual para blog.freebsd12.local que apunta al servidor con el que estamos trabajando. Se supone que ese subdominio apunta al servidor y si introducimos esa dirección en el navegador el servidor web nos devolverá la página por defecto.

El archivo que tenemos que editar es /usr/local/etc/apache24/extra/httpd-vhosts.conf. Este archivo por defecto contiene comentarios y un par de definiciones de servidores virtuales de ejemplo que debemos desactivar. Podemos comentarlos, eliminarlos por completo o modificarlos para configurar nuestros propios servidores. El caso es que no debe haber ninguna definición que no esté perfectamente configurada, y los servidores por defecto referencian directorios que no existen.

Guarda una copia del archivo original httpd-vhosts.conf antes de modificarlo

En mi caso primero añado una nueva definición al final del archivo guiándome por los ejemplos y luego borro ejemplos y comentarios para tener el archivo lo más despejado posible. Quedaría algo tal que así:

<VirtualHost *:80>
        ServerAdmin chacho@localhost
        DocumentRoot "/home/chacho/public_html/blog"
        ServerName blog.freebsd12.local
        <Directory /home/chacho/public_html/blog>
                Require all granted
        </Directory>
        ErrorLog "/var/log/blog.freebsd12.local-error_log"
        CustomLog "/var/log/blog.freebsd12.local-access_log" common
</VirtualHost>

La definición del servidor virtual se encierra dentro del bloque VirtualHost. Dentro de este bloque configuramos las distintas directivas:

  • ServerAdmin: La dirección de correo-e del administrador del sitio.
  • DocumentRoot: Directorio donde residirá toda la estructura de archivos del sitio web.
  • ServerName: Dominio al que debe responder el servidor virtual (que en este momento sólo devuelve la página web por defecto de Apache).
  • <Directory>: Bloque para añadir o modificar ciertas características con respecto a la configuración por defecto. En este caso, como el nuevo sitio web residirá en la carpeta personal de un usuario debemos permitir el acceso a estos archivos desde la configuración de Apache. Como la configuración general no permite sitios fuera de /usr/local/www/apache24/data, debemos permitir explícitamente el acceso en la definición del servidor virtual.
  • ErrorLog: Archivo de registro de errores, si queremos tenerlo separado del archivo general de Apache.
  • CustomLog: Parecida a la anterior, pero con el registro de acceso al sitio web.

Antes de probar nuestro nuevo servidor debemos asegurarnos de que el directorio DocumentRoot tenga algún contenido, ya que la configuración por defecto no permite acceder a carpetas que no contengan archivos índice (por defecto index.html).

Para este ejemplo copiaré algunos archivos al azar en el DocumentRoot que he definido para este servidor virtual. Hay que crear el directorio y  en él añadiré un archivo índice index.html con un contenido mínimo:

$ mkdir -p public_html/blog
$ nano public_html/blog/index.html

El archivo index.html sólo contendrá un pequeño texto:

<h1>blog.freebsd.local</h1>

Una vez guardados los cambios en los archivos de configuración y creada la estructura de directorios que alojarán nuestra web de demostración, podemos recargar la configuración de Apache:

~$ sudo service apache24 reload
Password:
Performing sanity check on apache24 configuration:
Syntax OK
Performing sanity check on apache24 configuration:
Syntax OK
Performing a graceful restart
~$

Y ahora sí, escribimos la dirección de nuestro servidor virtual en un navegador y deberíamos obtener el resultado esperado:

instalar apache en freebsd 12

Listado de directorios

En la carpeta de documentos web del sevidor virtual de este ejemplo tenemos una serie de archivos y un archivo índice index.html. Vamos a ver qué pasa si eliminamos el archivo índice y tratamos de acceder de nuevo a través del navegador:

$ rm public_html/blog/index.html
$

Borrado el archivo, intentamos acceder de nuevo:

error 403 forbidden apache freebsd 12
Acceso no permitido

Obtenemos un error 403 Forbidden, ya que no se permite el acceso a un directorio que no tenga archivo índice.

Si prefieres poder ver el contenido de un directorio web que no tiene archivo index.html, algo muy poco recomendable como norma general, editamos la configuración del servidor virtual y añadimos una línea Options dentro del bloque Directory.

<Directory "/home/chacho/public_html/blog.freebsd12.local">
        Options +Indexes
        Require all granted
</Directory>

Recargamos la configuración de Apache y accedemos a través del navegador:

En esta ocasión no recibimos un error 403, en su lugar se muestra el mensaje Index of seguido de la lista de archivos y carpetas que existan en el directorio, si los hay.

Configuraciones locales (archivos .htaccess)

No es un comportamiento deseable dejar activado en general el listado de directorios ya que, en aplicaciones web con una gran estructura de archivos y carpetas podríamos dejar accesibles archivos potencialmente sensibles.

Pero podría darse el caso de que algunos directorios sí quisiéramos dejarlos a la vista, como una zona de descargas o similar.

Vamos a ver cómo denegar de forma general el listado de archivos y activarlo sólo donde queramos mediante archivos .htaccess.

Para permitir la modificación de la configuración general a través de archivos .htaccess es necesario incluir una directiva AllowOverride en el bloque Directory de nuestro servidor virtual. Además, aprovechamos para denegar el listado de directorios en genearl de forma explícita:

<Directory /home/chacho/public_html/blog>
        Options -Indexes
        AllowOverride All
        Require all granted
</Directory>

Guardados los cambios, recargamos la configuración del sevidor Apache.

Para el ejemplo, crearemos un par de directorios vacíos en nuestro servidor virtual de pruebas:

$ mkdir public_html/blog/dir1 public_html/blog/dir2
$

Uno de ellos, por ejemplo dir1/, lo dejaremos tal y como está. En el otro, dir2/, crearemos un archivo .htaccess:

$ nano public_html/blog/dir2/.htaccess

El contenido de este archivo es muy simple, una directiva Options que permite el listado del directorio en el que se encuentra el archivo .htaccess.

La configuración en el archivo httpd-vhosts.conf se aplica por defecto a todo el servidor virtual, mientras que la configuración del archivo .htaccess afecta sólo al directorio en el que se haya presente

Options +Indexes

La opción +Indexes contradice a la configuración del servidor virtual, pero gracias a que la configuración general permite estas modificaciones locales todo funcionará como se espera.

En este caso accedemos a las dos direcciones nuevas, las de cada directorio, sin recargar la configuración de Apache, ya que los archivos .htaccess se evalúan en cada acceso, mientras que la configuración general se evalúa al iniciar o reiniciar Apache.

configuracion virtual host apache freebsd 12
Configuración modificada a través de archivos .htaccess

En el primer caso prevalece la configuración general, mientras que en el segundo caso prevalece la configuración local (.htaccess).

Servidor virtual por defecto

Cuando activamos la funcionalidad de servidores virtuales, cualquier dominio que apunte al servidor y no tenga su correspondiente servidor virtual, o accesos por dirección IP devolverán el sitio web configurado para el primer servidor virtual configurado.

Lo interesante es que si queremos tener un sitio por defecto, lo configuremos en primer lugar del archivo de configuración para que respondan a todas estas peticiones. Haciéndolo así, el resto de servidores virtuales sólo responderán a sus correspondientes dominios.

Conclusión

Ahora que ya sabes cómo instalar Apache en FreeBSD 12 añadiendo módulos y creando servidores virtuales estás listo para poner en marcha tus sitios web y los de tus usuarios.

En próximos artículos veremos cómo aumentar las capacidades de tu servidor web añadiendo lenguajes de scripting como PHP y más cosas.

Si quieres indicarme algún error, consultar alguna duda o tienes preguntas o sugerencias de nuevos artículos, déjame un comentario.

Apoya este sitio

¿Te ha servido esta entrada? ¿Te he resuelto algún problema a la hora de instalar Apache en FreeBSD 12? Si te he solucionado algún dolor de cabeza, siempre puedes contribuir con una mínima aportación que se usará en el mantenimiento de este sitio y en la redacción de más tutoriales de este tipo. ¡Gracias!

Valora esta entrada

1 estrella2 estrellas3 estrellas4 estrellas5 estrellas (2 votos, promedio: 5,00 de 5)
Cargando…

Deja un comentario

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies.

ACEPTAR
Aviso de cookies