Cómo instalar Apache en FreeBSD 13

En esta ocasión veremos cómo instalar el servidor web Apache en FreeBSD 13 paso a paso, con lo que podrás servir páginas y aplicaciones web desde tu servidor o VPS FreeBSD usando conexiones seguras, incluso con servidores virtuales para ofrecer múltiples sitios.

Antes de instalar Apache en FreeBSD 13

Si quieres seguir los pasos de esta guía de instalación del servicio web Apache en FreeBSD 13 será necesario partir del siguiente escenario:

  • Un sistema FreeBSD 13 actualizado.
  • Acceso a línea de comandos con un usuario con permisos de sudo.
  • Conexión a Internet.
  • Opcionalmente, otras máquinas en red desde las que probar el servicio.

Cómo instalar Apache en FreeBSD 13

Vamos a instalar Apache en FreeBSD 13 utilizando los paquetes disponibles en el repositorio del sistema, por lo que actualizaremos las listas de paquetes:

~$ sudo pkg update

El paquete que instalaremos con pkg será apache24:

~$ sudo pkg install -y apache24

Tras la descarga e instalación de Apache y sus dependencias se crea un nuevo servicio en FreeBSD 13, el servicio apache24 que tendremos que habilitar para trabajar con él:

~$ sudo service apache24 enable

Ahora ya podemos iniciar el servicio web por primera vez:

~$ sudo service apache24 start

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

~$ sudo service apache24 status
apache24 is running as pid 1191.

como instalar el servidor web apache en freebsd 13

Versión instalada

Si necesitas saber con qué versión del servidor web estás trabajando puedes averiguarlo con el comando apachectl:

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

Cómo probar Apache en FreeBSD 13

Podemos probar el nuevo servicio Apache de nuestra máquina FreeBSD 13 desde un navegador local o desde otra máquina en red, utilizando como URL la dirección IP, nombre DNS, dominio, localhost (si trabajamos localmente), etc.

Por ejemplo, la máquina FreeBSD 13 sobre la que redactamos este tutorial es accesible en el subdominio freebsd13.local.lan, así que usaremos http://freebsd13.local.lan como URL:

como instalar el servidor apache en freebsd 13

Obtendremos la página del sitio web por defecto.

Para mostrar nuestra propia página web habrá que borrar el contenido del directorio /usr/local/www/apache24/data/ y copiar nuestros archivos web.

Cómo configurar el servicio Apache en FreeBSD 13

Para configurar Apache en FreeBSD 13 trabajaremos sobre sus archivos de configuración, alojados en la ruta /usr/local/etc/apache24/, siendo httpd.conf el archivo principal.

La mayoría de ajustes se pueden aplicar recargando la configuración del servicio:

~$ sudo service apache24 reload

Aunque en algunos casos será necesario reiniciarlo:

~$ sudo service apache24 restart

Configurar conexiones SSL por HTTPS en Apache para FreeBSD 13

Si quieres ofrecer conexiones seguras a tus visitantes, algo primordial cuando estamos trabajando con un servidor FreeBSD 13 en Internet, será necesario cifrar la conexión usando claves y certificados SSL firmados por autoridades certificadoras, como los que ofrecen servicios profesionales como Namecheap:

SSL Certificate for just $8.88 with Namecheap

En caso de un servidor de pruebas, una red doméstica, etc. podrías usar un certificado autofirmado creado por ti mismo con el comando openssl.

Creamos un directorio donde guardar los archivos de clave privada y certificado público:

~$ sudo mkdir /usr/local/etc/apache24/certificados.d

En este directorio guardaremos los archivos de claves y certificados sea cual sea su procedencia.

Por ejemplo, en el caso de crearlos con openssl, indicamos como parámetros esta ubicación para la clave y el certificado:

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

Este comando incorpora cierta información pública al certificado, solicitándola de forma interactiva en consola. Es importante que en el campo «Common Name» especifiquemos el nombre de máquina, nombre DNS, dominio, etc. que vaya a usarse en las conexiones:

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

