Cómo configurar la pila FEMP (FreeBSD, Nginx, MySQL 8 y PHP 7.4) en FreeBSD 12

Una pila FEMP, que es similar a una pila LEMP en Linux, es una colección de software de código abierto que suele instalarse conjuntamente para permitir que un servidor FreeBSD aloje sitios web dinámicos y aplicaciones web. FEMP es un acrónimo que significa FreeBSD(sistema operativo), Nginx (servidor HTTP pronunciado Engine-x), MySQL(servidor de base de datos) y PHP(lenguaje de programación para procesar contenido PHP dinámico).

En este tutorial, configuraremos los componentes de una pila FEMP en un servidor FreeBSD 12.1 utilizando pkg, el gestor de paquetes de FreeBSD.

Requisitos

Antes de empezar esta guía, necesitarás lo siguiente:

  • Un servidor FreeBSD 12.1.
  • Un usuario con privilegios de root o sudo usuario para realizar cambios en la configuración.
  • Se recomienda una familiaridad básica con el sistema FreeBSD y la interfaz de línea de comandos.

Pasos iniciales

Comprueba la versión de FreeBSD.

uname -ro
# FreeBSD 12.1-RELEASE

Asegúrate de que tu sistema FreeBSD está actualizado.

freebsd-update fetch install
pkg update && pkg upgrade -y

Instala los paquetes necesarios.

pkg install -y sudo vim bash curl

Crea una nueva cuenta de usuario con tu nombre de usuario preferido. Nosotros utilizamos johndoe.

adduser
# Username: johndoe
# Full name: John Doe
# Uid (Leave empty for default): <Enter>
# Login group [johndoe]: <Enter>
# Login group is johndoe. Invite johndoe into other groups? []: wheel
# Login class [default]: <Enter>
# Shell (sh csh tcsh nologin) [sh]: bash
# Home directory [/home/johndoe]: <Enter>
# Home directory permissions (Leave empty for default): <Enter>
# Use password-based authentication? [yes]: <Enter>
# Use an empty password? (yes/no) [no]: <Enter>
# Use a random password? (yes/no) [no]: <Enter>
# Enter password: your_secure_password
# Enter password again: your_secure_password
# Lock out the account after creation? [no]: <Enter> 
# OK? (yes/no): yes
# Add another user? (yes/no): no
# Goodbye!

Ejecuta el comando visudo y descomenta la línea %wheel ALL=(ALL) ALL, para permitir a los miembros del grupo wheel ejecutar cualquier comando.

visudo

# Uncomment by removing hash (#) sign
# %wheel ALL=(ALL) ALL

Ahora, cambia a tu usuario recién creado con su:

su - johndoe

NOTA: Sustituye johndoe por tu nombre de usuario.

Configura la zona horaria:

sudo tzsetup

Paso 1 – Instalar Nginx principal

El servidor web Nginx es actualmente uno de los servidores web más populares del mundo. Es una elección excelente para alojar un sitio web.

Puedes instalar Nginx utilizando el gestor de paquetes de FreeBSD, pkg. Un gestor de paquetes te permite instalar la mayoría del software sin esfuerzo desde un repositorio mantenido por FreeBSD. Puedes obtener más información sobre cómo utilizar pkg aquí.

Para instalar la última versión principal de Nginx, ejecuta la siguiente orden:

sudo pkg install -y nginx-devel

Comprueba la versión:

nginx -v
# nginx version: nginx/1.17.7

Este comando instalará la última versión mainline, que puede utilizarse de forma fiable en un servidor de producción. Si quieres instalar la última versión estable, utiliza el paquete nginx en lugar de nginx-devel.

Ahora, habilita e inicia Nginx:

sudo sysrc nginx_enable=yes
sudo service nginx start

Para comprobar que Nginx se ha iniciado puedes ejecutar el siguiente comando:

sudo service nginx status

Como resultado, verás algo similar a:

# Output
nginx is running as pid 17607.

Puedes comprobar que Nginx se ha instalado y funciona sin errores visitando la dirección IP pública de tu servidor en tu navegador web. Navega hasta your_server_IP. Verás la página predeterminada «¡Bienvenido a nginx!».

Paso 2 – Instalación de MySQL 8.0

Ahora que ya tienes tu servidor web en funcionamiento, es el momento de instalar MySQL, el sistema de gestión de bases de datos relacionales. El servidor MySQL organizará y proporcionará acceso a las bases de datos en las que tu servidor puede almacenar información.

De nuevo, puedes utilizar pkg para obtener e instalar su software.

Para instalar MySQL 8.0 utilizando pkg, utiliza este comando:

sudo pkg install -y mysql80-client mysql80-server

Este comando instalará la última versión del cliente y servidor MySQL, que actualmente es 8.x.x.

Comprueba la versión:

mysql --version
# mysql  Ver 8.0.17 for FreeBSD12.0 on amd64 (Source distribution)

Ahora, habilita e inicia MySQL:

sudo sysrc mysql_enable=yes
sudo service mysql-server start

Para comprobar que MySQL se ha iniciado puedes ejecutar el siguiente comando:

sudo service mysql-server status

Verás algo similar a lo siguiente:

# Output
mysql is running as pid 19066.

Como buena práctica, puedes ejecutar el script de seguridad mysql_secure_installation que eliminará algunos valores predeterminados inseguros y limitará ligeramente el acceso a tu sistema de base de datos.

