Cum se instalează Nginx, MariaDB și PHP (FEMP) Stack pe FreeBSD


Acest tutorial vă va ghida despre cum să instalați și să configurați FBEMP în ultima versiune FreeBSD 11.x. FBEMP este un acronim care descrie următoarea colecție de software:

FreeBSD 11.1 Distribuție asemănătoare Unix, server web Nginx, sistem de gestionare a bazelor de date relaționale MariaDB (un fork comunitar MySQL) și limbaj de programare dinamic PHP care rulează pe partea de server.

Cerințe

  1. Instalarea FreeBSD 11.x
  2. 10 lucruri de făcut după instalarea FreeBSD

Pasul 1: Instalați serverul web Nginx pe FreeBSD

1. Primul serviciu pe care îl vom instala pentru stiva noastră FBEMP în FreeBSD este serverul web, reprezentat de Nginx > software.

Serverul web Nginx are mai multe pachete pre-complicate disponibile în PORTURI FreeBSD 11.x. Pentru a obține o listă de binare Nginx din depozitele Ports, lansați următoarele comenzi în terminalul serverului dvs.

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

2. În această configurație specială, vom instala versiunea principală a pachetului Nginx lansând comanda de mai jos. Gestionarea pachetului pkg vă va întreba dacă doriți să continuați cu instalarea pachetului nginx. Răspundeți cu da (y în linia de comandă) pentru a începe procesul de instalare.

pkg install nginx

3. După ce pachetul serverului web Nginx a fost instalat în sistemul dvs., executați următoarele comenzi pentru a activa demonul la nivel de sistem și pentru a porni serviciul în sistemul dvs.

sysrc nginx_enable="yes"
service nginx start

4. Apoi, utilizând comanda sockstat, verificați socketurile de rețea de serviciu Nginx, dacă acestea se leagă pe portul 80/TCP, emitând următorul comanda. Ieșirea comenzii sockstat va fi transmisă prin utilitarul grep pentru a reduce rezultatele returnate numai la șirul nginx.

sockstat -4 | grep nginx

5. În cele din urmă, deschideți un browser pe un computer desktop din rețeaua dvs. și vizitați pagina web implicită Nginx prin protocolul HTTP. Scrieți FQDN-ul al mașinii dvs. sau numele domeniului sau adresa IP a serverului dvs. în adresa URL a browserului înregistrată pentru a solicita pagina web implicită a serverului web Nginx. Mesajul „Bine ați venit la nginx! ” ar trebui să fie afișat în browser, așa cum este ilustrat în captura de ecran de mai jos.

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

6. Directorul weboot implicit pentru conținutul web Nginx se află în calea absolută a sistemului /usr/local/www/nginx/. În această locație ar trebui să creați, să copiați sau să instalați fișiere de conținut web, cum ar fi fișiere .html sau .php, pentru site-ul dvs.

Pentru a schimba această locație, editați fișierul de configurare principal nginx și modificați directiva rădăcină pentru a reflecta noua cale webroot.

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

Aici, căutați și actualizați următoarea linie pentru a reflecta noua cale webroot:

root	/path/to/new/webroot;

Pasul 2: Instalați PHP pe FreeBSD

7. Spre deosebire de serverul Apache HTTP, Nginx nu are capacitatea de a procesa codul PHP în mod nativ. În schimb, serverul web Nginx transmite cereri PHP unui interpret PHP, cum ar fi demonul php-fpm FastCGI, care inspectează și execută codul. Codul rezultat este apoi returnat înapoi la Nginx, care reasambla codul înapoi în formatul html solicitat și trimite codul în continuare browserului web al vizitatorului.

Arhivele FreeBSD 11.x Ports oferă mai multe versiuni binare pentru limbajul de programare PHP, cum ar fi PHP 5.6, PHP 7.0 și PHP 7.1< lansări. Pentru a afișa toate versiunile PHP precompilate disponibile în FreeBSD 11.x, rulați comenzile de mai jos .

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

8. Puteți alege să instalați orice versiune de PHP considerați cea mai potrivită pentru aplicația web pe care o rulați în sistemul dvs. Cu toate acestea, în acest ghid vom instala cea mai recentă versiune PHP.

Pentru a instala versiunea PHP 7.1 și unele module importante PHP necesare pentru diverse aplicații web, rulați următoarea comandă.

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

9. După ce ați instalat pachetele PHP în sistemul dvs., deschideți fișierul de configurare PHP-FPM pentru Nginx și ajustați valorile utilizatorului și grupului pentru a se potrivi cu valoarea din timpul de rulare Nginx utilizator, care este www. Mai întâi, faceți o copie de rezervă a fișierului cu comanda de mai jos.

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

