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.

Trecerea de la Apache la NGINX

Apache-vs-Nginx

Pentru că este o piață liberă în ceea ce privește aplicațiile, apar noi aplicații pe parte de server ce pot face o diferență când este vorba de viteză. În funcțiile de necesitățile unui proiect web, este posibil să fie nevoie de migrarea unui astfel de proiect de la implementarea lui pe un server web de tip Apache la implementarea lui pe un server web de tip Nginx.

Apache si Nginx fac în esență același lucru însă, in anumite situații Nginx ar fi cel ce s-ar mișca mai repede. Odată cu începerea unui proiect web se poate decide o listă de opțiuni de care trebuie să beneficieze un site web sau o aplicație în desfășurare. Deși serverul web Apache este în prezent cel mai popular server web din lume, Nginx câștigă teren foarte rapid. Personal am instalat și configurat servere în ambele variante și se poate observa clar că Nginx se comportă excelent în timp ce utilizează puține resurse. Pentru multe site-uri Web, migrarea la Nginx ar îmbunătăți performanța.

Au fost și situații când s-a cerut trecerea de la Apache la Nginx și am să scriu puțin despre asta mai jos.

Pentru a trece de la Apache la Nginx, cu siguranță nu ar trebui să fie Nginx instalat pe server ci doar Apache. De accea ar trebui instalat Nginx în funcție de sistemul de operare ce se afla pe server. Indiferent de sistemul de operare ar trebui să ne asigurăm că avem un user cu drepturi de instalare pe server ca root sau orice alt user listat in sudoers cu drepturi de root.

Odată ce Nginx este instalat ar trebui să ocolim cumva portul 80 pe care acum asculta conexiunile Apache-ul. Pentru asta trebuie să edităm un fișier de configurare la alegere dintre cele două tipuri de servere pentru că acum ele se blochează ascultând amândouă la conexiunile portului 80.

Structuri de informații

mate-info

Programele pentru calculatoare lucrează de obicei cu tabele de informații. În forma sa cea mai simplă, tabelul poate fi o listă lineară de elemente, atunci când proprietățile sale răspund unor întrebări de genul:

  • care este primul element din listă?
  • care este ultimul?
  • ce elemente preced și urmează după un element dat?
  • câte elemente sunt în listă?

În situații mai complicate tabelul:

  • ar putea fi un vector bidimensional (matrice) sau un vector n-dimensional cu n > 2;
  • ar putea fi o structură arborescentă;
  • ar putea fi o strucutră complexă multi-înlănțuită cu un număr imens de legături (e.g. creierul uman).

Bibliografie – Algoritmi si Structuri de Date

mate-info

1. V. Aho, J. E. Hopcroft, J. D. Ullman: “Data Structures and Algorithms”, Addison-
Wesley Publ. Comp., 1983
2. R. Ceterchi: “Structuri de date. Aspecte matematice si aplicatii”, Editura Univ. din
Bucuresti, 2001
3. T. H. Cormen, C. E. Leiserson, R. L. Rivest: “Introduction to Algorithms”, The MIT
Press, 1990 (si editiile ulterioare)
4. D.E. Knuth :”Tratat de programarea calculatoarelor”, vol. I si III
5. Tomescu: “Data Structures”, Editura Univ. din Bucuresti, 2006
6. N. Wirth: “Algorithms + Data Structures = Programs”, Prentice Hall Inc., 1976