Introducere
Grupul LEMP este un grup de software open source care este instalat împreună pentru a activa un server care să găzduiască site-uri dinamice și aplicații web. Acest termen este un acronim care reprezintă sistemul de operare Linux, cu server-ul web Nginx (care înlocuiește componenta Apache din grupul LAMP). Datele site-ului sunt stocate în MySQL, iar conținutul dinamic este procesat de PHP.
În acest ghid, vom instala grupul LEMP pe un VPS (Virtual Private Server) CentOS 7. CentOS va respecta prima cerință: un sistem de operare Linux.
Condiție Prealabilă
Înainte de a începe acest ghid, ar trebui să aveți separat, un cont de utilizator non-root pe server-ul dvs.
Observație despre SELinux: Dacă aveți o problemă cu nefuncționarea Nginx, verificați dacă configurarea fișierelor este corectă sau schimbați modul SELinux în permissive sau disabled.
Pasul Unu – Instalarea Nginx
În scopul de a afișa pagini web vizitatorilor site-ului dvs., vom instala Nginx, un server web modern și eficient.
Pentru a adăuga arhiva CentOS EPEL, deschideți terminalul și folosiți următoarea comandă:
sudo yum install epel-release
Din moment ce folosim comanda sudo, aceste operații se execută cu privilegii root. Vi se va cere parola dvs. de utilizator obișnuit pentru a verifica dacă aveți permisiunea să rulați comenzi cu drepturi root.
Acum că arhiva Nginx este instalată pe server-ul dvs., instalați Nginx folosind comanda yum:
sudo yum install nginx
După aceea, server-ul dvs. este instalat.
După instalare, puteți începe Nginx pe VPS:
sudo systemctl start nginx
Puteți face o verificare la fața locului imediat pentru a vedea dacă totul a decurs conform planului, accesând adresa IP publică în browser-ul dvs. web (a se vedea nota de la punctul următor pentru a afla care este adresa IP publică în cazul în care nu dețineți această informație):
Accesați într-un browser:
http://server_domain_name_or_IP/
Veți vedea pagina web implicită CentOS Apache, care este doar în scop informativ și de testare. Ar trebui să arate ca mai jos:
Dacă vizualizați această pagină atunci server-ul dvs. web este corect instalat.
Ultimul lucru pe care trebuie să îl faceți este să activați Apache pentru a porni la boot. Pentru a face acest lucru folosiți următoarea comandă:
sudo systemctl enable nginx
Cum să găsim adresa publică a server-ului
Dacă nu cunoașteți adresa IP publică a server-ului dvs. sunt o mulțime de modalități să o aflați. În mod normal, aceasta este adresa pe care o folosiți să vă conectați la server cu ajutorul SSH.
Din linia de comandă o puteți afla în câteva moduri. Primul, puteți folosi instrumentul iproute2 pentru a obține adresa tastând:
ip addr show eth0 | grep inet | awk ‘{ print $2; }’ | sed ‘s/\/.*$//’
Aceasta vă va întoarce una sau două linii. Ambele sunt adrese corecte, dar calculatorul dvs. poate folosi doar una dintre ele, așa că o puteți folosi pe care doriți.
O metodă alternativă este să folosiți o parte din afacere pentru a vă spune cum se vede server-ul. Puteți face acest lucru cerându-i unui server adresa dvs. IP:
curl http://icanhazip.com
Indiferent de metoda folosită pentru a obține adresa IP, o puteți introduce în bara de adrese a browser-ului dvs. pentru a accesa server-ul.
Pasul Doi – Instalarea MySQL (MariaDB)
Acum că aveți server-ul funcțional, este timpul să instalați MariaDB, un înlocuitor MySQL. MariaDB este o comunitate dezvoltată de sistemul de management al bazelor de date MySQL. Practic, acesta va organiza și va oferi acces la baza de date în care site-ul dvs. stochează informația.
Încă o dată, putem folosi yum pentru a achiziționa și instala software-ul nostru. De această dată, vom instala de asemenea și alte pachete ajutătoare care ne vor ajuta să facem componentele noastre să funcționeze între ele:
sudo yum install mariadb-server mariadb
Când instalarea este completă, va trebui să pornim MariaDB folosind următoarea comandă:
sudo systemctl start mariadb
Acum că baza de date MySQL funcționează, va trebui să rulăm un singur script de securitate care va înlătura unele setări implicite periculoase și să limităm puțin accesul la baza noastră de date. Lansați script-ul interactiv rulând:
sudo mysql_secure_installation
Veți fi întrebat care este parola root actuală. Din moment ce abia ați instalat MySQL, cel mai probabil nu veți avea o parolă, așa că o puteți lăsa liberă tastând enter. Apoi veți fi întrebat dacă doriți să setați o parolă root. Mergeți mai departe și introduceți Y, și 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.
New password: password
Re-enter new password: password
Password updated successfully!
Reloading privilege tables..
… Success!
Pentru restul întrebărilor, va trebui să apăsați tasta „ENTER” pentru fiecare întrebare pentru a accepta valorile implicite. Aceasta va înlătura utilizatorii simpli și bazele de date, va dezactiva autentificările de la distanță și va încărca acele reguli ca MySQL să respecte imediat schimbările pe care le-am făcut.
Ultimul lucru pe care veți dori să îl faceți este să activați MariaDB pentru a porni la boot. Folosiți următoarea comandă pentru a face acest lucru:
sudo systemctl enable mariadb
În acest moment sistemul de bază de date este acum configurat și putem merge mai departe.
Pasul Trei – Instalarea PHP
PHP este componenta noastră de configurare care va procesa codurile pentru a afișa conținutul dinamic. Poate rula script-uri, se poate conecta la baza de date MySQL pentru a obține informații și poate înmâna conținutul procesat mai departe server-ului dvs. pentru a-l afișa.
Încă o dată putem folosi sistemul yum pentru a instala componentele noastre. Vom include de asemenea pachetele php-mysql și php-fpm:
sudo yum install php php-mysql php-fpm
Configurarea Procesorului PHP
Avem acum componentele PHP instalate, dar va trebui să facem câteva ușoare modificări de configurare pentru mai multă siguranță.
Deschideți fișierul php-fpm principal de configurare cu drepturi root:
sudo vi /etc/php.ini
Ceea ce căutăm în acest fișier este parametrul care stabilește cgi.fix_pathinfo. Acesta va fi comentat cu punct și virgulă (;) și setat implicit la „1”.
Aceasta este o setare extrem de nesigură pentru că cere PHP să încerce să execute cele mai apropiate fișiere pe care le găsește chiar dacă un fișier PHP nu se potrivește exact. Acesta practic ar permite accesul utilizatorilor să unească cererile PHP într-un mod care le-ar permite să execute script-uri pe care nu ar avea permisiunea să le execute.
Vom schimba ambele condiții prin înlăturarea liniei și a setării „0” ca mai jos:
sudo vi /etc/php.ini
Salvați și închideți fișierul când ați terminat.
Mai departe, deschideți fișierul php-fpm de configurare www.conf:
sudo vi /etc/php-fpm.d/www.conf
Găsiți linia care specifică parametrul listen și modificați-l să arate ca mai jos:
/etc/php-php.d/www.conf — 1 of 3
listen = /var/run/php-fpm/php-fpm.sock
În continuare, găsiți liniile care setează listen.owner și listen.group și înlăturați comentariul. Ar trebui să arate ca mai jos:
/etc/php-php.d/www.conf — 2 of 3
listen.owner = nobody
listen.group = nobody
La final, găsiți liniile care setează user și group și modificați-le valorile din „apache” în „nginx”:
/etc/php-php.d/www.conf — 3 of 3
user = nginx
group = nginx
Salvați și ieșiți.
Acum avem nevoie pentru a începe, să deschidem procesorul PHP tastând:
sudo systemctl start php-fpm
Acesta va implementa schimbările pe care le-am făcut.
Mai departe, activați php-fpm să pornească la boot:
sudo systemctl enable php-fpm
Pasul Patru – Configurarea Nginx pentru a Procesa Paginile PHP
Acum avem toate componentele cerute instalate. Singura schimbare de configurare pe care mai trebuie să o faceți este să cerem Nginx să folosească procesorul PHP pentru conținut dinamic.
Vom face acest lucru la nivelul unității server-ului (unitățile de server sunt similare cu Apache virtual host). Deschideți fișierul de configurare implicită a unității server Nginx tastând:
sudo vi /etc/nginx/conf.d/default.conf
În prezent, având comentariile înlăturate, unitatea implicită de server Nginx va arăta ca mai jos:
/etc/nginx/conf.d/default.conf — original
server {
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
Va trebui să aducem unele modificări acestui fișier pentru site-ul nostru.
În primul rând, va trebui să adăugăm opțiunea index.php ca prima valoare a directivei indexului nostru pentru a permite fișierelor index PHP să fie salvate când un director este cerut.
De asemenea, va trebui să modificăm directiva server_name pentru a indica numele domeniului server-ului nostru sau adresa IP publică.
Actualul fișier de configurare include câteva linii comentarii care definesc erorile de procesare obișnuite. Le vom înlătura pe acelea pentru a include acea funcționalitate.
Pentru actuala procesare PHP, va trebui să înlăturăm o porțiune dintr-o altă secțiune. De asemenea va trebui să adăugăm directiva try_files pentru a ne asigura că Nginx nu permite trecerea cererilor negative către procesorul PHP.
Schimbările pe care trebuie să le faceți sunt scrise îngroșat în textul de mai jos. Dacă doriți, puteți doar copia și lipi totul, iar mai apoi puteți înlocui valoarea server_name cu un nume de domeniu apropiat sau cu o adresă IP:
/etc/nginx/conf.d/default.conf — updated
server {
listen 80;
server_name server_domain_name_or_IP;
# note that these lines are originally from the „location /” block
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;
}
}
După ce ați făcut modificările de mai sus, puteți salva și închide fișierul.
Reporniti Nginx, pentru a se face modificările necesare:
sudo systemctl restart nginx
Pasul Cinci – Testarea Procesării PHP pe Server-ul Web
În loc să testăm dacă sistemul dvs. este configurat corespunzător pentru PHP, putem crea un script de bază pentru PHP.
Îl putem numi info.php. Pentru ca Apache să găsească fișierul și să îl folosească corect, trebuie să fie salvat într-un director specific, care este numit “web root”.
În CentOS 7, acest director este localizat în /usr/share/nginx/html/. Putem crea fișierul în acea locație tastând:
sudo vi /usr/share/nginx/html/info.php
Acesta va deschide un fișier nou. Va trebui să punem următorul text, care este un cod PHP valid, în interiorul fișierului:
Test PHP Script
<?php phpinfo(); ?>
Când ați terminat salvați și închideți fișierul.
Acum putem testa dacă server-ul nostru web poate afișa conținut generat de script-ul PHP. Pentru a încerca acest lucru nu trebuie decât să vizităm pagina prin intermediul browser-ului web. Veți avea nevoie de adresa IP publică.
Adresa pe care dorim să o vizităm va fi:
http://your_server_IP_address/info.php
Pagina afișată va arăta ca cea de mai jos:
Această pagină oferă informații despre server din perspectiva PHP. Este util pentru depanare și pentru a vă asigura că setările dvs. sunt aplicate corect.
În cazul în care acest lucru a fost un succes, atunci PHP funcționează conform așteptărilor.
Probabil veți dori să înlăturați acest fișier după test pentru că poate să ofere informații despre server utilizatorilor neautorizați. Pentru a face acest lucru, puteți tasta următoarele:
sudo rm /usr/share/nginx/html/info.php
Puteți oricând reface această pagină dacă doriți să accesați aceste informații mai târziu.
Concluzii
Acum că aveți grupul LEMP instalat, aveți multe opțiuni pentru ce să faceți în continuare. Practic ați instalat o platformă care vă va permite să instalați o mulțime de website-uri și software web pe server-ul dvs.