Cómo instalar el servidor web Apache en FreeBSD 12.1

En esta entrada veremos cómo instalar Apache en FreeBSD 12.1 paso a paso, con lo que podrás utilizar el servidor web más extendido de Internet para servir páginas o aplicaciones web en tu servidor o VPS FreeBSD.

Antes de instalar Apache en FreeBSD 12.1

Si quieres seguir esta guía de instalación del servidor web Apache en FreeBSD 12.1 necesitarás partir de estos requisitos básicos:

  • Un sistema FreeBSD 12.1 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.1

Para instalar Apache en FreeBSD 12.1 usaremos los paquetes disponibles en los propios repositorios de la distribución, por tanto la primera acción será actualizar las listas de paquetes de tales repositorios:

$ sudo pkg update

El paquete que necesitamos en esta ocasión es apache24, así que lo descargaremos con pkg:

$ sudo pkg install -y apache24

Una vez descargado e instalado el paquete apache24 y todas sus dependencias se crea un nuevo servicio en FreeBSD 12.1 llamado apache24.

El instalador del paquete Apache no arranca el servicio apache24 ni lo configura para iniciar automáticamente junto a FreeBSD 12.1, por lo que debemos hacerlo manualmente.

Empezaremos habilitando Apache para que arranque automáticamente en cada inicio de FreeBSD 12.1, con el comando service:

$ sudo service apache24 enable

Como esta acción no arrancará el servicio Apache hasta el próximo inicio de FreeBSD 12.1, levantamos el servicio manualmente:

$ sudo service apache24 start

Podremos comprobar en cualquier momento el estado del servicio apache24 con la opción status del comando service:

$ service apache24 status
apache24 is running as pid 991.

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.1 es tan fácil como usar el parámetro -v del comando apachectl:

$ apachectl -v
Server version: Apache/2.4.41 (FreeBSD)
Server built:   unknown

Comprobar el funcionamiento del servicio

Para ver si funciona Apache mediante un navegador introduce la dirección IP o dominio de la máquina FreeBSD 12.1 y obtendrás la espartana página de prueba del servidor web:

como instalar Apache en FreeBSD 12.1

Cómo configurar Apache en FreeBSD 12.1

Para configurar Apache en FreeBSD 12.1 debes saber que todos los archivos y subdirectorios de configuración se organizan bajo la ruta /usr/local/etc/apache24/.

El archivo principal es httpd.conf y algunos datos de la configuración por defecto que podemos obtener de su contenido son:

  • El servicio corre con el usuario y grupo www.
  • La página web por defecto se aloja en la ruta /usr/local/www/apache24/data/.
  • El registro de errores, httpd-error.log, y el registro de accesos, httpd-access.log, se guarda en /var/log/.

Además, desde el archivo principal se cargan otros archivos, siempre con extensión .conf, guardados en los subdirectorios de configuración, como son:

  • El subdirectorio modules.d/ destinado a configuraciones de los módulos de Apache.
  • Archivos concretos del subdirectorio extra/.
  • El subdirectorio Includes/.

Cualquier cambio que realicemos en estos archivos de Apache requerirá la recarga de la configuración del servicio:

$ sudo service apache24 reload

En otras ocasiones puede requerirse el reinicio de Apache (no de FreeBSD 12.1):

$ sudo service apache24 restart

Servidores Virtuales de Apache en FreeBSD 12.1

Para configurar servidores virtuales de Apache en FreeBSD 12.1 seguiremos una estrategia un poco apartada de la configuración por defecto. Y es que, por defecto, Apache en FreeBSD 12.1 incluye un archivo httpd-vhosts.conf que puede ser cargado desde el archivo principal de configuración:

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

La idea inicial es descomentar esa directiva Include y dotar de contenido al archivo httpd-vhosts.conf, que viene con dos servidores virtuales de ejemplo.

En lugar de esto, crearemos un subdirectorio exclusivo para archivos de configuración individuales para los servidores virtuales.

Creamos dicho subdirectorio:

$ sudo mkdir /usr/local/etc/apache24/sites.d/

Y editamos el archivo principal de configuración:

$ sudo nano /usr/local/etc/apache24/httpd.conf

Al final del mismo añadiremos una directiva Include que cargue los archivos de este nuevo subdirectorio:

