Cómo instalar Nginx, MariaDB y PHP Stack (FEMP) en FreeBSD


Este tutorial lo guiará sobre cómo instalar y configurar FBEMP en la última versión de FreeBSD 11.x . FBEMP es un acrónimo que describe la siguiente colección de software:

FreeBSD 11.1 distribución similar a Unix, servidor web Nginx, sistema de gestión de base de datos relacional MariaDB (un enlace comunitario de MySQL) y lenguaje de programación dinámico PHP que se ejecuta en el lado del servidor.

  1. Installation of FreeBSD 11.x
  2. 10 Things to Do After FreeBSD Installation

Paso 1: Instalar el servidor web Nginx en FreeBSD

1. El primer servicio que instalaremos para nuestra pila FBEMP en FreeBSD es el servidor web, representado por Nginx software.

El servidor web Nginx tiene más paquetes predefinidos disponibles en PUERTOS FreeBSD 11.x . Para obtener una lista de binarios Nginx de Puertos , emita los siguientes comandos en su terminal de servidor.

# ls /usr/ports/www/ | grep nginx
# pkg search -o nginx

2. En esta configuración en particular, instalaremos la versión del paquete principal de Nginx emitiendo el siguiente comando. La administración del paquete pkg le preguntará si desea continuar con la instalación del paquete nginx. Responda con sí ( y en la línea de comandos) para iniciar el proceso de instalación.

# pkg install nginx

3. Después de instalar el paquete del servidor web Nginx en su sistema, ejecute los siguientes comandos para habilitar el daemon en todo el sistema e iniciar el servicio en su sistema.

# sysrc nginx_enable="yes"
# service nginx start

4. A continuación, con el comando sockstat , verifique los sockets de red del servicio Nginx, si están vinculados al puerto 80/TCP , emitiendo el siguiente mando. La salida del comando sockstat se canalizará a través de la utilidad grep para reducir los resultados devueltos solo a la cadena nginx.

# sockstat -4 | grep nginx

5. Finalmente, abra un navegador en una computadora de escritorio en su red y visite la página web predeterminada de Nginx a través del protocolo HTTP. Escriba el FQDN de su máquina o su nombre de dominio o la dirección IP de su servidor en la URL del navegador archivada para solicitar la página web predeterminada del servidor web Nginx. El mensaje “ ¡Bienvenido a nginx! ” debe aparecer en su navegador, como se ilustra en la siguiente captura de pantalla.

http://yourdomain.com
http://your_server_IP
http://your_machine_FQDN

6. El directorio de inicio web predeterminado para el contenido web de Nginx se encuentra en /usr/local/www/nginx/ ruta absoluta del sistema. En esta ubicación, debe crear, copiar o instalar archivos de contenido web, como los archivos .html o .php , para su sitio web.

Para cambiar esta ubicación, edite el archivo de configuración principal de nginx y cambie la directiva raíz para que refleje su nueva ruta de webroot.

# nano /usr/local/etc/nginx/nginx.conf

Aquí, busque y actualice la siguiente línea para reflejar su nueva ruta de webroot:

root	/path/to/new/webroot;

Paso 2: Instalar PHP en FreeBSD

7. A diferencia del servidor Apache HTTP , Nginx no tiene la capacidad de procesar el código PHP de forma nativa. A cambio, el servidor web Nginx pasa las solicitudes de PHP a un intérprete de PHP, como el demonio php-fpm FastCGI , que inspecciona y ejecuta el código. El código resultante se devuelve a Nginx, que vuelve a ensamblar el código al formato html solicitado y envía el código al navegador web del visitante.

FreeBSD 11.x Los repositorios de puertos ofrecen varias versiones binarias para el lenguaje de programación PHP, como PHP 5.6 , PHP 7.0 y PHP 7.1 lanzamientos. Para mostrar todas las versiones de PHP precompiladas disponibles en FreeBSD 11.x , ejecute los siguientes comandos.

# pkg search -o php
# ls /usr/ports/lang/ | grep php

8. Puede elegir instalar la versión de PHP que mejor se adapte a la aplicación web que ejecuta en su sistema. Sin embargo, en esta guía instalaremos la última versión de PHP.

Para instalar la versión PHP 7.1 y algunos módulos importantes de PHP necesarios para diversas aplicaciones web, ejecute el siguiente comando.

# pkg install php71 php71-mysqli php71-mcrypt php71-zlib php71-gd php71-json mod_php71 php71-mbstring php71-curl

9. Después de instalar los paquetes de PHP en su sistema, abra el archivo de configuración PHP-FPM para Nginx y ajuste los valores de usuario y grupo para que coincidan con el valor en el tiempo de ejecución de Nginx usuario, que es www . Primero, haga una copia de seguridad del archivo con el siguiente comando.

# cp /usr/local/etc/php-fpm.d/www.conf{,.backup}

Luego, abra el archivo y actualice las siguientes líneas como se muestra en el ejemplo siguiente.

user = www
group = www

10. Además, cree un archivo de configuración de PHP utilizado para la producción emitiendo el siguiente comando. En este archivo puede realizar cambios personalizados que se aplicarán al intérprete de PHP en tiempo de ejecución.

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

Por ejemplo, cambie la configuración date.timezone para el intérprete de PHP para actualizar la ubicación física de su máquina como se muestra en el siguiente ejemplo. La lista de zonas horarias de PHP se puede encontrar aquí: http://php.net/manual/en/timezones.php.

