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, y es que muchos servicios profesionales ofrecen hosting y VPS FreeBSD.
Contenido
Antes de instalar Apache en FreeBSD 12
Si quieres seguir esta guía de instalación del servidor web Apache en FreeBSD 12 necesitarás partir de estos requisitos básicos:
- Un sistema FreeBSD 12 actualizado.
- El paquete openssl.
- Acceso a consola como root o un usuario con privilegios de sudo.
- Si vas a configurar servidores virtuales necesitarás dominios apuntando al servidor.
- Conexión a Internet.
Si estás interesado en configurar servidores virtuales con Apache para tu servidor o VPS FreeBSD, necesitarás obviamente registrar los dominios para cada servidor virtual. Si aún no los has registrado, te recomiendo Namecheap, el lugar en el que registro y renuevo los dominios de mis sitios, como por ejemplo esta misma web.
Con todo lo anterior en regla, podemos abrir un terminal de comandos y nos ponemos manos a la obra.
Cómo instalar Apache en FreeBSD 12
Para instalar Apache en FreeBSD 12 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 -y apache24
Se descargarán e instalarán automáticamente el paquete y todas sus dependencias quedando Apache 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 lo habilitaremos en /etc/rc.conf también con el comando service:
~$ sudo service apache24 enable
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: Syntax OK Starting apache24.
El servidor web Apache queda corriendo en segundo plano como servicio del sistema.
Qué versión de Apache se ha instalado
Si tienes inquietud por saber la versión de Apache que se ha instalado en tu sistema FreeBSD 12 es tan fácil como usar el parámetro -v del comando apachectl:
$ apachectl -v Server version: Apache/2.4.48 (FreeBSD) Server built: unknown
Comprobar el funcionamiento del servicio
Para comprobar si funciona el servidor web Apache podemos acceder a través de un navegador especificando la dirección IP o dominio del servidor FreeBSD 12.
Por ejemplo, el servidor FreeBSD 12 que hemos utilizado para redactar este artículo es accesible en el subdominio freebsd12.local.lan, por lo que usaremos http://freebsd12.local.lan como URL:
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 12 se encuentran en /usr/local/etc/apache24/.
Si aparecen avisos con el código AH00558 en el arranque de Apache, debemos editar su archivo principal de configuración. En FreeBSD 12 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 freebsd12.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
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 de Apache en FreeBSD 12
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.
~$ sudo nano /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> ServerName blog.freebsd12.local.lan ServerAdmin chacho@localhost DocumentRoot "/home/chacho/public_html/blog" <Directory /home/chacho/public_html/blog> Require all granted </Directory> ErrorLog "/var/log/blog.freebsd12.local.lan-error_log" CustomLog "/var/log/blog.freebsd12.local.lan-access_log" common </VirtualHost>
La definición del servidor virtual se encierra dentro del bloque VirtualHost. Dentro de este bloque configuramos las distintas directivas:
- ServerName: Dominio al que debe responder el servidor virtual (que en este momento sólo devuelve la página web por defecto de Apache).
- ServerAdmin: La dirección de correo-e del administrador del sitio.
- DocumentRoot: Directorio donde residirá toda la estructura de archivos del sitio web.
- <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.lan</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
Y ahora sí, escribimos la dirección de nuestro servidor virtual en un navegador y deberíamos obtener el resultado esperado:
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:
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> 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.
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 comoinstalar.me!
¿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 y quieres agradecérmelo, puedes hacerlo dejando 1 $ de propina en PayPal para una CocaCola:
O si te sientes especialmente generoso puedes invitarme a un cappuccino:
¡Gracias!