Com instal·lar Nginx, MariaDB i PHP (FEMP) Stack a FreeBSD


Aquest tutorial us guiarà sobre com instal·lar i configurar FBEMP a la darrera versió de FreeBSD 11.x. FBEMP és un acrònim que descriu la següent col·lecció de programari:

FreeBSD 11.1 Distribució semblant a Unix, servidor web Nginx, sistema de gestió de bases de dades relacionals MariaDB (una bifurcació comunitària de MySQL) i llenguatge de programació dinàmica PHP que s'executa al costat del servidor.

  1. Instal·lació de FreeBSD 11.x
  2. 10 coses a fer després de la instal·lació de FreeBSD

Pas 1: instal·leu el servidor web Nginx a FreeBSD

1. El primer servei que instal·larem per a la nostra pila FBEMP a FreeBSD és el servidor web, representat pel programari Nginx.

El servidor web de Nginx té més paquets precomplerts disponibles als PORTS FreeBSD 11.x. Per obtenir una llista de binaris Nginx dels dipòsits de Ports, emet les ordres següents al terminal del servidor.

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

2. En aquesta configuració particular, instal·larem la versió del paquet principal de Nginx emetent l'ordre següent. La gestió del paquet pkg us demanarà si voleu continuar amb la instal·lació del paquet nginx. Respon amb sí (y a la línia d'ordres) per tal d'iniciar el procés d'instal·lació.

# pkg install nginx

3. Un cop instal·lat el paquet del servidor web Nginx al vostre sistema, executeu les ordres següents per habilitar el dimoni a tot el sistema i iniciar el servei al vostre sistema.

# sysrc nginx_enable="yes"
# service nginx start

4. A continuació, utilitzant l'ordre sockstat, verifiqueu els sòcols de xarxa del servei Nginx, si estan vinculats al port 80/TCP, emetent l'ordre següent. La sortida de l'ordre sockstat es transmetrà mitjançant la utilitat grep per tal de reduir els resultats retornats només a la cadena nginx.

# sockstat -4 | grep nginx

5. Finalment, obriu un navegador en un ordinador d'escriptori de la vostra xarxa i visiteu la pàgina web predeterminada de Nginx mitjançant el protocol HTTP. Escriviu el FQDN de la vostra màquina o el vostre nom de domini o l'adreça IP del vostre servidor a l'URL del navegador arxivat per sol·licitar la pàgina web predeterminada del servidor web Nginx. El missatge \Benvingut a nginx! s'hauria de mostrar al vostre navegador, tal com es mostra a la captura de pantalla següent.

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

6. El directori weboot predeterminat per al contingut web de Nginx es troba a la ruta absoluta del sistema /usr/local/www/nginx/. En aquesta ubicació hauríeu de crear, copiar o instal·lar fitxers de contingut web, com ara fitxers .html o .php, per al vostre lloc web.

Per canviar aquesta ubicació, editeu el fitxer de configuració principal de nginx i canvieu la directiva arrel perquè reflecteixi la vostra nova ruta d'arrel web.

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

Aquí, cerqueu i actualitzeu la línia següent per reflectir la vostra nova ruta d'arrel web:

root	/path/to/new/webroot;

Pas 2: instal·leu PHP a FreeBSD

7. A diferència del servidor HTTP Apache, Nginx no té la capacitat de processar codi PHP de manera nativa. A canvi, el servidor web Nginx passa sol·licituds PHP a un intèrpret PHP, com ara el dimoni php-fpm FastCGI, que inspecciona i executa el codi. El codi resultant es torna a Nginx, que torna a muntar el codi al format html sol·licitat i envia el codi al navegador web del visitant.

Els repositoris FreeBSD 11.x Ports ofereixen múltiples versions binàries per al llenguatge de programació PHP, com ara les versions PHP 5.6, PHP 7.0 i PHP 7.1. Per mostrar totes les versions de PHP precompilades disponibles a FreeBSD 11.x, executeu les ordres següents .

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

8. Podeu optar per instal·lar la versió de PHP que considereu més adequada per a l'aplicació web que executeu al vostre sistema. Tanmateix, en aquesta guia instal·larem la darrera versió de PHP.

Per instal·lar la versió PHP 7.1 i alguns mòduls importants de PHP necessaris per a diverses aplicacions web, executeu l'ordre següent.

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

9. Després d'haver instal·lat els paquets PHP al vostre sistema, obriu el fitxer de configuració PHP-FPM per a Nginx i ajusteu els valors d'usuari i grup perquè coincideixin amb el valor de l'usuari d'execució de Nginx, que és www. Primer, feu una còpia de seguretat del fitxer amb l'ordre següent.

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

