Trecerea de la Apache la NGINX – configurare Nginx

Apache-vs-Nginx

Spuneam mai devreme care ar fi primii pași pentru Trecerea de la Apache la Nginx. Mai departe mă voi ocupa de configurarea Nginx.

Am avea apoi de configurat Nginx să functioneze cu setările ce erau folosite de Apache. Trebuiesc verificate toate declarațiile de servere Apache și pentru fiecare ar trebui să adăugăm un bloc de instrucțiuni specifice pentru Nginx. Fișierele de configurare pentru serverele de tip Apache se află în structura de fișiere a serverului pe calea:

/etc/apache2/sites-available/

Similar Nginx își ține fișierele de configurare în structura de fișiere pe calea:

/etc/nginx/sites-available/

Este binecunoscut faptul ca în sistemele de operare de tip Linux fișierele de configurare sunt păstrate în folderul /etc . Ele pot fi editate oricând, însă pentru a fi luate in considerare noile setări, serviciile ce folosesc acele fișiere de configurare trebuiesc repornite. Repornirea serviciilor eu o fac folosind comenzi de resetare ce implică init.d. Există și alte modalități în funcție de aroma de linux instalată pe server. Toate operațiunile în folderul /etc se fac folosind un cont de root sau un cont ce are permisuni de a face asta. Așa se face că pentru a reporni Apache eu folosesc comanda (ca root):

/etc/init.d/apache2 restart

iar pentru a reporni serverul Nginx folosesc comanda:

/etc/init.d/nginx restart.

Comenzile pot fi puțin diversificate în sensul că pot opri, pot porni și pot afla statusul unui anumit serviciu. De exemplu pentru Apache comenzile ar fi:

/etc/init.d/apache2 restart – Repornesc serverul Apache
/etc/init.d/apache2 stop – Opresc serverul Apache
/etc/init.d/apache2 start – Pornesc serverul Apache
/etc/init.d/apache2 status – Aflu dacă serverul funcționează și care este statusul lui

Un fișier de configurare pentru Apache arată similar cu acesta:

 

<VirtualHost *:80>
        ServerAdmin webmaster@your_site.com
        ServerName your_site.com
        ServerAlias www.your_site.com
        DocumentRoot /var/www
        <Directory />
             Options FollowSymLinks
             AllowOverride None
        </Directory>
        <Directory /var/www/>
             Options Indexes FollowSymLinks MultiViews
              AllowOverride None
              Order allow,deny
              allow from all
        </Directory>
        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        <Directory "/usr/lib/cgi-bin">
             AllowOverride None 
             Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
              Order allow,deny
              Allow from all
        </Directory>
         ErrorLog ${APACHE_LOG_DIR}/error.log
             LogLevel warn
            CustomLog ${APACHE_LOG_DIR}/access.log combined
         Alias /doc/ "/usr/share/doc/"
       <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
       AllowOverride None Order deny,allow
             Deny from all
             Allow from 127.0.0.0/255.0.0.0 ::1/128
      </Directory>
</VirtualHost>

 

 

Acesta poate fi urmărit și oarecum replicat în fișierul de configurare pentru Nginx, care inițial este completat de forma:

 

 

server { listen 8000; 
          root /usr/share/nginx/www; 
          index index.html index.htm; 
          server_name localhost; 
          location / { 
                      try_files $uri $uri/ /index.html; 
                      } 
          location /doc/ { 
                       alias /usr/share/doc/; 
                       autoindex on; 
                       allow 127.0.0.1; 
                       deny all; 
                         } 
         }

 

 

Asta dacă scoatem din el toate comentariile.

Așa cum spuneam acesta este fișierul aflat în folderul /etc/nginx/sites-available/ și poate fi editat cu orice editor de text însă eu prefer nano ca root.

nano /etc/nginx/sites-available/default

Nu putem să nu observăm ca informația din acest fișier seamănă cu informația din fișierul de configurare Apache. Putem astfel să echivalăm cele două fișiere de configurare după cum urmează:

 

 

Apache                                 Nginx 
------                                 ------ 
<VirtualHost *:80>                     server { 
                                                listen 80; 
ServerName yoursite.com              
ServerAlias www.yoursite.com           server_name yoursite.com www.yoursite.com; 
DocumentRoot /path/to/root             root /path/to/root; 
AllowOverride All                      (Nu există o alternativă) 
DirectoryIndex index.php               index index.php; 
ErrorLog /path/to/log                  error_log /path/to/log error; 
CustomLog /path/to/log combined        access_log /path/to/log main; 
Alias /url/ "/path/to/files"           location /url/ { 
<Directory "/path/to/files">                 alias /path/to/files;

 

 

Dacă ar fi să luăm datele din fișierul de configurare Apache de mai sus să le transpunem în fișierul de configurare al Nginx am ajunge la o variantă de forma:

 

server { listen 8000;   # Am lăsat așa pentru moment pentru a nu intra în conflict cu 
                           portul 80 care este încă folosit de Apache 
root /var/www; 
server_name your_site.com www.your_site.com; 
location / { 
            try_files $uri $uri/ /index.html; 
            } 
location ~ \.php$ { 
            fastcgi_split_path_info ^(.+\.php)(/.+)$; 
            fastcgi_pass unix:/var/run/php5-fpm.sock; 
            fastcgi_index index.php; 
            include fastcgi_params; 
                 } 
location /doc/ { 
            alias /usr/share/doc/; 
            autoindex on; 
            allow 127.0.0.1; 
            deny all; 
               } 
location ~/\.ht { 
            deny all; 
                } 
     }

 

 

Cred că aș face bine să dau câteva detalii despre configurările de mai sus. Au fost adăugate câteva directive și au fost scoase altele însă acest tip de fișier de configurare este unul pe care îl folosesc pentru configurarea inițială a unui server web de tip Nginx daca am deja configurările pentru Apache.

Au fost scoase liniile ce prevăd inregistrarea activității in log-uri pentru ca Nginx deja se ocupă de asta în

/etc/nginx/nginx.conf

A fost eliminată și directiva în care se preciza ServerAdmin deoarece Nginx nu ține evidența în logurile sale a acestei directive.

Folosirea PHP s-a schimbat și ea puțin. Datorită faptului că PHP este gestionat separat în Nginx, trecem aceste fișiere în programul php-fpm pe care l-am instalat mai devreme.

Acest lucru este implementat printr-un socket (pe care va trebui să îl configurăm momentan).

Secțiunea legată de documentație, de asemenea, reflectă locația documentației pentru Nginx și nu pentru Apache.

În cele din urmă, vom configura Nginx să refuze accesul la orice fișier de tip .htaccess sau la alte fișiere care încep cu .ht în directorul nostru. Acestea sunt fișiere de configurare specifice Apache și nu funcționează cu Nginx. Este mai sigur să nu expuneți aceste fișiere de configurare.

Salvați și închideți fișierul când ați terminat.

Trebuie să repornim serverul nostru Nginx pentru ca aceste modificări să fie recunoscute:

/etc/init.d/nginx restart

Acum ar trebui să avem ambele servere web, Apache si Nginx, funcționale pe serverul nostru, primul folosește portul 80 iar al doilea folosește portul 8000.

Mai departe, ati ghicit, trebuie să atribuim invers porturile însă ar mai trebui ceva facut întâi …

One response

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *