martie 19, 2026
5 min read
administratore

Cum sa migrezi un site WordPress de pe Apache pe Nginx + PHP-FPM fara downtime: ghid tehnic complet

De ce sa treci de la Apache la Nginx

Daca ai un site WordPress care incepe sa se descurce greu la trafic mare, Apache e probabil cauza. Nginx consuma de 4 ori mai putina memorie si poate gestiona de 10 ori mai multe conexiuni simultane. Nu e magie, e arhitectura: Apache creeaza un proces sau thread pentru fiecare conexiune, Nginx foloseste un model bazat pe evenimente.

Pentru WordPress, combinatia Nginx + PHP-FPM e ideala. Nginx se ocupa eficient de fisierele statice si de proxy, iar PHP-FPM iti ofera control total asupra proceselor PHP. Poti rula mai multe versiuni de PHP simultan, poti aloca resurse diferit pe proiect si poti restarta PHP fara sa opresti serverul web.

Migratia asta pare complicata, dar cu metoda potrivita o faci fara nicio secunda de nefunctionare. Haideam sa vedem cum.

Ce ai nevoie inainte sa incepi

Primul pas e sa instalezi Nginx alaturi de Apache, nu in locul lui. Ambele pot rula simultan pe porturi diferite. Apache ramane pe portul 80 si 443, iar Nginx va folosi 8080 provizoriu pentru testare.

Instaleaza Nginx si PHP-FPM:

apt update && apt install nginx php8.2-fpm php8.2-mysql php8.2-curl php8.2-gd php8.2-mbstring php8.2-xml php8.2-zip

Verifica ca PHP-FPM porneste automat:

systemctl enable php8.2-fpm && systemctl start php8.2-fpm

PHP-FPM comunica prin socket UNIX (mai rapid decat TCP). Socket-ul implicit e /run/php/php8.2-fpm.sock. Verifica ca exista si ca e citit de www-data.

Configurarea Nginx pentru WordPress

Creeaza un fisier de configurare pentru site-ul tau in /etc/nginx/sites-available/. Iata o configuratie optima pentru WordPress:

server {
  listen 8080;
  server_name example.com;
  root /var/www/wordpress;
  index index.php;

  location / {
    try_files $uri $uri/ /index.php?$args;
  }

  location ~ \.php$ {
    include snippets/fastcgi-php.conf;
    fastcgi_pass unix:/run/php/php8.2-fpm.sock;
  }

  location ~ /\.ht {
    deny all;
  }

  location ~* \.(jpg|jpeg|png|gif|ico|css|js|woff|woff2)$ {
    expires 365d;
    add_header Cache-Control "public, immutable";
  }
}

Activeaza configuratia si testeaza:

ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
nginx -t

Daca totul e in regula, porneste Nginx:

systemctl start nginx

Optimizarea PHP-FPM pentru performanta

Configuratia implicita a PHP-FPM nu e suficienta pentru un site cu trafic decent. Deschide /etc/php/8.2/fpm/pool.d/www.conf si ajusteaza valorile:

pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 10
pm.max_requests = 500

Aceste valori functioneaza bine pentru un server cu 4GB RAM. Daca ai mai mult, poti creste pm.max_children la 100. Formula simpla: RAM disponibila pentru PHP impartita la 50MB per proces PHP (WordPress consuma in medie 30-50MB per proces).

Activeaza status page pentru monitorizare:

pm.status_path = /fpm-status

Restarteza PHP-FPM:

systemctl restart php8.2-fpm

Testarea configuratiei pe portul 8080

Inainte sa muti traficul, verifica ca totul functioneaza pe portul 8080. Adauga portul in fisierul hosts local sau testeaza direct prin IP:

curl -H "Host: example.com" http://IP-SERVER:8080

Testeaza toate functionalitatile critice: login in WordPress, publicare articol, upload imagine, functionalitate plugin-uri importante. Daca ai cache (Redis, Memcached), verifica ca se conecteaza corect.

Verifica timpii de raspuns cu curl -w "@curl-format.txt" -o /dev/null -s http://IP-SERVER:8080. Ar trebui sa vezi raspunsuri sub 200ms pentru pagini necachate.

Trecerea fara nefunctionare

Acum vine partea importanta: cum muti traficul de la Apache la Nginx fara sa pierzi nicio vizita.

Metoda cea mai sigura e sa folosesti Apache ca proxy invers temporar. Modifica configuratia Apache sa trimita cererile catre Nginx pe 8080:

a2enmod proxy proxy_http
systemctl restart apache2

Apoi adauga in VirtualHost-ul Apache:

ProxyPreserveHost On
ProxyPass / http://127.0.0.1:8080/
ProxyPassReverse / http://127.0.0.1:8080/

Acum Apache trimite toate cererile catre Nginx, dar ramane pe portul 80. Clientii vad exact acelasi site. Monitorizeaza log-urile ambelor servere pentru erori:

tail -f /var/log/nginx/error.log /var/log/apache2/error.log

Daca totul functioneaza perfect dupa cateva ore (sau zile, daca vrei sa fii sigur), opreste Apache si muta Nginx pe portul 80:

systemctl stop apache2
systemctl disable apache2

Modifica in /etc/nginx/sites-available/example.com:

listen 80;
listen [::]:80;

Pentru HTTPS, copiaza certificatele SSL si adauga:

listen 443 ssl http2;
listen [::]:443 ssl http2;
ssl_certificate /etc/ssl/certs/example.com.crt;
ssl_certificate_key /etc/ssl/private/example.com.key;

Reincarca Nginx:

nginx -s reload

Monitorizare si optimizare finala

Dupa migratie, monitorizeaza consumul de resurse cu htop. Ar trebui sa vezi mult mai putina utilizare de memorie comparativ cu Apache. Procesele Nginx consuma doar 2-5MB fiecare, fata de 20-50MB pentru Apache.

Configureaza log-uri separate pentru erori si acces. Activeaza rotirea log-urilor ca sa nu umple discul:

/var/log/nginx/*.log {
  daily
  rotate 14
  compress
  delaycompress
}

Daca vrei sa optimizezi si mai mult, activeaza cache FastCGI in Nginx. Adauga in blocul server:

fastcgi_cache_path /var/cache/nginx levels=1:2 keys_zone=WORDPRESS:100m;
fastcgi_cache_key "$scheme$request_method$host$request_uri";
fastcgi_cache_use_stale error timeout invalid_header http_500;
fastcgi_ignore_headers Cache-Control Expires Set-Cookie;

In blocul location ~ \.php$:

fastcgi_cache WORDPRESS;
fastcgi_cache_valid 200 60m;

Aceasta configuratie reduce incarcarea pe baza de date dramatic. Paginile se servesc din cache RAM fara sa mai execute PHP.

Concluzie

Migratia de la Apache la Nginx nu e un salt in necunoscut. Cu metoda proxy invers, o faci treptat si sigur. Rezultatul e un server care consuma mai putine resurse, raspunde mai rapid si scala mai bine.

Daca iti gestionezi singur serverul, asta e una dintre cele mai bune optimizari pe care le poti face. Diferenta se simte imediat in timpii de raspuns si in capacitatea de a gestiona trafic mare.

Distribuie

Hai să construim ceva
remarcabil împreună.

Fie că ai nevoie de un site nou, un rebranding complet sau ajutor în creșterea prezenței online — ne-ar plăcea să aflăm despre proiectul tău.

Contactează-ne
+40 770 863 535
office@goldenlobster.ro