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.