Para trabajar con conexiones SSL mediante el protocolo HTTPS es necesario activar el módulo de Apache correspondiente, ya que en FreeBSD 13 no viene configurado por defecto. Puedes comprobar fácilmente que módulos de Apache cargan por defecto en FreeBSD 13 con el comando apachectl:

~$ apachectl -M
Loaded Modules:
 core_module (static)
 so_module (static)
 http_module (static)
 mpm_prefork_module (shared)
 authn_file_module (shared)
 authn_core_module (shared)
 authz_host_module (shared)
 authz_groupfile_module (shared)
 authz_user_module (shared)
 authz_core_module (shared)
 access_compat_module (shared)
 auth_basic_module (shared)
 reqtimeout_module (shared)
 filter_module (shared)
 mime_module (shared)
 log_config_module (shared)
 env_module (shared)
 headers_module (shared)
 setenvif_module (shared)
 version_module (shared)
 unixd_module (shared)
 status_module (shared)
 autoindex_module (shared)
 dir_module (shared)
 alias_module (shared)

Editamos el archivo httpd.conf:

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

Buscamos la siguiente directiva:

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

Para activarla eliminamos el carácter # al inicio de línea:

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

Haremos igual con la directiva para cargar el módulo de caché de sesión:

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

Para activar las conexiones seguras en el sitio web por defecto (el que probamos anteriormente), localizamos esta otra directiva:

...
#Include etc/apache24/extra/httpd-ssl.conf
...

Y la activamos igualmente:

...
Include etc/apache24/extra/httpd-ssl.conf
...

Guardamos los cambios y cerramos el archivo.

Ahora editamos el arhivo de configuración que incluye la directiva anterior:

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

Vamos a configurar la clave y el certificado, tanto si se trata de certificados firmados como autofirmados. Localizamos la directiva SSLCertificateFile:

...
SSLCertificateFile "/usr/local/etc/apache24/server.crt"
...

Modificamos su valor por el que corresponda, en este caso se tratará del certificado autofirmado que acabamos de crear:

...
SSLCertificateFile "/usr/local/etc/apache24/certificados.d/freebsd13.local.lan.crt"
...

Buscamos la directiva SSLCertificateKeyFile:

...
SSLCertificateKeyFile "/usr/local/etc/apache24/server.key"
...

Y cambiamos el valor por defecto por la ruta de la clave privada que vamos a usar:

...
SSLCertificateKeyFile "/usr/local/etc/apache24/certificados.d/freebsd13.local.lan.key"
...

En algunas ocasiones disponemos también de un archivo de cadena, para lo que existe una directiva SSLCertificateChainFile que en la configuración por defecto está desactivada. Actívala y ajusta su valor si dispones de dicho archivo de cadena.

Guardamos y cerramos este archivo y reiniciamos el servicio:

~$ sudo service apache24 restart

No es necesario, pero ahora puedes comprobar que el módulo SSL está cargado:

~$ apachectl -M
Loaded Modules:
 core_module (static)
 so_module (static)
 http_module (static)
 mpm_prefork_module (shared)
 authn_file_module (shared)
 authn_core_module (shared)
 authz_host_module (shared)
 authz_groupfile_module (shared)
 authz_user_module (shared)
 authz_core_module (shared)
 access_compat_module (shared)
 auth_basic_module (shared)
 socache_shmcb_module (shared)
 reqtimeout_module (shared)
 filter_module (shared)
 mime_module (shared)
 log_config_module (shared)
 env_module (shared)
 headers_module (shared)
 setenvif_module (shared)
 version_module (shared)
 ssl_module (shared)
 unixd_module (shared)
 status_module (shared)
 autoindex_module (shared)
 dir_module (shared)
 alias_module (shared)

Cómo probar las conexiones seguras

Podemos comprobar que el módulo SSL funciona correctamente accediendo a la página web por defecto de Apache en FreeBSD 13, pero cambiando http:// por https:// en la URL.