# vi /usr/local/etc/php.ini

Agregue la siguiente zona horaria (establezca la zona horaria según su país).

date.timezone = Europe/London

También puede ajustar otras variables de PHP, como el tamaño máximo de archivo del archivo cargado, que se puede aumentar modificando los siguientes valores:

upload_max_filesize = 10M
post_max_size = 10M

11. Después de haber realizado las configuraciones personalizadas para PHP, habilite e inicie el demonio PHP-FPM para aplicar las nuevas configuraciones emitiendo los siguientes comandos.

# sysrc php_fpm_enable=yes
# service php-fpm start

12. De forma predeterminada, el demonio PHP-FPM en FreeBSD se enlaza en un socket de red local en el puerto 9000/TCP . Para mostrar PHP-FPM sockets de red, ejecute el siguiente comando.

# sockstat -4 -6| grep php-fpm

13. Para que el servidor web Nginx pase los scripts de PHP al FastCGI , el servidor de puerta de enlace, que escucha en el 127.0.0.1:9000 , abra el archivo de configuración principal de Nginx y agregue el siguiente bloque de código como se ilustra en el siguiente ejemplo.

# vi /usr/local/etc/nginx/nginx.conf

Bloque de código FastCGI para nginx:

 location ~ \.php$ {
        root	/usr/local/www/nginx;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param SCRIPT_FILENAME $request_filename;    
        include        fastcgi_params;
        	}

14. Para ver la información de PHP actual de su servidor, cree un archivo info.php en la ruta de inicio de sesión de Nginx emitiendo el siguiente comando.

# echo "<?php phpinfo(); ?>" | tee /usr/local/www/nginx/info.php

15. Luego, pruebe y reinicie el demonio Nginx para aplicar la configuración de PHP FastCGI y visite la página info.php en un navegador.

# nginx -t # Test nginx configuration file for syntax errors
# service nginx restart

Reemplace la dirección IP o el nombre de dominio en los enlaces a continuación en consecuencia. La página de información de PHP debe mostrar la información como se ilustra en la siguiente captura de pantalla.

http://yourdomain.com/info.php
http://server_IP-or-FQDN/info.php

Paso 3: Instala MariaDB en FreeBSD

16. El último componente que falta en la pila de FEMP en la base de datos. MariaDB/MySQL es uno de los software RDBMS de código abierto más asociados con el servidor web Nginx utilizado para implementar sitios web dinámicos.

En realidad, MariaDB/MySQL es una de las bases de datos relacionales más utilizadas en el mundo. Al buscar en Puertos de FreeBSD , puede encontrar varias versiones de MariaDB/MySQL .

En esta guía instalaremos la base de datos MariaDB , que es un enlace comunitario de la base de datos MySQL . Para buscar versiones disponibles de MariaDB , emita los siguientes comandos en el terminal.

# ls -al /usr/ports/databases/ | grep mariadb
# pkg search mariadb

17. Para instalar la última versión del servidor de base de datos MariaDB, ejecute el siguiente comando. También debe instalar el módulo de controlador de base de datos relacional PHP utilizado por los scripts PHP para conectarse a MySQL.

# pkg install mariadb102-server php71-mysqli

18. Después de instalar la base de datos, habilite el demonio de MySQL e inicie el servicio de la base de datos ejecutando los siguientes comandos.

# sysrc mysql_enable="YES" 
# service mysql-server start

19. También, asegúrate de reiniciar el demonio PHP-FPM para cargar la extensión del controlador MySQL.

# service php-fpm restart
20. On the next step, secure MariaDB database by launching mysql_secure_installation script. Use the below sample of the installation script in order to answer the questions. Basically, say yes (y) for all asked questions to secure the database and type a strong password for MySQL root user.
# /usr/local/bin/mysql_secure_installation

Salida segura del script de instalación de MySQL

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!
 
In order to log into MariaDB to secure it, we'll need the current
password for the root user.  If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.
 
Enter current password for root (enter for none):
OK, successfully used password, moving on...
 
Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.
Set root password? [Y/n] y
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
 ... Success!
By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.
Remove anonymous users? [Y/n] y
 ... Success!
Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.
Disallow root login remotely? [Y/n] y
 ... Success!
By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.
Remove test database and access to it? [Y/n] y
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!
Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.
Reload privilege tables now? [Y/n] y
 ... Success!
Cleaning up...
All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.
Thanks for using MariaDB!

21. Para probar la conexión de la base de datos MariaDB desde la consola, ejecute el siguiente comando.

# mysql -u root -p -e "show status like ‘Connections’"

22. Para proteger aún más a MariaDB, que de forma predeterminada escucha las conexiones de red entrantes en el socket 0.0.0.0:3306/TCP , emita el siguiente comando para forzar el servicio para enlazar en la interfaz loopback y no permitir el acceso remoto. Luego, reinicie el servicio MySQL para aplicar la nueva configuración.

# sysrc mysql_args="--bind-address=127.0.0.1"
# service mysql-server restart

Verifique si el enlace localhost se aplicó correctamente ejecutando el comando netstat como se muestra en el siguiente ejemplo.

# netstat -an -p tcp

¡Eso es todo! Has instalado correctamente el servidor web Nginx, la base de datos relacional MariaDB y el lenguaje de programación del lado del servidor PHP en FreeBSD. Ahora puede comenzar a crear páginas web dinámicas para ofrecer contenido web a sus visitantes.