Búsqueda de sitios web

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


Este tutorial le 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:

Distribución tipo Unix FreeBSD 11.1, servidor web Nginx, sistema de gestión de bases de datos relacionales MariaDB (una bifurcación comunitaria de MySQL) y lenguaje de programación dinámico PHP que se ejecuta en el lado del servidor.

Requisitos

  1. Instalación de FreeBSD 11.x
  2. Diez cosas que hacer después de la instalación de FreeBSD

Paso 1: instale 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 precompilados disponibles en FreeBSD 11.x PORTS. Para obtener una lista de archivos binarios Nginx de los repositorios Ports, ejecute los siguientes comandos en la terminal de su servidor.

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

2. En esta configuración particular, instalaremos la versión del paquete principal de Nginx emitiendo el siguiente comando. La administración de paquetes pkg le preguntará si desea continuar con la instalación del paquete nginx. Responda sí (y en la línea de comando) 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 demonio en todo el sistema e iniciar el servicio en su sistema.

sysrc nginx_enable="yes"
service nginx start

4. A continuación, utilizando el comando sockstat, verifique los sockets de red del servicio Nginx, si están vinculados al puerto 80/TCP, emitiendo lo siguiente dominio. La salida del comando calcetinestat 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 para solicitar la página web predeterminada del servidor web Nginx. El mensaje "¡Bienvenido a nginx!" debería 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 weboot predeterminado para el contenido web de Nginx se encuentra en la ruta absoluta del sistema /usr/local/www/nginx/. En esta ubicación debe crear, copiar o instalar archivos de contenido web, como 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 reflejar su nueva ruta webroot.

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

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

root	/path/to/new/webroot;

Paso 2: Instale PHP en FreeBSD

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

Los repositorios FreeBSD 11.x Ports ofrecen múltiples 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 PHP precompiladas disponibles en FreeBSD 11.x, ejecute los siguientes comandos.

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

8. Puede optar por instalar la versión de PHP que considere más adecuada para 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 PHP importantes 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 haber instalado los paquetes 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 presenta en el siguiente ejemplo.

user = www
group = www

10. Además, cree un archivo de configuración PHP utilizado para producción emitiendo el siguiente comando. En este archivo puede realizar cambios personalizados que se aplicarán al intérprete 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 del intérprete 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 del archivo cargado, que se puede aumentar modificando los valores siguientes:

upload_max_filesize = 10M
post_max_size = 10M

11. Después de realizar la configuración personalizada 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 vincula a un socket de red local en el puerto 9000/TCP. Para mostrar los sockets de red PHP-FPM ejecute el siguiente comando.

sockstat -4 -6| grep php-fpm

13. Para que el servidor web Nginx pase los scripts PHP al servidor de puerta de enlace FastCGI, que está escuchando en el socket 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 PHP actual de su servidor, cree un archivo info.php en la ruta de arranque web 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 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: Instale MariaDB en FreeBSD

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

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

En esta guía instalaremos la base de datos MariaDB, que es una bifurcación comunitaria de la base de datos MySQL. Para buscar versiones disponibles de MariaDB, ejecute los siguientes comandos en la 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 controlador de base de datos relacional PHP utilizado por los scripts PHP para conectarse a MySQL.

pkg install mariadb102-server php71-mysqli

18. Una vez instalada la base de datos, habilite el demonio MySQL e inicie el servicio de la base de datos ejecutando los siguientes comandos.

sysrc mysql_enable="YES" 
service mysql-server start

19. Además, asegúrese 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
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 MariaDB, que de forma predeterminada escucha las conexiones de red entrantes en el socket 0.0.0.0:3306/TCP, ejecute el siguiente comando para forzar el servicio. para vincularse en la interfaz bucle invertido y no permitir por completo 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! Ha 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.