Instalar Nginx, MariaDB y PHP (pila FEMP) en FreeBSD 12

Una pila FEMP (FreeBSD, Nginx, MySQL/MariaDB, PHP) es un grupo de aplicaciones que pueden alojar sitios web dinámicos y aplicaciones web, especialmente aplicaciones basadas en PHP. La Pila FEMP es similar a la Pila LEMP en el mundo Linux, basada en las mismas aplicaciones: Nginx como servidor web, MySQL/MariaDB como base de datos y PHP como lenguaje de procesamiento de aplicaciones.

Este tutorial te mostrará cómo configurar la Pila FEMP en FreeBSD 12.0. Instalaremos el servidor web Nginx, instalaremos la base de datos MariaDB, configuraremos su contraseña raíz y, a continuación, instalaremos y configuraremos la última versión de PHP-FPM 7.3.

Requisitos previos

Para esta guía, utilizaremos la última versión de FreeBSD 12.0 con 1GB de RAM y 2 CPUs. Necesitarás privilegios de root para instalar nuevos paquetes y editar la configuración de los archivos del sistema.

Qué haremos

  • Actualizar y actualizar paquetes
  • Instalar el Servidor Web Nginx
  • Instalar y Configurar la Base de Datos MariaDB
  • Instalar y configurar PHP-FPM 7.3
  • Configurar el Servidor Web Nginx y PHP-FPM 7.3
  • Probar

Paso 1 – Actualizar y actualizar paquetes

En primer lugar, actualizaremos el repositorio de paquetes de FreeBSD y actualizaremos todos los paquetes instalados a la última versión.

Actualiza el repositorio de FreeBSD y actualiza todos los paquetes usando el comando pkg que aparece a continuación.

pkg update
pkg upgrade

Una vez completada la instalación, pasa al siguiente paso.

Paso 2 – Instalar el servidor web Nginx

En este paso, vamos a instalar el servidor web Nginx desde el repositorio oficial de FreeBSD. A continuación, añade el servicio Nginx al arranque, e inicia el servicio.

Instala Nginx utilizando el comando pkg que aparece a continuación.

pkg install nginx

Una vez completada la instalación, añade el servicio Nginx al arranque del sistema.

sysrc nginx_enable=yes

A continuación, inicia el servidor web Nginx y comprueba el servicio.

service nginx start
service nginx status

El servidor web Nginx está funcionando en el sistema FreeBSD 12.0.

Comprueba la lista de puertos abiertos del sistema y asegúrate de que aparece el puerto HTTP 80.

sockstat -4 -l -P tcp

A continuación se muestra el resultado.

Paso 3 – Instalar y configurar MariaDB

En este paso vamos a instalar la base de datos MariaDB desde el repositorio de FreeBSD y a configurar para ella la autenticación con contraseña de root.

El repositorio FreeBSD proporciona múltiples versiones de MariaDB, puedes comprobarlo utilizando el siguiente comando.

pkg search mariadb

Ahora obtendrás la versión múltiple de la base de datos MariaDB.

Ahora instala la última versión del paquete ‘mariadb103’ tanto para el cliente como para el servidor utilizando el comando pkg que aparece a continuación.

pkg install mariadb103-server mariadb103-client

Una vez finalizada la instalación, añade el servicio MariaDB/MySQL al arranque del sistema.

sysrc mysql_enable="yes"

A continuación, inicia el servicio MariaDB/MySQL y comprueba su estado utilizando el comando que aparece a continuación.

service mysql-server start
service mysql-server status

Ahora obtendrás el resultado que se muestra a continuación.

La base de datos MariaDB está en funcionamiento en el sistema FreeBSD 12.0.

A continuación, configuraremos la autenticación de la contraseña de root para la base de datos MariaDB utilizando la herramienta de línea de comandos bash ‘mysql_secure_installation’.

Ejecuta el comando ‘mysql_secure_installation’ que aparece a continuación.