A continuació, obriu el fitxer i actualitzeu les línies següents tal com es mostra a la mostra següent.

user = www
group = www

10. A més, creeu un fitxer de configuració PHP utilitzat per a la producció emetent l'ordre següent. En aquest fitxer podeu fer canvis personalitzats que s'aplicaran a l'intèrpret PHP en temps d'execució.

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

Per exemple, canvieu la configuració de data.timezone per a l'intèrpret PHP per actualitzar la ubicació física de la vostra màquina tal com es mostra a l'exemple següent. La llista de zones horàries PHP es pot trobar aquí: http://php.net/manual/en/timezones.php.

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

Afegeix la zona horària següent (configureu la zona horària segons el vostre país).

date.timezone = Europe/London

També podeu ajustar altres variables PHP, com ara la mida màxima del fitxer penjat, que es pot augmentar modificant els valors següents:

upload_max_filesize = 10M
post_max_size = 10M

11. Després, heu fet la configuració personalitzada per a PHP, activeu i inicieu el dimoni PHP-FPM per aplicar les noves configuracions emetent les ordres següents.

# sysrc php_fpm_enable=yes
# service php-fpm start

12. Per defecte, el dimoni PHP-FPM de FreeBSD s'enllaça a un sòcol de xarxa local al port 9000/TCP. Per mostrar els sòcols de xarxa PHP-FPM, executeu l'ordre següent.

# sockstat -4 -6| grep php-fpm

13. Perquè el servidor web de Nginx passi els scripts PHP al servidor de passarel·la FastCGI, que està escoltant al sòcol 127.0.0.1:9000, obriu el fitxer de configuració principal de Nginx i afegiu el següent bloc de codi tal com es mostra a la il·lustració. a la mostra següent.

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

Bloc de codi FastCGI per a 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. Per veure la informació PHP actual del vostre servidor, creeu un fitxer info.php a la ruta weboot de Nginx emetent l'ordre següent.

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

15. A continuació, proveu i reinicieu el dimoni Nginx per aplicar la configuració de PHP FastCGI i visiteu la pàgina info.php en un navegador.

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

Substituïu l'adreça IP o el nom de domini als enllaços següents en conseqüència. La pàgina d'informació de PHP hauria de mostrar informació tal com es mostra a la captura de pantalla següent.

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

Pas 3: instal·leu MariaDB a FreeBSD

16. L'últim component que falta a la vostra pila FEMP a la base de dades. MariaDB/MySQL és un dels programaris RDBMS de codi obert més associats amb el servidor web Nginx utilitzat per desplegar llocs web dinàmics.

De fet, MariaDB/MySQL és una de les bases de dades relacionals més utilitzades del món. Cercant a través dels ports FreeBSD, podeu trobar diverses versions de MariaDB/MySQL.

En aquesta guia, instal·larem la base de dades MariaDB, que és una bifurcació comunitària de la base de dades MySQL. Per cercar versions disponibles de MariaDB, emet les ordres següents al terminal.

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

17. Per instal·lar la darrera versió del servidor de bases de dades MariaDB, executeu l'ordre següent. També hauríeu d'instal·lar el mòdul de controlador de base de dades relacional PHP utilitzat pels scripts PHP per connectar-vos a MySQL.

# pkg install mariadb102-server php71-mysqli

18. Un cop instal·lada la base de dades, activeu el dimoni MySQL i inicieu el servei de base de dades executant les ordres següents.

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

19. A més, assegureu-vos de reiniciar el dimoni PHP-FPM per carregar l'extensió 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. Per provar la connexió de la base de dades MariaDB des de la consola, executeu l'ordre següent.

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

22. Per tal de protegir encara més MariaDB, que per defecte escolta les connexions de xarxa entrants al sòcol 0.0.0.0:3306/TCP, emet l'ordre següent per forçar el servei a vincular-se a la interfície de bucle i no permetre completament l'accés remot. Després, reinicieu el servei MySQL per aplicar la nova configuració.

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

Verifiqueu si l'enllaç localhost s'ha aplicat correctament executant l'ordre netstat tal com es mostra a l'exemple següent.

# netstat -an -p tcp

Això és tot! Heu instal·lat correctament el servidor web Nginx, la base de dades relacional MariaDB i el llenguatge de programació PHP del costat del servidor a FreeBSD. Ara podeu començar a crear pàgines web dinàmiques per oferir contingut web als vostres visitants.