O stivă de software LEMP este un grup de software open source care este de obicei instalat împreună pentru a permite unui server să găzduiască site-uri web dinamice și aplicații web. Acest termen este de fapt un acronim care reprezintă sistemul de operare L inux, cu serverul web E Nginx (care înlocuiește componenta Apache a unui stack LAMP). Datele site-ului sunt stocate într-o bază de date bazată pe M ySQL, iar conținutul dinamic este procesat de P HP.
În acest ghid, vom obține o stivă LEMP cu PHP 7.4 instalat pe un server CentOS 7, folosind MariaDB ca sistem de gestionare a bazei de date. MariaDB funcționează ca un înlocuitor pentru serverul MySQL original, ceea ce înseamnă că, în practică, puteți trece la MariaDB fără a fi nevoie să faceți modificări de configurație sau cod în aplicația dvs.
Instalarea MariaDB
MariaDB este un software de baze de date libere și open source. Este un înlocuitor imbunatatit pentru MySQL, unul dintre cele mai populare servere de baze de date din lume.
Pentru a instala MariaDB pe serverul CentOS 7, trebuie să aveți acces complet la serverul rădăcină. Accesul complet la SSH-ul rădăcină este inclus in toate pachetele VPS hosting.
Conectați-vă prin SSH și actualizați sistemul
# yum update
Pentru a actualiza un anumit pachet, specificați-l după nume:
# yum update httpd
Instalarea Nginx
Pentru a afișa pagini web vizitatorilor site-ului nostru, vom folosi Nginx, un server web performant. Pentru a obține cea mai recentă versiune Nginx, vom instala mai întâi depozitul EPEL, care conține software suplimentar pentru sistemul de operare CentOS 7.
Pentru a adăuga depozitul CentOS 7 EPEL, rulați următoarea comandă:
# yum install epel-release
Instalați Nginx folosind următoarea comandă:
# yum install nginx
După finalizarea instalării, porniți serviciul Nginx cu:
# systemctl start nginx
Puteți face imediat o verificare la fața locului pentru a verifica dacă totul a decurs așa cum a fost planificat, vizitând adresa IP publică a serverului dvs. în browserul dvs. web (consultați nota de sub titlul următor pentru a afla care este adresa dvs. IP publică dacă nu aveți aceste informații deja):
Veți vedea pagina web implicită CentOS 7 Nginx, care se află acolo în scopuri de informare și testare.
# Open in a web browser:
# http://server_domain_name_or_IP/
Pentru a permite Nginx să înceapă la pornire, rulați următoarea comandă:
# systemctl enable nginx
Dacă nu știți care este adresa IP publică a serverului dvs., există o serie de moduri în care o puteți găsi. De obicei, aceasta este adresa pe care o utilizați pentru a vă conecta la serverul dvs. prin SSH.
Din linia de comandă, puteți găsi acest lucru în câteva moduri.
# ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'
Instalarea MariaDB
Acum că avem serverul nostru web funcțional, este timpul să instalăm MariaDB, un înlocuitor MySQL drop-in. MariaDB este o forță dezvoltată de comunitate a sistemului de gestionare a bazelor de date relaționale MySQL.
De data aceasta, vom instala și alte pachete de asistență care ne vor ajuta să comunicăm cu componentele noastre:
# yum install mariadb-server mariadb
Când instalarea este finalizată, trebuie să pornim MariaDB cu următoarea comandă:
# systemctl start mariadb
Acum că baza noastră de date MariaDB rulează, vrem să rulăm un script de securitate care va elimina unele valori implicite periculoase și va bloca accesul la baza noastră de date. Porniți scriptul interactiv executând:
# mysql_secure_installation
Solicitarea vă va cere parola de root actoala a MariaDB. Deoarece tocmai ați instalat MariaDB, cel mai probabil nu veți avea o parola setata, așa că lăsați-l necompletat apăsând Enter. Apoi, promptul vă va întreba dacă doriți să setați o parola de root. Continuați și confirmati cu " Y " si urmați instrucțiunile:
mysql_secure_installation prompts:
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!
Pentru restul întrebărilor, ar trebui să apăsați tasta „ENTER” prin fiecare prompt pentru a accepta valorile implicite. Acest lucru va elimina câțiva utilizatori și baze de date, va dezactiva datele de conectare root de la distanță și va încărca aceste noi reguli, astfel încât MySQL să respecte imediat modificările pe care le-am făcut.
Ultimul lucru pe care vrei să-l faci este să activezi MariaDB să înceapă la pornire. Folosiți următoarea comandă pentru a face acest lucru:
# systemctl enable mariadb
În acest moment, sistemul dvs. de baze de date este acum configurat și putem continua.
Instalarea PHP
PHP este componenta configurării noastre care va procesa codul pentru a afișa conținut dinamic. Poate rula scripturi, se poate conecta la bazele noastre de date MySQL pentru a obține informații și poate transmite conținutul procesat serverului nostru web pentru a fi afișat.
Versiunea PHP disponibilă implicit în serverele CentOS 7 este depășită și, din acest motiv, va trebui să instalăm un depozit de pachete terță parte pentru a obține PHP 7+ și a-l instala pe serverul CentOS 7. Remi este un popular depozit de pachete care oferă cele mai recente versiuni PHP pentru serverele CentOS.
Pentru a instala depozitul Remi pentru CentOS 7, rulați:
# yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
După terminarea instalării, va trebui să executați o comandă pentru a activa depozitul care conține versiunea dvs. preferată de PHP. Pentru a verifica ce versiuni PHP 7+ sunt disponibile în depozitul Remi, rulați:
# yum --disablerepo="*" --enablerepo="remi-safe" list php[7-9][0-9].x86_64
Veți vedea rezultate astfel:
Output
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* remi-safe: mirrors.ukfast.co.uk
Available Packages
php70.x86_64 2.0-1.el7.remi remi-safe
php71.x86_64 2.0-1.el7.remi remi-safe
php72.x86_64 2.0-1.el7.remi remi-safe
php73.x86_64 2.0-1.el7.remi remi-safe
php74.x86_64 1.0-3.el7.remi remi-safe
php80.x86_64 1.0-3.el7.remi remi-safe
În acest ghid, vom instala PHP 7.4, care este în prezent cea mai actualizată versiune stabilă a PHP. Pentru a activa pachetul Remi corect pentru a instala PHP 7.4, rulați:
# yum-config-manager --enable remi-php74
Acum putem continua să folosim " yum " pentru instalarea PHP ca de obicei. Următoarea comandă va instala toate pachetele necesare pentru a instala PHP 7.4 în Nginx și îi va permite să se conecteze la baze de date bazate pe MySQL:
# yum install php php-mysqlnd php-fpm
Pentru a confirma că PHP este disponibil ca versiune aleasă, rulați:
# php --version
Veți vedea rezultate astfel:
Output
PHP 7.4.5 (cli) (built: Apr 14 2020 12:54:33) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
PHP este acum instalat cu succes pe sistemul dvs. În continuare, trebuie să facem câteva ajustări la configurația implicită. Pentru a facilita editarea fișierelor pe CentOS, vom instala mai întâi nano, un editor de text mai ușor de utilizat decât vi:
# yum install nano
Deschideți /etc/php-fpm.d/www.conf fișierul de configurare folosind nano sau editorul dvs. dorit:
# nano /etc/php-fpm.d/www.conf
Acum căutați directivele user și group. Dacă utilizați nano, puteți apăsa CTRL+ W pentru a căuta acești termeni în fișierul deschis.
/etc/php-fpm.d/www.conf
…
; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
; will be used.
; RPM: apache user chosen to provide access to the same directories as httpd
user = apache
; RPM: Keep a group allowed to write in log dir.
group = apache
…
Veți observa că variabilele user și group sunt setate la apache. Trebuie să le schimbăm în nginx:
/etc/php-fpm.d/www.conf
…
; RPM: apache user chosen to provide access to the same directories as httpd
user = nginx
; RPM: Keep a group allowed to write in log dir.
group = nginx
…
Apoi, localizați directiva listen. În mod implicit, php-fpm va asculta pe o anumită gazdă și port pe TCP. Vrem să schimbăm această setare, astfel încât să asculte într-un fișier local de socket, deoarece acest lucru îmbunătățește performanța generală a serverului.
Schimbați linia care conține directiva listen:
/etc/php-fpm.d/www.conf
listen = /var/run/php-fpm/php-fpm.sock;
În cele din urmă, va trebui să schimbăm proprietarul și setările grupului pentru fișierul socket pe care tocmai l-am definit în directiva listen. Localizați directivele listen.owner, listen.group și listen.mode . Aceste rânduri sunt comentate în mod implicit. Descomentați-le eliminând ; semnul precedent de la începutul liniei. Apoi, schimbați proprietarul și grupul în nginx:
/etc/php-fpm.d/www.conf
listen.owner = nginx
listen.group = nginx
listen.mode = 0660
Salvați și închideți fișierul când ați terminat de editat. Dacă utilizați nano, faceți acest lucru apăsând CTRL + X, apoi Y și ENTER.
Pentru a activa și porni serviciul php-fpm, executați:
# systemctl start php-fpm
Mediul dvs. PHP este acum gata. Apoi, vom configura Nginx astfel încât să trimită toate cererile de scripturi PHP care să fie procesate de către php-fpm.
Configurarea Nginx pentru procesarea paginilor PHP
Acum, avem toate componentele necesare instalate. Singura modificare a configurației pe care trebuie să o facem este să îi spunem lui Nginx să folosească procesorul nostru PHP pentru conținut dinamic.
Nginx are un director dedicat în care putem defini fiecare site web găzduit ca un fișier de configurare separat, utilizând un bloc server. Acest lucru este similar cu gazdele virtuale Apache.
Cu instalarea implicită, totuși, acest director este gol. Vom crea un fișier nou pentru a servi ca site-ul web implicit PHP pe acest server, care va înlocui blocul de server implicit definit în /etc/nginx/nginx.conffișier.
Mai întâi, deschideți un fișier nou în /etc/nginx/conf.d:
# nano /etc/nginx/conf.d/default.conf
Copiați următorul bloc de definiție a serverului PHP în fișierul de configurare și nu uitați să înlocuiți server_namedirectiva, astfel încât să indice numele de domeniu al serverului sau adresa IP:
/etc/nginx/conf.d/default.conf
server {
listen 80;
server_name server_domain_or_IP;
root /usr/share/nginx/html;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
Salvați și închideți fișierul când ați terminat.
Apoi, reporniți Nginx pentru a aplica modificările:
# systemctl restart nginx
Serverul dvs. web este acum complet configurat. În pasul următor, vom testa integrarea PHP la Nginx.
Testarea procesării PHP pe serverul dvs. Web
Acum că serverul dvs. web este configurat, putem crea un script PHP de testare pentru a ne asigura că Nginx gestionează corect .phpscripturile cu ajutorul php-fpm.
Următoarea comandă va schimba calitatea de proprietar al rădăcinii documentului Nginx implicit la un utilizator și la un grup numit sammy, deci asigurați-vă că înlocuiți numele de utilizator și grupul evidențiat în această comandă pentru a reflecta numele de utilizator și grupul sistemului.
# chown -R sammy.sammy /usr/share/nginx/html/
Vom crea acum o pagină de testare PHP pentru a ne asigura că serverul web funcționează conform așteptărilor.
Creați un nou fișier PHP numit info.php în /usr/share/nginx/html :
# nano /usr/share/nginx/html/info.php
Următorul cod PHP va afișa informații despre mediul curent PHP care rulează pe server:
/usr/share/nginx/html/info.php
<?php
phpinfo();
Când ați terminat, salvați și închideți fișierul.
Acum putem testa dacă serverul nostru web poate afișa corect conținutul generat de un script PHP. Accesați browserul și accesați numele gazdei serverului sau adresa IP, urmată de /info.php:
http://server_host_or_IP/info.php
După ce verificați informațiile relevante despre serverul dvs. PHP prin intermediul acelei pagini, cel mai bine este să eliminați fișierul pe care l-ați creat, deoarece conține informații sensibile despre mediul dvs. PHP și serverul dvs. CentOS. Puteți utiliza " rm " pentru a elimina acel fișier:
# rm /usr/share/nginx/html/info.php
Puteți oricând să regenerați acest fișier dacă aveți nevoie de el mai târziu.
Concluzie
În acest ghid, ați construit o bază flexibilă pentru a servi site-urilor web și aplicațiilor PHP vizitatorilor dvs., utilizând Nginx ca server web și cea mai recentă versiune de versiune PHP. Ați configurat Nginx pentru a gestiona solicitările PHP php-fpmși ați configurat, de asemenea, o bază de date MariaDB pentru a stoca datele site-ului dvs. web.