/usr/local/bin/mysql_secure_installation

Se te harán varias preguntas, simplemente teclea ‘Y’ para sí para todas y pulsa el botón ‘Intro’.

Set root password? [Y/n] Y
TYPE YOUR ROOT PASSWORD
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y

Como resultado, se ha configurado la autenticación de la contraseña de root para la base de datos MariaDB.

A continuación, iniciaremos sesión en el intérprete de comandos MariaDB/MySQL utilizando la contraseña y comprobaremos las listas de bases de datos y usuarios.

Accede al intérprete de comandos MySQL utilizando el siguiente comando.

mysql -u root -p
TYPE PASSWORD:

Una vez que hayas accedido a la shell, comprueba la lista de bases de datos y los usuarios utilizando las consultas MySQL que se indican a continuación.

show databases;
select User, Host, Password from mysql.user;

Y obtendrás el resultado que se indica a continuación.

Como resultado, podrás iniciar sesión en tu servidor MariaDB/MySQL con la contraseña que se ha configurado.

Paso 4 – Instalar y configurar PHP-FPM 7.3

En este paso, vamos a instalar los paquetes PHP y PHP-FPM 7.3 en el sistema FreeBSD 12.0. Y luego configurar la configuración global de PHP ‘php.ini’ y el archivo de configuración de PHP-FPM ‘www.conf’.

Instala los paquetes PHP y PHP-FPM utilizando el comando pkg que aparece a continuación.

pkg install php73 php73-mysqli php73-zlib php73-gd php73-json php73-mbstring php73-curl

Una vez completada la instalación, ve al directorio ‘/usr/local/etc’ y copia el archivo de configuración ‘php.ini-production’ en ‘php.ini’.

cd /usr/local/etc/
cp php.ini-production php.ini

Ahora edita el archivo ‘php.ini’ utilizando el editor vim.

vim php.ini

Descomenta la línea ‘cgi.fix_pathinfo’ y cambia el valor a ‘0’.

cgi.fix_pathinfo=0

Guárdalo y ciérralo.

A continuación, editaremos el archivo ‘www.conf’ de configuración de PHP-FPM y configuraremos el PHP-FPM para que se ejecute en los sockets de archivos UNIX.

Ve al directorio ‘cd /usr/local/etc/php-fpm.d’ y edita el archivo de configuración ‘www.conf’ utilizando el editor vim.

vim php-fpm.d/www.conf

Cambia las líneas ‘user’ y ‘group’ por ‘www’.

user = www
group = www

Cambia el valor de la línea ‘listen’ por el archivo de socket UNIX ‘/var/run/php-fpm.sock’.

listen = /var/run/php-fpm.sock

Descomenta la línea listen del propietario, grupo y modo para el archivo socket. Deja el valor por defecto.

listen.owner = www
listen.group = www
listen.mode = 0660

Ahora ve al final de la línea y descomenta la configuración del Entorno PHP como se indica a continuación.

env[HOSTNAME] = $HOSTNAME 
env[PATH] = /usr/local/bin:/usr/bin:/bin 
env[TMP] = /tmp 
env[TMPDIR] = /tmp 
env[TEMP] = /tmp

Guarda y cierra.

A continuación, añade el servicio PHP-FPM al arranque del sistema.

sysrc php_fpm_enable=yes

A continuación, inicia el servicio PHP-FPM y comprueba su estado.

service php-fpm start
service php-fpm status

Ahora el servicio PHP-FPM está en marcha en el sistema FreeBSD 12.0.

Comprueba el PHP-FPM comprobando su socket UNIX utilizando el comando sockstat que aparece a continuación.

sockstat -u | grep php-fpm

Y se te mostrará el resultado como se indica a continuación.

Como resultado, el servicio PHP-FPM se está ejecutando en el socket UNIX bajo el usuario ‘www’.

Paso 5 – Configurar Nginx y PHP-FPM

Ahora configuraremos el servidor web Nginx y PHP-FPM.

