Cum să instalezi Linux, Nginx, MySQL, PHP (LEMP) Stack pe Ubuntu: Ghid complet
Stiva LEMP — un acronim pentru Linux, Nginx, MySQL și PHP — este una dintre cele mai adoptate configurații de server web pentru alimentarea site-urilor web dinamice și a aplicațiilor web de înaltă performanță. Prin combinarea stabilității solide a Linux, vitezei fulgerătoare a Nginx, capacităților robuste de gestionare a datelor ale MySQL și versatilității PHP, stiva LEMP oferă un mediu de hosting puternic, scalabil și eficient din punct de vedere al resurselor.
Indiferent dacă implementezi un blog personal, un site web de afaceri sau o aplicație enterprise complexă, o stivă LEMP configurată corect îți oferă o scalabilitate mai bună, timpi de încărcare a paginii mai rapizi și gestionare eficientă a memoriei — mai ales în condiții de trafic ridicat.
Dacă ai nevoie de o fundație fiabilă pentru a rula această stivă, VPS Hosting-ul AlexHost oferă servere virtuale Linux de înaltă performanță cu acces root complet, oferindu-ți control total asupra fiecărei componente a mediului tău LEMP. Combină-l cu un Certificat SSL pentru a-ți securiza aplicația din prima zi.
În acest ghid cuprinzător, te vom ghida prin fiecare pas al instalării și configurării stivei LEMP complete pe un server Ubuntu — de la pregătirea inițială a sistemului la testarea mediului PHP live.
1. Condiții preliminare
Înainte de a începe, asigurați-vă că aveți următoarele:
- Un server care rulează Ubuntu 18.04, 20.04, sau 22.04 LTS
- Un cont de utilizator cu privilegii sudo
- Acces SSH sau acces direct la terminal pe serverul dvs.
- Un nume de domeniu înregistrat (opțional, dar recomandat pentru implementări în producție — puteți înregistra unul prin Înregistrarea domeniilor AlexHost)
> Sfat profesional: Pentru un mediu curat și izolat cu resurse garantate, un plan de VPS Hosting este punctul de plecare ideal pentru orice implementare LEMP.
2. Actualizați-vă sistemul
Înainte de a instala orice pachete, este esențial să vă reîmprospătați indexul de pachete și să aplicați toate actualizările în așteptare. Acest lucru vă asigură că lucrați cu versiunile cele mai recente și mai sigure ale tuturor software-urilor.
Deschideți terminalul și rulați:
sudo apt update && sudo apt upgrade -yAceastă comandă actualizează baza de date locală a pachetelor și actualizează toate pachetele instalate la versiunile lor cele mai recente disponibile.
3. Instalați Nginx
Nginx (pronunțat “engine-x”) este un server web de înaltă performanță, bazat pe evenimente, și un reverse proxy. Spre deosebire de Apache, Nginx gestionează conexiunile simultane cu consum minim de memorie, ceea ce îl face alegerea preferată pentru mediile cu trafic ridicat.
Pasul 1: Instalați Nginx
sudo apt install nginx -yPasul 2: Porniți și Activați Nginx
După instalare, porniți serviciul Nginx și configurați-l să se lanseze automat la pornirea sistemului:
sudo systemctl start nginx
sudo systemctl enable nginxPasul 3: Verificați dacă Nginx funcționează
Verificați starea serviciului pentru a confirma că Nginx este activ:
sudo systemctl status nginxAr trebui să vedeți o ieșire care indică faptul că serviciul este activ (running). Puteți, de asemenea, deschide un browser web și să navigați la adresa IP a serverului dvs.:
http://your_server_ipDacă Nginx funcționează corect, veți fi întâmpinat de pagina implicită “Welcome to nginx!”.
Pasul 4: Configurați Firewall-ul (Dacă este cazul)
Dacă aveți UFW (Uncomplicated Firewall) activat, permiteți traficul HTTP și HTTPS:
sudo ufw allow 'Nginx Full'
sudo ufw status4. Instalați MySQL
MySQL este un sistem puternic și open-source de gestionare a bazelor de date relaționale (RDBMS) care servește ca coloană vertebrală a datelor pentru majoritatea aplicațiilor web dinamice, inclusiv WordPress, Joomla și aplicații PHP personalizate.
Pasul 1: Instalați serverul MySQL
sudo apt install mysql-server -yPasul 2: Securizați instalarea MySQL
După instalare, rulați scriptul de consolidare a securității încorporat. Acest script vă ajută să setați o parolă puternică pentru root, să eliminați utilizatorii anonimi, să dezactivați conectarea la distanță a root-ului și să ștergeți baza de date de test:
sudo mysql_secure_installationVi se vor pune o serie de întrebări. Răspunsurile recomandate pentru un server de producție sunt:
| Prompt | Răspuns recomandat |
|---|---|
| Configurați componenta VALIDATE PASSWORD? | Da |
| Nivelul politicii de validare a parolei | 2 (STRONG) |
| Eliminați utilizatorii anonimi? | Da |
| Interziceți conectarea la distanță a root-ului? | Da |
| Ștergeți baza de date de test? | Da |
| Reîncărcați tabelele de privilegii? | Da |
Pasul 3: Verificați că MySQL rulează
sudo systemctl status mysqlPasul 4: Conectați-vă la MySQL (Verificare opțională)
sudo mysql -u root -pIntroduceți parola root-ului când vi se solicită. Tastați exit pentru a ieși din shell-ul MySQL.
5. Instalați PHP
PHP (Hypertext Preprocessor) este limbajul de scripting pe partea serverului care procesează conținut dinamic și comunică cu MySQL pentru a servi pagini web bazate pe date. Atunci când utilizați Nginx, PHP este gestionat prin PHP-FPM (FastCGI Process Manager), care procesează cererile PHP independent de serverul web pentru performanță îmbunătățită.
Pasul 1: Instalați PHP-FPM și extensia MySQL
sudo apt install php-fpm php-mysql -yDe asemenea, poate doriți să instalați extensii PHP utilizate în mod obișnuit pentru compatibilitate mai largă a aplicațiilor:
sudo apt install php-curl php-gd php-mbstring php-xml php-xmlrpc php-zip -yPasul 2: Configurați PHP-FPM pentru securitate
Deschideți fișierul de configurare PHP-FPM. Înlocuiți 8.1 cu versiunea PHP instalată (verificați cu php -v):
sudo nano /etc/php/8.1/fpm/php.iniLocalizați directiva cgi.fix_pathinfo și setați-o la 0 pentru a preveni o vulnerabilitate critică de securitate:
cgi.fix_pathinfo=0> De ce este important: Dacă cgi.fix_pathinfo este setat la 1, PHP va încerca să execute cel mai apropiat fișier pe care îl poate găsi dacă fișierul PHP solicitat nu există. Acest comportament poate fi exploatat de atacatori pentru a executa cod arbitrar.
Salvați și închideți fișierul (Ctrl+X, apoi Y, apoi Enter).
Pasul 3: Reporniți PHP-FPM
Aplicați modificările de configurare prin repornirea serviciului PHP-FPM:
sudo systemctl restart php8.1-fpm6. Configurați Nginx pentru a Procesa PHP
În mod implicit, Nginx nu știe cum să gestioneze fișierele PHP. Trebuie să creați un server block (echivalentul Nginx al unui virtual host Apache) care să instruiască Nginx să transmită cererile PHP la PHP-FPM pentru procesare.
Pasul 1: Creați Directorul Rădăcină Web
Creați directorul în care vor fi stocate fișierele site-ului dvs.:
sudo mkdir -p /var/www/your_domain
sudo chown -R www-data:www-data /var/www/your_domain
sudo chmod -R 755 /var/www/your_domainÎnlocuiți your_domain cu numele dvs. de domeniu real sau cu un nume de proiect descriptiv.
Pasul 2: Creați un Nou Server Block Nginx
Creați un nou fișier de configurare Nginx pentru site-ul dvs.:
sudo nano /etc/nginx/sites-available/your_domainAdăugați următorul bloc de configurare. Citiți cu atenție comentariile inline — ele explică ce face fiecare directivă:
server {
listen 80;
listen [::]:80;
server_name your_domain www.your_domain; # Replace with your domain or server IP
root /var/www/your_domain; # Document root — where your files live
index index.php index.html index.htm; # Default files to serve
# Handle all requests; return 404 if file not found
location / {
try_files $uri $uri/ =404;
}
# Pass PHP scripts to PHP-FPM for processing
location ~ .php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.1-fpm.sock; # Adjust PHP version as needed
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
# Deny access to hidden files (e.g., .htaccess)
location ~ /.ht {
deny all;
}
}> Important: Înlocuiți your_domain cu numele dvs. de domeniu real și ajustați php8.1-fpm.sock pentru a se potrivi cu versiunea PHP instalată.
Pasul 3: Activați Server Block-ul
Creați o legătură simbolică din sites-available la sites-enabled pentru a activa configurația:
sudo ln -s /etc/nginx/sites-available/your_domain /etc/nginx/sites-enabled/Pentru a evita o potențială problemă de memorie hash bucket, este, de asemenea, o bună practică să deschideți configurația principală Nginx și să vă asigurați că directiva server_names_hash_bucket_size este decomentată:
sudo nano /etc/nginx/nginx.confGăsiți și decomentați:
server_names_hash_bucket_size 64;Pasul 4: Testați Configurația Nginx
Înainte de a reporni Nginx, testați întotdeauna configurația pentru erori de sintaxă:
sudo nginx -tDacă rezultatul arată:
nginx: configuration file /etc/nginx/nginx.conf test is successfulSunteți gata să continuați.
Pasul 5: Reporniți Nginx
Aplicați toate modificările prin repornirea serviciului Nginx:
sudo systemctl restart nginx7. Creați și testați un fișier PHP Info
Pentru a confirma că Nginx transmite corect cererile PHP la PHP-FPM, creați un fișier de test PHP simplu în rădăcina documentelor.
Pasul 1: Creați fișierul PHP Info
sudo nano /var/www/your_domain/info.phpAdăugați următorul conținut:
<?php
phpinfo();
?>Salvați și închideți fișierul.
Pasul 2: Accesați pagina PHP Info
Deschideți browserul web și navigați la:
http://your_domain/info.phpSau, dacă nu ați configurat încă un domeniu:
http://your_server_ip/info.phpAr trebui să vedeți pagina de informații PHP — o prezentare detaliată a instalării PHP, modulelor încărcate, valorilor de configurare și variabilelor de mediu. Aceasta confirmă că toate trei componente (Nginx, PHP-FPM și MySQL) funcționează corect împreună.
Pasul 3: Eliminați fișierul PHP Info (pas critic de securitate)
După ce ați confirmat că totul funcționează, ștergeți fișierul info.php imediat. Acest fișier expune detalii sensibile de configurare a serverului care ar putea fi exploatate de actori rău intenționați:
sudo rm /var/www/your_domain/info.php8. Pași Următori: Consolidați și Optimizați Stiva LEMP
Cu stiva LEMP în funcțiune, luați în considerare următorii pași suplimentari pentru a pregăti serverul pentru producție:
Activați HTTPS cu un Certificat SSL Gratuit
Securizați site-ul cu criptare TLS/SSL folosind Certbot și Let’s Encrypt:
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d your_domain -d www.your_domainAlternativ, explorați Certificatele SSL AlexHost pentru certificatele comerciale validate premium care oferă niveluri mai mari de încredere pentru aplicațiile de afaceri și comerț electronic.
Optimizați Performanța Nginx
Adăugați următoarele directive la configurația Nginx pentru a îmbunătăți performanța:
# Enable Gzip compression
gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml;
# Enable browser caching for static assets
location ~* .(jpg|jpeg|png|gif|ico|css|js)$ {
expires 30d;
add_header Cache-Control "public, no-transform";
}Configurați un Utilizator MySQL Dedicat
Evitați utilizarea contului root MySQL pentru aplicațiile dvs. Creați un utilizator de bază de date dedicat cu privilegii limitate:
CREATE DATABASE your_app_db;
CREATE USER 'app_user'@'localhost' IDENTIFIED BY 'StrongPassword123!';
GRANT ALL PRIVILEGES ON your_app_db.* TO 'app_user'@'localhost';
FLUSH PRIVILEGES;Luați în Considerare un Panou de Control pentru o Gestionare mai Ușoară
Dacă preferați o interfață grafică pentru gestionarea stivei LEMP, gazdelor virtuale Nginx, bazelor de date și conturilor de e-mail, luați în considerare implementarea unui panou de control. AlexHost oferă VPS cu cPanel și o gamă de alte Panouri de Control VPS pentru a simplifica administrarea serverului fără a sacrifica performanța sau controlul.
9. Concluzie
Ați instalat și configurat cu succes o stivă completă LEMP (Linux, Nginx, MySQL, PHP) pe serverul dvs. Ubuntu. Iată un rezumat rapid al ceea ce ați realizat:
- ✅ Nginx instalat, pornit și configurat ca server web
- ✅ MySQL instalat și securizat cu scriptul de întărire
- ✅ PHP-FPM instalat cu configurație orientată pe securitate
- ✅ Nginx server block configurat pentru a dirija cererile PHP către PHP-FPM
- ✅ Procesarea PHP verificată prin pagina de test
phpinfo()
Această stivă vă oferă o fundație gata pentru producție pentru găzduirea aproape oricărei aplicații bazate pe PHP — de la WordPress și Laravel la platforme construite personalizat. Combinația arhitecturii conduse de evenimente a Nginx și gestionării proceselor PHP-FPM o face deosebit de potrivită pentru sarcini cu concurență ridicată.
Pentru cea mai bună performanță și fiabilitate, găzduiți stiva LEMP pe un mediu Linux construit în acest scop. Planurile AlexHost VPS Hosting oferă stocare cu suport SSD, RAM garantat, acces complet root și suport tehnic 24/7 — tot ceea ce aveți nevoie pentru a rula o aplicație web rapidă, sigură și scalabilă.
Nu uitați să mențineți toate componentele actualizate în mod regulat, să monitorizați jurnalele serverului și să implementați un firewall și un sistem de detectare a intruziunilor ca parte a poziției dvs. de securitate continuă.
la toate serviciile de găzduire