...
Include etc/apache24/sites.d/*.conf

Ahora configurar servidores virtuales es tan sencillo como ir añadiendo nuevos archivos de configuración en ese directorio, mientras que para desactivarlos es cuestión de borrar los archivos o cambiar su extensión (de *.conf a otra distinta).

Servidor virtual por defecto

El hecho de usar servidores virtuales implica la existencia del servidor virtual por defecto, que se encargará de devolver la página web por defecto a los accesos por dirección IP, dominio principal de la máquina FreeBSD 12.1 y cualquier otro dominio que apunte a la máquina y no tenga una configuración propia de servidor virtual.

$ sudo nano /usr/local/etc/apache24/sites.d/000-default.conf

Con el contenido:

<VirtualHost *:80>
</VirtualHost>

La configuración está vacía porque se toman todos los valores de la configuración general de httpd.conf, pero puedes ir haciendo modificaciones directamente sobre este nuevo archivo y prevalecerán sobre httpd.conf.

Añadir servidores virtuales

Vamos a añadir un par de servidores virtuales al servicio, uno para un subdominio del dominio principal y otro para un nuevo dominio (ambos deben apuntar a la dirección IP del servidor FreeBSD 12.1). También tenemos un dominio más apuntando al servidor, pero para el que no configuraremos servidor virtual.

Tendremos, por tanto:

  • El dominio principal: freebsd121.local
  • El subdominio del dominio principal: blog.freebsd121.local
  • Otro dominio distinto: otrodominio.local
  • Un último dominio sin servidor virtual: untercerdominio.local

Crearemos el archivo de configuración para cada servidor virtual:

$ sudo nano /usr/local/etc/apache24/sites.d/blog.freebsd121.local.conf

Con este contenido:

<VirtualHost *:80>
        ServerName blog.freebsd121.local
        DocumentRoot /usr/local/www/apache24/blog.freebsd121.local
        <Directory /usr/local/www/apache24/blog.freebsd121.local>
                Options -Indexes
                Require all granted
        </Directory>
        ErrorLog /var/log/apache24/error-blog.freebsd121.local.log
        CustomLog /var/log/apache24/access-blog.freebsd121.local.log combined
</VirtualHost>

Guardamos y cerramos el archivo.

En la configuración del servidor virtual podemos ver las siguientes directivas:

  • El bloque VirtualHost, que encierra toda la configuración del servidor virtual.
  • La directiva ServerName, donde indicamos a qué dominio responde el servidor virtual.
  • DocumentRoot, la carpeta de archivos web.
  • Directory, un bloque que aplica una configuración determinada al directorio al que se refiere.
  • Options, una lista de opciones de comportamiento del servidor, como en este ejemplo «-Indexes«, que no permite el listado del contenido del directorio web cuando no hay presente un archivo índice, como index.html.
  • Require all granted, esta directiva es necesaria porque la configuración por defecto del servidor sólo permite el acceso a la página por defecto.
  • ErrorLog, el archivo de registro de errores exclusivo para el servidor virtual.
  • CustomLog, el archivo de registro de accesos exclusivo del servidor virtual.

Debemos crear los directorios a los que se alude en la configuración, tanto en DocumentRoot como para los archivos de registro, ya que la configuración por defecto de Apache los sitúa en /var/log/, mezclados con los registros de otros servicios.

Creamos el directorio de archivos web:

$ sudo mkdir /usr/local/www/apache24/blog.freebsd121.local

Y a continuación el directorio de registros, que es interesante reutilizar para otros servidores virtuales:

$ sudo mkdir /var/log/apache24

Creamos la configuración para el segundo servidor virtual:

$ sudo nano /usr/local/etc/apache24/sites.d/otrodominio.local.conf

Con un contenido similar:

<VirtualHost *:80>
        ServerName otrodominio.local
        DocumentRoot /home/chacho/public_html/otrodominio.local
        Options -Indexes
        ErrorLog /var/log/apache24/error-otrodominio.local.conf
        CustomLog /var/log/apache24/access-otrodominio.local.conf combined
</VirtualHost>

Análogamente, crearemos el directorio de archivos web, que en esta ocasión situaremos en la carpeta personal del usuario que mantendrá el sitio web:

$ mkdir -p ~/public_html/otrodominio.local

Finalmente, es interesante poner algún contenido web de prueba. Editaremos archivos index.html en cada carpeta de documentos web con un mensaje identificativo.

Por ejemplo:

$ sudo nano /usr/local/www/apache24/blog.freebsd121.local/index.html

Con este mínimo contenido:

<h1>Bienvenidos a blog.freebsd121.local</h1>

Y para el servidor virtual de otrodominio.local:

$ nano ~/public_html/otrodominio.local/index.html

Con un contenido similar:

<h1>Bienvenidos a otrodominio.local</h1>

Guardados los cambios y cerrados todos los archivos, es hora de recargar la configuración del servidor web:

$ sudo service apache24 reload

Y vamos a acceder al servidor web de FreeBSD 12.1 por todos los medios posibles:

como instalar y configurar apache en freebsd 12.1

Justo lo que pretendíamos.

Cómo instalar módulos de Apache en FreeBSD 12.1

Los módulos proporcionan funcionalidades extra al servidor web, por lo que se hace imprescindible aprender a instalar módulos de Apache en FreeBSD 12.1, y también a activarlos y desactivarlos.

La instalación estándar de Apache incluye muchos módulos, algunos cargados por defecto y otros no. Puedes saber qué módulos están actualmente cargados con el parámetro -M del comando apachectl:

$ apachectl -M
Loaded Modules:
 core_module (static)
 so_module (static)
 http_module (static)
...
 autoindex_module (shared)
 dir_module (shared)
 alias_module (shared)
$

Los módulos se activan y desactivan en el archivo de configuración de Apache, httpd.conf, mediante directivas LoadModule:

...
#LoadModule mpm_event_module libexec/apache24/mod_mpm_event.so
LoadModule mpm_prefork_module libexec/apache24/mod_mpm_prefork.so
#LoadModule mpm_worker_module libexec/apache24/mod_mpm_worker.so
...

Vamos a activar el módulo SSL, que por defecto está desactivado:

...
#LoadModule ssl_module libexec/apache24/mod_ssl.so
...

Lo activaremos eliminando el carácter # que inicia la línea:

...
LoadModule ssl_module libexec/apache24/mod_ssl.so
...

A veces unos módulos dependen de otros, y la configuración del módulo SSL necesita del módulo SHMCB, así que buscaremos la directiva que lo carga:

...
#LoadModule socache_shmcb_module libexec/apache24/mod_socache_shmcb.so
...

Y la editamos para que cargue:

...
LoadModule socache_shmcb_module libexec/apache24/mod_socache_shmcb.so
...

Guardamos los cambios, cerramos el archivo httpd.conf y recargamos la configuración de Apache:

$ sudo service apache24 reload

Comprobaremos que el servidor web ha cargado el módulo como hemos visto:

$ apachectl -M |grep -i ssl
 ssl_module (shared)
$

Las funcionalidades del módulo ya están disponibles, vamos a usarlas en la siguiente sección.

Cómo usar Apache con seguridad SSL en FreeBSD 12.1

Para que cualquiera de los servidores virtuales que hemos configurado anteriormente atienda peticiones a través de protocolo seguro HTTPS habrá que configurarlos para el uso del módulo SSL.

Configuración general de SSL/TLS

El módulo SSL incluye un archivo de configuración httpd-ssl.conf (y una copia llamada httpd-ssl.conf.sample) en el subdirectorio extra/ que debemos editar, ya que incluye una configuración de servidor virtual de ejemplo que no funciona.

$ sudo nano /usr/local/etc/apache24/extra/httpd-ssl.conf

Borra por completo el bloque VirtualHost. Al final debe quedar algo así (obviando los comentarios):

Listen 443
SSLCipherSuite HIGH:MEDIUM:!MD5:!RC4:!3DES
SSLProxyCipherSuite HIGH:MEDIUM:!MD5:!RC4:!3DES
SSLHonorCipherOrder on
SSLProtocol all -SSLv3
SSLProxyProtocol all -SSLv3
SSLPassPhraseDialog  builtin
SSLSessionCache        "shmcb:/var/run/ssl_scache(512000)"
SSLSessionCacheTimeout  300

Guardamos los cambios y haremos que Apache cargue este archivo, de modo que será una configuración general, y en la configuración de los servidores virtuales sólo incluiremos las particularidades de cada uno.

Editamos de nuevo httpd.conf, buscamos la directiva Include que cargaría este archivo de configuración y la activamos:

...
# Secure (SSL/TLS) connections
Include etc/apache24/extra/httpd-ssl.conf
...

Configuración particular para cada servidor virtual

Previamente, debemos instalar un certificado SSL para cada servidor virtual que queramos configurar, ya que estos certificados se relacionan con el dominio cuyo contenido cifrarán.

Si no tienes un certificado para el servidor virtual que vas a configurar, puedes crear e instalar uno autofirmado en tu sistema FreeBSD 12.1.

Empezaremos creando un directorio para guardar los claves privadas y certificados públicos que usaremos con el servidor web:

$ sudo mkdir /usr/local/etc/apache24/certs.d

Ahora ya podemos crear el certificado para el servidor virtual por defecto:

$ sudo openssl req -newkey rsa:2048 -nodes -days 3650 -x509 -out /usr/local/etc/apache24/certs.d/freebsd121.local.crt -keyout /usr/local/etc/apache24/certs.d/freebsd121.local.key

Se nos preguntarán varios datos, que se pueden dejar en blanco si lo crees conveniente, pero para «Common Name» indica el dominio para el que usarás el certificado:

...
Common Name (e.g. server FQDN or YOUR name) []:freebsd121.local
...

Repetiremos el proceso para cada servidor virtual, cambiando el nombre de los archivos de salida:

$ sudo openssl req -newkey rsa:2048 -nodes -days 3650 -x509 -out /usr/local/etc/apache24/certs.d/otrodominio.local.crt -keyout /usr/local/etc/apache24/certs.d/otrodominio.local.key

Y del «Common Name«:

...
Common Name (e.g. server FQDN or YOUR name) []:otrodominio.local
...

Editaremos el archivo de configuración del servidor virtual al que vamos a dotar de cifrado, empezando por el dominio principal o página web por defecto:

$ sudo nano /usr/local/etc/apache24/sites.d/000-default.conf

Y añadiremos un nuevo bloque VirtualHost:

...
<VirtualHost *:443>
        SSLEngine on
        SSLCertificateFile /usr/local/etc/apache24/certs.d/freebsd121.local.crt
        SSLCertificateKeyFile /usr/local/etc/apache24/certs.d/freebsd121.local.key
</VirtualHost>

Igualmente para el resto de servidores virtuales:

$ sudo nano /usr/local/etc/apache24/sites.d/otrodominio.local.conf

Añadiremos el bloque VirtualHost:

...
<VirtualHost *:443>
        ServerName otrodominio.local
        DocumentRoot /home/chacho/public_html/otrodominio.local
        <Directory /home/chacho/public_html/otrodominio.local>
                Options -Indexes
                Require all granted
        </Directory>

        SSLEngine on
        SSLCertificateFile /usr/local/etc/apache24/certs.d/otrodominio.local.crt
        SSLCertificateKeyFile /usr/local/etc/apache24/certs.d/otrodominio.local.key

        ErrorLog /var/log/apache24/error-otrodominio.local.conf
        CustomLog /var/log/apache24/access-otrodominio.local.conf combined
</VirtualHost>

Básicamente el contenido de estos nuevos bloques es el mismo, pero incorporamos lo siguiente:

  • El bloque VirtualHost está configurado para el puerto 443, el puerto HTTPS estándar.
  • La directiva SSLEngine activa el modo SSL en el servidor virtual.
  • SSLCertificateFile apunta al certificado público.
  • SSLCertificateKeyFile apunta a la clave privada.
  • En algunas ocasiones, sobre todo para certificados firmados por autoridades certificadoras, será necesario añadir la directiva SSLCertificateChainFile apuntando al archivo correspondiente.

Guardamos los cambios y recargamos la configuración del servicio web:

$ sudo service apache24 reload

Ahora el servidor virtual otrodominio.local ofrece contenido estándar y contenido seguro, funcionarán tanto la URL http:/otrodominio.local como https://otrodominio.local.

En este ejemplo, al usar un certificado autofirmado, el navegador nos hará saber que no puede comprobar la autenticidad del certificado:

configurar seguridad ssl en apache para freebsd 12.1

Dependiendo del navegador, de una u otra forma nos ofrecerá opciones para continuar accediendo al sitio deseado:

como configurar el servidor apache en freebsd 12.1

El navegador seguirá informando sobre el problema con el certificado, pero la conexión es HTTPS (puerto 443/TCP), cifrada con los archivos de clave que creamos.

Conclusión

Ahora ya sabes cómo instalar y configurar Apache, crear servidores virtuales y configurar seguridad SSL con protocolo HTTPS, con lo que sacarás el máximo partido del servidor web y las capacidades de tu servidor o VPS FreeBSD.

¿Dudas o preguntas? ¿Sugerencias, correcciones? Puedes dejar un comentario.

¡Apoya este sitio!

Si te ha servido esta guía de instalación y configuración del servidor web Apache en FreeBSD 12.1 y quieres agradecérnoslo, la más mínima aportación al mantenimiento de este sitio y creación de más artículos sobre FreeBSD 12.1 y Apache es bien recibida. ¡Gracias!

Valora esta entrada

1 estrella2 estrellas3 estrellas4 estrellas5 estrellas (1 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