En este artículo veremos cómo instalar el servidor web Apache en FreeBSD 11 paso a paso, de modo que puedas ofrecer contenido web desde tu servidor o VPS FreeBSD, con la posibilidad de mostrar más de un sitio web gracias a la creación de servidores virtuales y mediante conexiones seguras SSL.
Contenido
Antes de instalar Apache en FreeBSD 11
Para poder completar esta guía de instalación de Apache en FreeBSD 11 debemos reunir los siguientes requisitos mínimos:
- Un sistema FreeBSD 11 actualizado.
- Acceso a línea de comandos con un usuario con permisos de sudo, o el propio root.
- Conexión a Internet.
Si tienes pensado configurar tu propio sitio web en Intenet, con o sin servidores virtuales, también necesitarás uno o varios dominios que, si aún no lo has hecho, tendrías que registrar en algún servicio profesional como Namecheap, el sitio que usamos nosotros:
Cómo instalar Apache en FreeBSD 11
Vamos a instalar Apache en FreeBSD 11 desde los repositorios del sistema, así que en primer lugar actualizaremos la información de dichos repositorios y los paquetes disponibles:
~$ sudo pkg update
El paquete que necesitamos es apache24, que instalaremos con pkg:
~$ sudo pkg install -y apache24
Tras la instalación del servidor web Apache y sus dependencias se crea un nuevo servicio en FreeBSD 11, el servicio apache24, que tendremos que habilitar y arrancar.
Para habilitar Apache en FreeBSD 11 de modo que arranque automáticamente con el sistema, necesitaremos editar el archivo /etc/rc.conf:
~$ sudo nano /etc/rc.conf
Y añadimos esta línea al final del archivo:
... apache24_enable="YES"
Guardamos los cambios, cerramos el archivo y ya podemos iniciar el servicio por primera vez, para no tener que esperar al próximo inicio del sistema:
~$ sudo service apache24 start
Podemos comprobar el estado del servicio en cualquier momento con el comando service apache24 status
:
Cómo saber la versión instalada de Apache
Si necesitas conocer la versión instalada de Apache en FreeBSD 11 es tan fácil como consultarlo con el comando apachectl:
~$ apachectl -v Server version: Apache/2.4.46 (FreeBSD) Server built: unknown
Comprobar el funcionamiento de Apache en FreeBSD 11
Si quieres comprobar el funcionamiento de Apache en FreeBSD 11 puedes hacerlo conectando desde un navegador en cualquier máquina de la red, introduciendo la dirección IP, nombre DNS, dominio, localhost si estamos en local, etc.
Por ejemplo, la máquina FreeBSD 11 sobre la que hemos realizado este artículo es accesible en el subdominio freebsd11.local.lan, por lo que podemos emplear http://freebsd11.local.lan como URL:
La página por defecto es muy simple pero cumple perfectamente su cometido de informarnos de que el servidor web se encuentra en servicio.
Cómo configurar Apache en FreeBSD 11
A la hora de configurar Apache en FreeBSD 11 es importante saber que la ruta donde se guardan los distintos archivos de configuración es /usr/local/etc/apache24/, siendo el archivo principal httpd.conf, en el que una serie de directivas se encargan de incluir el contenido de otros directorios y archivos de configuración.
Puede ser útil conocer el valor de ciertos valores por defecto de la configuración de Apache en FreeBSD 11:
- Usuario/Grupo con el que corre el servicio: www/www.
- Ruta del sitio web por defecto: /usr/local/www/apache24/data/, que es donde se encuentra el archivo index.html que contiene el mensaje que se muestra en la prueba de conexión, y que podríamos sustituir por el contenido de nuestra propia web en la configuración más simple posible.
- Archivos de registro: Tanto el registro de accesos como el registro de errores se guardan en la ruta /var/log/, en los archivos httpd-access.log y httpd-error.log respectivamente.
La mayoría de cambios en los archivos de configuración de Apache requerirán para su aplicación recargar los ajustes del servicio:
~$ sudo service apache24 reload
Otros cambios más importantes requerirán el reinicio del servicio:
~$ sudo service apache24 restart
Cómo configurar servidores virtuales de Apache en FreeBSD 11
Para configurar servidores virtuales de Apache en FreeBSD 11 la configuración por defecto tiene previsto el uso del correspondiente archivo de configuración incluido desde httpd.conf. Veámoslo editando el archivo principal:
~$ sudo nano /usr/local/etc/apache24/httpd.conf
Podemos encontrar la siguiente sección:
... # Virtual hosts #Include etc/apache24/extra/httpd-vhosts.conf ...
La directiva Include que incluiría el archivo httpd-vhosts.conf está desactivada por defecto, ya que el contenido de este archivo es un ejemplo de configuración que provocaría error de inicio del servicio. Podríamos modificar httpd-vhosts.conf para eliminar o desactivar las configuraciones de ejemplo e incluir la configuración de nuestros servidores virtuales, pero es mejor opción crear un directorio especial en el que almacenar cada configuración de servidor virtual en un archivo independiente.
En lugar de activar esta directiva Include, añadiremos otra con la ubicación de un nuevo directorio que crearemos posteriormente:
... # Virtual hosts #Include etc/apache24/extra/httpd-vhosts.conf Include etc/apache24/vhosts.d/*.conf ...
Observa que en ambos casos se trata de una ruta relativa, no empieza por /, y se añadirá al valor de la directiva ServerRoot presente en este mismo archivo, cuyo valor es /usr/local.
Guardados los cambios y cerrado el archivo, creamos el directorio que acabamos de especificar:
~$ sudo mkdir /usr/local/etc/apache24/vhosts.d
Ya podemos crear archivos de configuración independientes dentro de este directorio.
Para el ejemplo de este tutorial estamos usando como dominio principal (el que muestra la página por defecto) el subdominio freebsd11.local.lan, pero también usaremos un par de dominios ficticios como freebsd11.com y solofreebsd11.net. En el caso de dominios de Internet deberían estar registrados y configurados para apuntar al servidor FreeBSD 11, y en el caso de dominios de red local deberían estar configurados en el servidor DNS de la red. En cualquier caso, antes de realizar la configuración todos los dominios mostrarán la página por defecto:
Si los dominios funcionan de esta forma, podemos comenzar con la configuración de los servidores virtuales.
Servidor virtual por defecto
Empezaremos configurando el servidor virtual por defecto de Apache en FreeBSD 11, el que muestra la página web por defecto al acceder por dirección IP, nombre de red, dominio principal y cualquier otro dominio que apunte al servidor pero no tenga configuración propia como servidor virtual. Crearemos un archivo en el directorio que acabamos de preparar:
~$ sudo nano /usr/local/etc/apache24/vhosts.d/000-defecto.conf
El contenido será el siguiente:
<VirtualHost _default_:80> </VirtualHost>
Se trata de un bloque VirtualHost vacío que tomará como configuración por defecto los valores del archivo principal httpd.conf. Si te preguntas el por qué del nombre de archivo comenzando por ceros la respuesta es que Apache procesa archivos múltiples por orden alfabético, e interesa que el servidor virtual por defecto sea procesado en primer lugar.
Servidores virtuales adicionales
Ya podemos configurar el resto de servidores virtuales, pero antes crearemos ubicaciones para que residan los respectivos conjuntos de archivos web. Puedes usar los nombres que quieras, pero una costumbre muy usada se basa en utilizar como nombre de directorio el propio dominio a configurar:
~$ sudo mkdir /usr/local/www/apache24/freebsd11.com /usr/local/www/apache24/solofreebsd11.net
Dentro de cada uno de estos directorios situaríamos el contenido web. En este caso nos limitaremos a crear un archivo index.html simple:
~$ sudo nano /usr/local/www/apache24/freebsd11.com/index.html
Como ejemplo, el contenido será un mensaje de identificación:
<h1>Bienvenidos a freebsd11.com</h1> <span>Funciona con Apache en FreeBSD 11</span>
Guardamos los cambios y cerramos el archivo. Haríamos otro tanto con el resto de servidores virtuales.
Ahora crearemos uno a uno los archivos de configuración, donde también es buena idea usar los nombres de dominio como nombres de archivo:
~$ sudo nano /usr/local/etc/apache24/vhosts.d/freebsd11.com.conf
El contenido en esta ocasión será un bloque VirtualHost con la configuración exclusiva para el servidor virtual concreto:
<VirtualHost *:80> ServerName freebsd11.com DocumentRoot /usr/local/www/apache24/freebsd11.com <Directory /usr/local/www/apache24/freebsd11.com> Require all granted </Directory> ErrorLog /var/log/apache24/error-freebsd11.com.log CustomLog /var/log/apache24/access-freebsd11.com.log combined </VirtualHost>
La directiva ServerName hace referencia al dominio al que responderá este servidor virtual, DocumentRoot indica la ubicación de sus archivos web, el bloque Directory aplica opciones de configuración para ubicaciones concretas del sitio, en este caso al tratarse de la raíz de archivos web afectan a todo el sitio virtual, y la opción Require permite el acceso (inicialmente sólo está permitido el acceso a la ruta de archivos web del sitio por defecto).
Finalmente las directivas ErrorLog y CustomLog hacen referencia a los archivos en los que se registrarán los errores y accesos al sitio virtual (usando nuevamente nombres de archivo que ayudan a su fácil identificación). Hemos incluido dentro de las rutas de estos archivos el subdirectorio apache24/, que no existe aún, ya que si tenemos varios servidores virtuales puede ser útil concentrarlos y mantener despejado el directorio /var/log/. No debemos olvidar la creación del subdirectorio:
~$ sudo mkdir /var/log/apache24
Guardados los cambios y repetimos un proceso similar para el resto de servidores virtuales.
Al terminar la configuración, deberemos recargar los ajustes de Apache:
~$ sudo service apache24 reload
Si volvemos a acceder a los distintos dominios veremos que ahora cada uno responde a su propia configuración:
Cómo configurar seguridad SSL para Apache en FreeBSD 11
Hoy día resulta imprescindible configurar la seguridad SSL para Apache en FreeBSD 11, a no ser que estés trabajando sobre servicios de prueba o domésticos. Para sitios en Internet son necesarios certificados SSL firmados por autoridades certificadoras, que son los que ofrecen servicios profesionales como Namecheap:
Para pruebas o redes locales podrían bastar certificados autofirmados generados en la propia máquina FreeBSD 11 desde línea de comandos.
Configuración general
En primer lugar, Apache necesita cargar un módulo externo para trabajar con conexiones seguras. Dicho módulo no está activado por defecto, así que editamos httpd.conf:
~$ sudo nano /usr/local/etc/apache24/httpd.conf
Tendremos que activar la carga de este módulo y algún otro más relacionado, para lo que buscamos las siguientes directivas:
... #LoadModule socache_shmcb_module libexec/apache24/mod_socache_shmcb.so ... #LoadModule ssl_module libexec/apache24/mod_ssl.so ...
Y las activamos borrando el carácter # al inicio de línea:
... LoadModule socache_shmcb_module libexec/apache24/mod_socache_shmcb.so ... LoadModule ssl_module libexec/apache24/mod_ssl.so ...
El módulo SSL posee su propio archivo de configuración independiente, cuya carga está deshabilitada en httpd.conf, como podemos ver:
... # Secure (SSL/TLS) connections #Include etc/apache24/extra/httpd-ssl.conf ...
Obviamente, debemos activar la inclusión de este archivo:
... # Secure (SSL/TLS) connections Include etc/apache24/extra/httpd-ssl.conf ...
Guardados los cambios, editamos el archivo de configuración del módulo SSL:
~$ sudo nano /usr/local/etc/apache24/extra/httpd-ssl.conf
En este archivo, a continuación de la configuración general del módulo, se incluye un ejemplo de definición de un bloque VirtualHost para la versión SSL del servidor por defecto que provocará un error si se trata de aplicar la configuración tal cual aparece. Se podría borrar el bloque por completo, pero es mejor idea deshabilitarlo, de modo que podamos usarlo como referencia:
... #<VirtualHost _default_:443> #... #</VirtualHost>
Configuración SSL para los servidores virtuales
Ahora podemos configurar tanto el servidor virtual por defecto como el resto de servidores virtuales (si los hay).
Crearemos previamente un directorio donde almacenar las claves públicas y privadas:
~$ sudo mkdir /usr/local/etc/apache24/certificados.d
Ya podemos crear tantos pares de claves privada/pública como necesitemos, ya que se asociarán con los respectivos dominios, usando el comando openssl en cuyos parámetros se especifica la ruta y el nombre de estos certificados y claves.
Por ejemplo, para el servidor por defecto:
~$ sudo openssl req -newkey rsa:2048 -nodes -days 3650 -x509 -out /usr/local/etc/apache24/certificados.d/freebsd11.local.lan.crt -keyout /usr/local/etc/apache24/certificados.d/freebsd11.local.lan.key
Un script interactivo solicitará información (código de país, nombre de la organización, dirección de correo electrónico, etc.) sobre la entidad a la que representa el certificado que puede ser omitida, pero conviene que el valor Common Name corresponda al dominio del servidor virtual que estemos configurando, puesto que los navegadores comparan este dato con el dominio de la URL a la que se accede:
... Common Name (e.g. server FQDN or YOUR name) []:freebsd11.local.lan ...
Editaremos el archivo de configuración del servidor virtua por defectol:
~$ sudo nano /usr/local/etc/apache24/vhosts.d/000-defecto.conf
E incluiremos al final del mismo un nuevo bloque VirtualHost para la versión cifrada del sitio:
... <VirtualHost _default_:443> SSLEngine on SSLCertificateFile /usr/local/etc/apache24/certificados.d/freebsd11.local.lan.crt SSLCertificateKeyFile /usr/local/etc/apache24/certificados.d/freebsd11.local.lan.key </VirtualHost>
Estas nuevas directivas activan el modo de conexión segura e indican las rutas de la clave pública y privada que se emplearán para el cifrado.
Guardamos los cambios y cerramos el archivo.
Por cada servidor virtual adicional instalaremos los certificados (ya sean adquiridos o autofirmados) en la ruta específica y añadiremos un bloque VirtualHost similar, pero teniendo en cuenta su correspondiente archivo de configuración:
... <VirtualHost *:443> ServerName freebsd11.com DocumentRoot /usr/local/www/apache24/freebsd11.com <Directory /usr/local/www/apache24/freebsd11.com> Require all granted </Directory> ErrorLog /var/log/apache24/error-freebsd11.com.log CustomLog /var/log/apache24/access-freebsd11.com.log combined SSLEngine on SSLCertificateFile /usr/local/etc/apache24/certificados.d/freebsd11.com.crt SSLCertificateKeyFile /usr/local/etc/apache24/certificados.d/freebsd11.com.key </VirtualHost>
En este caso hay que repetir la configuración del bloque VirtualHost para conexión estándar o no segura (dominio, ruta de los archivos web, etc.) puesto que si no se toman los valores del servidor por defecto. Puede parecer raro tener que hacerlo, pero ofrece ventajas como poder servir sitios web distintos dependiendo de si la conexión es segura o no, separar el registro de accesos y errores también por tipo de acceso, etc.
Terminado todo el trabajo de configuración SSL, recargamos el servicio Apache:
~$ sudo service apache24 reload
Y probamos las versiones seguras de nuestros servidores virtuales, sustituyendo http por https en cada URL respectiva. Por ejemplo, para el servidor virtual por defecto de este tutorial usamos https://freebsd11.local.lan como URL:
Si hemos usado certificados autofirmados seguramente el navegador mostrará un aviso, que podremos saltar para continuar con la conexión. Por fin se mostrará la versión segura del sitio web:
Igualmente, la mayoría de navegadores seguirán mostrando algún indicativo de problemas con el certificado si lo hemos generado nosotros mismos, pero el sitio ya funciona correctamente.
Si hemos configurado varios servidores virtuales con sus correspondientes certificados, podremos probar también las conexiones seguras:
Conclusión
Ahora que sabes cómo instalar Apache en FreeBSD 11 ya puedes desplegar tantos sitios web como necesites sobre tu servidor ofreciendo conexiones seguras para tus visitantes, con la misma potencia que en otros sistemas operativos o versiones más modernas de FreeBSD.
¡Apoya comoinstalar.me!
¿Ya has conseguido instalar Apache en FreeBSD 11 gracias a nuestra guía? Si es así y deseas agradecérnoslo, puedes ayudarnos con el mantenimiento de este sitio y la creación de nuevos artículos dejando una propina de 1 $ desde PayPal:
O, si te sientes especialmente agradecido, invitándonos a un café:
¡Gracias!