Cómo instalar FEMP en FreeBSD 12

En este artículo explicamos cómo instalar una pila FEMP en FreeBSD 12 paso a paso, de modo que al final dispondrás del servidor web Nginx con PHP y servicio de bases de datos MariaDB/MySQL en tu servidor o VPS FreeBSD.

Antes de instalar FEMP en FreeBSD 12

Si tienes intención de seguir esta guía de instalación y configuración de la pila FEMP en FreeBSD 12, debes partir de las siguientes condiciones mínimas:

  • Una máquina FreeBSD 12 actualizada.
  • Acceso a consola como root o un usuario con privilegios de sudo.
  • Conexión a Internet.

Cómo instalar FEMP en FreeBSD 12

Para instalar la pila FEMP en FreeBSD 12 usaremos los paquetes de los que disponemos en los repositorios del sistema, por lo que es buena idea empezar actualizando las listas de paquetes:

~$ sudo pkg update

A la hora de instalar los elementos de la pila FEMP tenemos varias posibilidades para PHP, ya que disponemos desde la versión 7.3 a la 8.0, y para el servicio de bases de datos, donde podremos escoger entre MariaDB (versiones de la 10.3 a la 10.5) y MySQL (versiones 5.5, 5.6, 5.7 y 8.0).

Por ejemplo, para PHP 7.4 y MariaDB 10.5 instalaríamos los paquetes necesarios con el comando pkg:

~$ sudo pkg install -y nginx php74 php74-mysqli mariadb105-server

Puedes personalizar la instalación sustituyendo MariaDB por MySQL, indicando el paquete mysqlXX-server en lugar de mariadbXXX-server. Y también puedes cambiar la versión de PHP cambiando los paquetes con php74 por php73 ó php80.

En cualquier caso, tras la descarga e instalación de estos paquetes y sus dependencias se crean tres nuevos servicios en FreeBSD 12, llamados nginx, mysql-server y php-fpm. Ninguno de estos servicios está en ejecución ni habilitado para su inicio automático junto a FreeBSD 12, por lo que tendremos que habilitarlos y arrancarlos manualmente.

MariaDB/MySQL

Independientemente de si has instalado MariaDB o MySQL, el servicio se llama igual, mysql-server. Habilitamos el servicio:

~$ sudo service mysql-server enable

Y a continuación lo arrancamos:

~$ sudo service mysql-server start

PHP

En el caso del servicio php-fpm lo habilitaremos:

~$ sudo service php-fpm enable

Y lo iniciaremos:

~$ sudo service php-fpm start

Nginx

Para el servidor web, habilitamos el servicio nginx:

~$ sudo service nginx enable

Y lo iniciamos:

~$ sudo service nginx start

Cómo configurar FEMP en FreeBSD 12

Aunque los servicios ya están habilitados e iniciados, es necesario configurar la pila FEMP en FreeBSD 12 para que todos los engranajes giren a la vez.

MariaDB/MySQL

Para asignar una contraseña al usuario root del servicio de bases de datos, y eliminar la base de pruebas y los usuarios anónimos, lanzaremos el script interactivo mysql_secure_installation:

~$ sudo mysql_secure_installation

Por ejemplo, en el caso de MariaDB el script comienza  pidiendo la contraseña actual de root, que no tiene.

Se nos preguntará si queremos que el usuario root use autenticación por contraseña o mediante el plugin unix_socket, eligiendo lo que nos interese.

Al resto de preguntas, sobre la base de datos de pruebas, usuarios anónimos, acceso remoto de root, etc. contestaremos afirmativamente.

PHP

La configuración de PHP para el servicio PHP-FPM se lee del archivo php.ini que aún no existe. El paquete de PHP instala los archivos de muestra php.ini-production y php.ini-development para entornos de producción y desarrollo, respectivamente. Podemos crear un enlace simbólico a uno de estos archivos, o copiarlo, como php.ini.

Si, por ejemplo, se trata de un entorno de desarrollo, creamos un enlace simbólico a php.ini-development:

~$ sudo ln -s /usr/local/etc/php.ini-development /usr/local/etc/php.ini

Para cualquier ajuste que necesitemos realizar editaremos php.ini:

~$ sudo nano /usr/local/etc/php.ini

Un ajuste que siempre debe hacerse es el de la zona horaria del servidor, a través de la directiva date.timezone:

...
[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
;date.timezone =
...

Le daremos el valor que corresponda y eliminaremos el carácter ; inicial para activarla:

...
date.timezone = Europe/Madrid
...

En el caso de trabajar concretamente con MariaDB 10.5 será necesario indicar la ruta de su archivo de socket, para lo que buscamos las siguientes directivas:

...
pdo_mysql.default_socket=
...
mysqli.default_socket =
...

Y les damos el valor adecuado, que en el caso de la versión 10.5 es /var/run/mysql/mysql.sock:

...
pdo_mysql.default_socket=/var/run/mysql/mysql.sock
...
mysqli.default_socket = /var/run/mysql/mysql.sock
...

Hecho estos o cualesquiera otros cambios, una vez guardado el archivo php.ini conviene recargar la configuración del servicio PHP-FPM para asegurarnos de que queden aplicados:

~$ sudo service php-fpm reload

Nginx

Vamos a crear un directorio para configuraciones adicionales de Nginx:

~$ sudo mkdir /usr/local/etc/nginx/include.d/

Y creamos un archivo de configuración para conectar Nginx con el servicio PHP-FPM:

~$ sudo nano /usr/local/etc/nginx/include.d/php-fpm.conf

El contenido será este:

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
        fastcgi_pass   127.0.0.1:9000;
        include fastcgi_params;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
}

Editamos la configuración del sitio web por defecto de Nginx, en el archivo nginx.conf:

~$ sudo nano /usr/local/etc/nginx/nginx.conf

Dentro del bloque server principal, buscamos el bloque location de la carpeta raíz de documentos web:

...
        location / {
            root   /usr/local/www/nginx;
            index  index.html index.htm;
        }
...

Haremos una serie de cambios como sacar la directiva root fuera del bloque para que sirva de valor por defecto a cualquier directiva location, añadimos el archivo index.php a la directiva index, añadimos la directiva try_files para manejar las URIs correctamente e incluimos la configuración de PHP:

...
    server {
...
        root /usr/local/www/nginx;
        location / {
            index  index.php index.html index.htm;
            try_files $uri $uri/ index.php?$args;
            include include.d/php-fpm.conf;
        }
...

Esta directiva include se debe añadir de forma similar en las configuraciones de los servidores virtuales (si existen).

Terminados los cambios, recargamos la configuración de Nginx:

~$ sudo service nginx reload

Cómo probar FEMP en FreeBSD 12

Para probar la pila FEMP en FreeBSD 12 crearemos un pequeño script realizado en PHP fácilmente accesible vía web:

~$ sudo nano /usr/local/www/nginx/info.php

Con este contenido:

<?php phpinfo();

Guardamos los cambios y accedemos desde un navegador, añadiendo la ruta /info.php a la dirección IP, nombre DNS o dominio del servidor FreeBSD 12 en el que hemos instalado la pila FEMP.

Por ejemplo, la máquina FreeBSD 12 sobre la que hemos redactado este tutorial es accesible en el subdominio freebsd12.local.lan, así que podemos utilizar http://freebsd12.local.lan/info.php como URL:

como instalar y configurar femp en freebsd 12

Si elegiste otra versión, como PHP 8.0, se mostrará la información correspondiente.

instalacion y configuracion de la pila femp en freebsd 12

Conclusión

Ya sabes cómo instalar y configurar la pila FEMP en FreeBSD 12, con lo que podrás instalar y desarrollar aplicaciones web sobre tu servidor o VPS, usando como servidor web Nginx.

¡Apoya comoinstalar.me!

¿Ya tienes el entorno funcionando gracias a esta guía de instalación y configuración de la pila FEMP en FreeBSD 12? Si es así y te apetece agradecérnoslo, cualquier pequeña aportación ayuda mucho al mantenimiento de este sitio y la creación de más tutoriales, y puedes hacerlo dejando una propina a partir de 1 $ desde PayPal:

¡Gracias!

Valora esta entrada

5/5 - (1 voto)

Deja un comentario