Apoi, deschideți fișierul și actualizați următoarele rânduri, așa cum este prezentat în exemplul de mai jos.

user = www
group = www

10. De asemenea, creați un fișier de configurare PHP utilizat pentru producție lansând comanda de mai jos. Pe acest fișier puteți face modificări personalizate care vor fi aplicate interpretorului PHP în timpul execuției.

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

De exemplu, modificați setarea date.timezone pentru interpretul PHP pentru a actualiza locația fizică a mașinii, așa cum se arată în exemplul de mai jos. Lista de fus orar PHP poate fi găsită aici: http://php.net/manual/en/timezones.php.

vi /usr/local/etc/php.ini

Adăugați următorul fus orar (setați fusul orar în funcție de țara dvs.).

date.timezone = Europe/London

De asemenea, puteți ajusta alte variabile PHP, cum ar fi dimensiunea maximă a fișierului încărcat, care poate fi mărită prin modificarea valorilor de mai jos:

upload_max_filesize = 10M
post_max_size = 10M

11. După ce ați făcut setările personalizate pentru PHP, activați și porniți demonul PHP-FPM pentru a aplica noile configurații prin lansarea comenzilor de mai jos.

sysrc php_fpm_enable=yes
service php-fpm start

12. Implicit, demonul PHP-FPM din FreeBSD se leagă la o soclu de rețea locală pe portul 9000/TCP. Pentru a afișa socket-urile de rețea PHP-FPM, executați următoarea comandă.

sockstat -4 -6| grep php-fpm

13. Pentru ca serverul web Nginx să transmită scripturile PHP către serverul gateway FastCGI, care ascultă pe socketul 127.0.0.1:9000, deschideți fișierul de configurare principal Nginx și adăugați următorul bloc de cod, așa cum este ilustrat în exemplul de mai jos.

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

Bloc de cod FastCGI pentru 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. Pentru a vizualiza informațiile PHP curente pentru serverul dvs., creați un fișier info.php în calea weboot Nginx lansând următoarea comandă.

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

15. Apoi, testați și reporniți demonul Nginx pentru a aplica setările PHP FastCGI și vizitați pagina info.php într-un browser.

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

Înlocuiți în consecință adresa IP sau numele domeniului din linkurile de mai jos. Pagina de informații PHP ar trebui să afișeze informații așa cum este ilustrat în captura de ecran de mai jos.

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

Pasul 3: Instalați MariaDB pe FreeBSD

16. Ultima componentă care lipsește din stiva dvs. FEMP din baza de date. MariaDB/MySQL este unul dintre cele mai asociate software RDBMS open source cu serverul web Nginx, utilizat pentru implementarea site-urilor web dinamice.

De fapt, MariaDB/MySQL este una dintre cele mai utilizate baze de date relaționale din lume. Căutând prin Porturile FreeBSD, puteți găsi mai multe versiuni ale MariaDB/MySQL.

În acest ghid, vom instala baza de date MariaDB, care este un furk comunitar al bazei de date MySQL. Pentru a căuta versiuni disponibile de MariaDB, lansați următoarele comenzi în terminal.

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

17. Pentru a instala cea mai recentă versiune a serverului de baze de date MariaDB, executați următoarea comandă. De asemenea, ar trebui să instalați modulul driver al bazei de date relaționale PHP utilizat de scripturile PHP pentru conectarea la MySQL.

pkg install mariadb102-server php71-mysqli

18. După ce baza de date a fost instalată, activați demonul MySQL și porniți serviciul de bază de date rulând următoarele comenzi.

sysrc mysql_enable="YES" 
service mysql-server start

19. De asemenea, asigurați-vă că reporniți demonul PHP-FPM pentru a încărca extensia driverului 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. Pentru a testa conexiunea la baza de date MariaDB din consolă, executați comanda de mai jos.

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

22. Pentru a securiza și mai mult MariaDB, care în mod implicit ascultă conexiunile de rețea de intrare pe socketul 0.0.0.0:3306/TCP, lansați comanda de mai jos pentru a forța serviciul pentru a lega interfața loopback și a interzice complet accesul la distanță. După aceea, reporniți serviciul MySQL pentru a aplica noua configurație.

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

Verificați dacă legarea localhost a fost aplicată cu succes prin rularea comenzii netstat, așa cum se arată în exemplul de mai jos.

netstat -an -p tcp

Asta e tot! Ați instalat cu succes serverul web Nginx, baza de date relațională MariaDB și limbajul de programare PHP pe partea de server în FreeBSD. Acum puteți începe să construiți pagini web dinamice pentru a oferi conținut web vizitatorilor dvs.