Ve al directorio ‘/usr/local/etc/nginx’ y edita el archivo ‘nginx.conf’ utilizando el editor vim.

cd /usr/local/etc/nginx
vim nginx.conf

Cambia el ‘usuario’ de nginx que se ejecuta como ‘www’ y el ‘worker_processes’ por el número del procesador de tu servidor.

user www;
worker_processes  2;

Dentro de la configuración ‘http { … }’, define los registros de Nginx para los registros de acceso y de errores.

http {
    ...
    error_log  /var/log/nginx/error.log; 
    access_log /var/log/nginx/access.log;
    ...
}

Ahora pasa a la configuración del corchete ‘servidor { … }’ y cambia el ‘nombre_servidor’ por tu dominio o dirección IP del servidor.

    ....
    server {
        server_name SERVER-IP;

Define el directorio raíz de la web y el archivo index.

        root   /usr/local/www/nginx;
        index  index.php index.html index.htm;

location / {
try_files $uri $uri/ =404;
}

Ahora pega la siguiente configuración para que el PHP-FPM funcione con el servidor web Nginx.

        location ~ \.php$ {
            try_files $uri =404;
            fastcgi_split_path_info ^(.+\.php)(/.+)$;
            fastcgi_pass unix:/var/run/php-fpm.sock;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME $request_filename;
            include fastcgi_params;
        }

Guarda y cierra.

A continuación se muestra la configuración completa del archivo ‘nginx.conf’.

user  www;
worker_processes  2;
pid        logs/nginx.pid;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    error_log  /var/log/nginx/error.log; 
    access_log /var/log/nginx/access.log;

    sendfile        on;
    keepalive_timeout  65;

    server {
        listen       80;
        server_name  localhost;

        root   /usr/local/www/nginx;
        index  index.php index.html index.htm;

        location / {
            try_files $uri $uri/ =404;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   /usr/local/www/nginx-dist;
        }

        location ~ \.php$ {
            try_files $uri =404;
            fastcgi_split_path_info ^(.+\.php)(/.+)$;
            fastcgi_pass unix:/var/run/php-fpm.sock;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME $request_filename;
            include fastcgi_params;
        }
    }
}

A continuación, crearemos el directorio raíz del documento Nginx ‘/usr/local/www/nginx’ y crearemos el archivo index.html.

Elimina el directorio symlink por defecto ‘/usr/local/www/nginx’ y crea otro directorio.

unlink /usr/local/www/nginx
mkdir -p /usr/local/www/nginx

Ahora ve al directorio ‘/usr/local/www’ y copia el archivo por defecto ‘index.html’ del directorio ‘nginx-dist’.

cd /usr/local/www/
cp nginx-dist/index.html nginx/

A continuación, crea un nuevo archivo PHP ‘info.php’ en el nuevo directorio raíz de la web.

vim nginx/info.php
<?php
phpinfo();
?>

Guárdalo y ciérralo.

Ahora prueba la configuración de nginx y asegúrate de que no hay ningún error, luego reinicia el servicio Nginx.

nginx -t
service nginx restart

Y se te mostrará el resultado como se indica a continuación.

Como resultado, la configuración de nginx no tiene ningún error y el servicio se ha reiniciado. La configuración de Nginx y PHP-FPM 7.3 se ha completado.

Paso 6 – Pruebas

Abre tu navegador web y escribe la dirección IP del servidor en la barra de direcciones.

http://10.5.5.25/

Ahora obtendrás la página inde.html predeterminada de Nginx como se muestra a continuación.

A continuación, probaremos nuestra configuración de Nginx y PHP-FPM accediendo al archivo ‘info.php’.

http://10.5.5.25/info.php

Ahora obtendrás información sobre tu instalación y configuración de PHP.

Como resultado, la instalación y configuración de la Pila FEMP en FreeBSD 12.0 se ha completado con éxito.

Referencia

También te podría gustar...