En el ejemplo de este tutorial, ahora usamos https://freebsd13.local.lan como URL. Si usamos certificados autofirmados el navegador mostrará un aviso similar al siguiente:

como instalar y configurar apache en freebsd 13

Esto es debido a que el navegador no puede comprobar la veracidad del certificado (por eso es importante usar certificados firmados por autoridades certificadoras en los sitios web en Internet). Dependiendo del navegador permitirá de alguna forma continuar con la conexión y se mostrará la versión segura del sitio web por defecto:

instalacion y configuracion del servicio web apache en freebsd 13

Justo lo que queríamos.

Servidores virtuales de Apache en FreeBSD 13

Si quieres servir distintos sitios web desde tu máquina FreeBSD 13 utilizando distintos dominios y subdominios necesitaremos disponer de dichos dominios configurados y apuntando al servidor. En el caso de un servidor web en Internet tendremos que registrar y configurar los distintos dominios a través de algún servicio como Namecheap, el sitio que usamos nosotros:

Si se trata de una red local habría que configurar los dominios y subdominios en el servidor DNS de la red, y si se trata de pruebas locales en la misma máquina FreeBSD 13 podemos darlos de alta en el archivo /etc/hosts.

En este ejemplo trabajaremos, además del dominio principal freebsd13.local.lan, con el subdominio blog.freebsd13.local.lan y un dominio freebsd13.net, todos ellos debidamente configurados:

servidores virtuales de apache en freebds 13

Preparativos previos

Crearemos las rutas para guardar los archivos web de cada sitio adicional:

~$ sudo mkdir /usr/local/www/apache24/{blog.freebsd13.local.lan,freebsd13.net}

Si disponemos de los archivos web de los distintos sitios, podemos copiarlos en sus ubicaciones definitivas. Para este ejemplo crearemos un archivo index.html para cada servidor virtual:

~$ sudo nano /usr/local/www/apache24/blog.freebsd13.local.lan/index.html

El contenido será el mínimo que nos permita identificar los sitios:

<h1>Bienvenidos a blog.freebsd13.local.lan</h1>

Configuración de los servidores virtuales

Crearemos un directorio propio para los archivos de registro de eventos, o logs, de los servidores virtuales:

~$ sudo mkdir /var/log/apache24

Creamos un directorio específico para guardar los archivos de configuración de los servidores virtuales:

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

Editamos el archivo de configuración principal para incluir las configuraciones que guardemos en el directorio anterior:

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

Al final del archivo añadimos la siguiente directiva:

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

Una vez guardado el archivo, pasamos a crear las configuraciones de cada servidor virtual. Empezamos con el primer archivo:

~$ sudo nano /usr/local/etc/apache24/sites.d/blog.freebsd13.local.lan.conf

El contenido mínimo será el siguiente:

<VirtualHost *:80>
        ServerName blog.freebsd13.local.lan
        DocumentRoot /usr/local/www/apache24/blog.freebsd13.local.lan

        <Directory /usr/local/www/apache24/blog.freebsd13.local.lan>
                Options -Indexes
                Require all granted
        </Directory>

        ErrorLog /var/log/apache24/error_blog.freebsd13.local.lan
        CustomLog /var/log/apache24/access_blog.freebsd13.local.lan combined
</VirtualHost>

Ya podemos guardar y cerrar el nuevo archivo.

En el bloque VirtualHost podemos encontrar lo siguiente:

  • La directiva ServerName indica a qué dominio o subdominio responde este servidor virtual.
  • En DocumentRoot especificamos el directorio en el que se guardan los archivos web.
  • El bloque Directory permite realizar configuraciones personalizadas para el directorio indicado, en este caso para el que contiene los archivos web del sitio. Especialmente importante es la directiva Require que permite trabajar con el directorio indicado, ya que por defecto sólo se permite el acceso al directorio de documentos del sitio web principal.
  • Las directivas ErrorLog y CustomLog indican la ubicación y nombre de los archivos de registro de eventos para errores y accesos, respectivamente.

Para el otro servidor virtual del ejemplo crearíamos su propio archivo de configuración con los ajustes adecuados:

<VirtualHost *:80>
        ServerName freebsd13.net
        DocumentRoot /usr/local/www/apache24/freebsd13.net

        <Directory /usr/local/www/apache24/freebsd13.net>
                Options -Indexes
                Require all granted
        </Directory>

        ErrorLog /var/log/apache24/error_freebsd13.net.log
        CustomLog /var/log/apache24/access_freebsd13.net.log combined
</VirtualHost>

El último detalle que nos queda es configurar el sitio web por defecto para que lo siga siendo, ya que de no hacerlo se considerará sitio por defecto el primer servidor virtual cargado (se cargan por orden alfabético). Para ello creamos un nuevo archivo de configuración de servidor virtual:

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

Con este contenido:

<VirtualHost _default_:80>
</VirtualHost>

El contenido es mínimo, ya que todo lo que no se especifica aquí se toma de la configuración del archivo httpd.conf. Usando el parámetro _default_ no es necesario preocuparse del nombre del archivo de configuración (en cuanto a orden alfabético).

Con todas las configuraciones listas podemos recargar la configuración de Apache para que las incorpore:

~$ sudo service apache24 reload

Por fin podemos probar nuestros nuevos servidores virtuales:

como configurar servidores virtuales de apache en freebsd 13

Funciona justo como se espera.

Servidores virtuales con seguridad SSL

Si queremos incorporar seguridad SSL a nuestros servidores virtuales sólo tendremos que disponer de los archivos de claves y certificados para los distintos sitios, ya sean firmados o autofirmados. A continuación podemos editar sus archivos de configuración y añadir un bloque VirtualHost adicional específico para el puerto HTTPS, el 443:

...
<VirtualHost *:443>
        ServerName blog.freebsd13.local.lan
        DocumentRoot /usr/local/www/apache24/blog.freebsd13.local.lan

        <Directory /usr/local/www/apache24/blog.freebsd13.local.lan>
                Options -Indexes
                Require all granted
        </Directory>

        SSLEngine On
        SSLCertificateFile /usr/local/etc/apache24/certificados.d/blog.freebsd13.local.lan.crt
        SSLCertificateKeyFile /usr/local/etc/apache24/certificados.d/blog.freebsd13.local.lan.key

        ErrorLog /var/log/apache24/error_blog.freebsd13.local.lan
        CustomLog /var/log/apache24/access_blog.freebsd13.local.lan combined
</VirtualHost>

Básicamente se trata de una repetición del bloque VirtualHost existente pero cambiando el puerto y añadiendo las directivas que activan el modo HTTPS y cargan las claves y certificados SSL. Por supuesto, podrías indicar una ubicación distinta para los archivos web (si quieres que el sitio HTTP sea distinto del HTTPS), archivos de registro distintos, etc.

Para el caso del sitio web por defecto no es necesario modificar nada, ya que el archivo que editamos en pasos anteriores ya tiene esta estructura.

Con todas las modificaciones realizadas, recargamos el servicio y probamos las conexiones HTTPS a los distintos sitios:

~$ sudo service apache24 reload

¡Perfecto!

Conclusión

Ahora que sabes cómo instalar Apache en FreeBSD 13 ya puedes servir páginas y aplicaciones web desde tu máquina, pudiendo utilizar distintos servidores virtuales, conexiones seguras con cifrado SSL, etc.

Si tienes alguna duda, pregunta, sugerencia, etc. puedes dejar un comentario. Los comentarios están moderados, para evitar SPAM, pero se revisan prácticamente a diario.

¡Apoya comoinstalar.me!

¿Ya puedes ofrecer sitios web a tus visitantes gracias a esta pequeña guía de instalación y configuración? Si es así y quieres agradecérnoslo, puedes hacerlo con una ayuda para mantener este sitio dejando una propina a partir de 1 $ desde PayPal:

O, si te sientes especialmente agradecido, puedes invitarnos a un café:

¡Gracias!

Valora esta entrada

5/5 - (2 votos)

Deja un comentario