sudo mysql_secure_installation

Se te pedirá que establezcas una contraseña, seguida de algunas otras preguntas. Introduce una contraseña segura y para el resto de las preguntas pulsa ENTER para seleccionar los valores predeterminados.

Paso 3 – Instalar PHP 7.4

PHP es un lenguaje de scripting del lado del servidor diseñado para el desarrollo web. PHP es un componente indispensable de la pila FEMP. También se suelen utilizar Python o Perl en lugar de PHP. Sin embargo, PHP es la opción más utilizada. Junto con la base de datos, dará a tus sitios web o aplicaciones un comportamiento dinámico.

Una vez más, aprovecha el sistema pkg para instalar componentes PHP.

Para instalar PHP 7.4 con pkg, ejecuta este comando:

sudo pkg install -y php74

Comprueba la versión de PHP:

php --version
# PHP 7.4.0 (cli) (built: Jul 18 2019 01:14:37) ( NTS )
# Copyright (c) 1997-2018 The PHP Group
# Zend Engine v3.3.7, Copyright (c) 1998-2018 Zend Technologies

Este comando instalará la última versión de PHP, 7.4.

Ahora, habilita e inicia PHP-FPM:

sudo sysrc php_fpm_enable=yes
sudo service php-fpm start

Para comprobar que PHP-FPM se ha iniciado puedes ejecutar el siguiente comando:

sudo service php-fpm status

Como resultado, verás algo similar a:

# Output
php_fpm is running as pid 23005.

Instalación de módulos PHP (opcional)

Para mejorar la funcionalidad de PHP, puedes instalar opcionalmente algunos módulos adicionales.

Para ver los módulos PHP actualmente compilados, puedes ejecutar esto:

php -m

# [PHP Modules]
# Core # date
# libxml
# mysqlnd
# pcre
# Reflection
# SPL
# standard
# [Zend Modules]

Para buscar módulos PHP disponibles, puedes utilizar este comando:

pkg search ^php74-*

Los resultados serán en su mayoría módulos PHP 7.4 que puedes instalar:

# Output
# php74-7.4.7                    PHP Scripting Language
# php74-Ice37-3.7.2              Modern alternative to object middleware such as CORBA/COM/DCOM/COM+
# php74-aphpbreakdown-2.2.2      Code-Analyzer for PHP for Compatibility Check-UP
# php74-aphpunit-1.8             Testing framework for unit tests
# php74-bcmath-7.4.7             The bcmath shared extension for php
# php74-brotli-0.7.0             Brotli extension for PHP
# php74-bsdconv-11.5.0           PHP wrapper for bsdconv
# php74-bz2-7.4.7                The bz2 shared extension for php
# php74-calendar-7.4.7           The calendar shared extension for php
# php74-composer-1.8.6           Dependency Manager for PHP
# php74-ctype-7.4.7              The ctype shared extension for php
# php74-curl-7.4.7               The curl shared extension for php
# . . .

Si, después de investigar, decides que necesitas instalar un paquete, puedes hacerlo utilizando el comando pkg install. La mayoría de las aplicaciones web PHP requerirán módulos adicionales, por lo que es bueno saber cómo buscarlos.

Paso 4 – Configurar Nginx para utilizar el módulo PHP

Antes de utilizar PHP, debes configurarlo para que funcione con Nginx.

Ejecuta sudo vim /usr/local/etc/nginx/test.conf y rellena el archivo con el siguiente contenido:

server {

  listen 80;
  server_name SERVER_IP; # Replace with your IP or hostname
  root /usr/local/www/nginx-dist;
  index index.php index.html index.htm;

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

  location ~ \.php$ {
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
  }

}

Guarda el archivo y sal de vim.

Ahora tenemos que incluir test.conf en el archivo principal nginx.conf. El archivo de configuración principal de Nginx se encuentra en /usr/local/etc/nginx como nginx.conf.

Ejecuta sudo vim /usr/local/etc/nginx/nginx.conf para abrir el archivo de configuración principal en Vim y añade la siguiente línea al bloque http {}.

include test.conf;

Prueba la configuración de Nginx:

sudo nginx -t

Como has hecho cambios de configuración en Nginx, tienes que recargar el servicio para que se apliquen. De lo contrario, Nginx seguirá funcionando con la configuración anterior:

sudo service nginx reload

Paso 5 – Probar el procesamiento PHP

Para probar que tu sistema está configurado correctamente para PHP, puedes crear un script PHP muy básico. Llamarás a este script info.php. Por defecto, el root está configurado en /usr/local/www/nginx-dist. Puedes crear el archivo info.php en esa ubicación escribiendo:

sudo vim /usr/local/www/nginx-dist/info.php

Y añade este código a ese archivo:

<?php phpinfo(); ?>

Navega hasta http://your_server_IP/info.php y verás la siguiente página:

Después de la instalación y configuración de la pila FEMP debes eliminar el archivo info.php para evitar revelar al público la información sobre el servidor:

sudo rm /usr/local/www/nginx-dist/info.php

Conclusión

Enhorabuena, has instalado con éxito una pila FEMP en tu VPS FreeBSD 12.1. Ahora tienes múltiples opciones sobre qué hacer a continuación. Has instalado una plataforma que te permitirá instalar sobre ella la mayoría de tipos de sitios web y software web.

También te podría gustar...