Kako instalirati web server sa Nginx + MySQL + PHP5 + APC + Spawn_FastCGI [2. dio: Nginx]

Odavno Rekao sam vam o ovoj seriji vodiča, o tome kako instalirati i konfigurirati server za hosting sa visokom potražnjom. Ovaj članak govori o instaliranju i konfiguriranju Nginxa:

nginx:

Već smo vam rekli o Nginxu u članku Nginx: Zanimljiva alternativa Apacheu, tamo smo vam rekli da je to web server kao što je Apache, LightHttpd ili Cherokee, ali u poređenju sa Apacheom ističe se po svojim performansama i maloj potrošnji hardvera, upravo zbog čega mnoge velike stranice kao što su Facebook, MyOpera.com, DropBox ili čak WordPress .com koristi Nginx umjesto Apache. U svijetu Linuxa DesdeLinux Nije jedini koji koristi Nginx, koliko ja znam, koriste ga i emsLinux i MuyLinux :)

Moje lično iskustvo s Nginxom datira unazad nekoliko godina, kad sam iz potrebe počeo tražiti lagane alternative Apacheu. U to je vrijeme Nginx bio na verziji 0.6 i njegova kompatibilnost sa web lokacijama s velikim zahtjevima izrađenim u PHP-u nije bila najoptimalnija, međutim danas od verzije 0.9 nadalje (v1.2.1 dostupan na Debian Stable, v1.4.2 dostupan na ArchLinux) se mnogo poboljšao do te mjere da će uz pravilnu konfiguraciju i uniju Nginx + PHP-a sve funkcionirati kao šarm.

U ovoj seriji tutorijala Koristit ću Nginx verziju 1.2.1-2.2, dostupno u Debian stabilnim repoima (Wheezy).

Ovaj se vodič bavi samo i isključivo o Nginxu, a ne o Nginxu + PHP-u, uniji Nginx + PHP-a, kao i njegovoj optimizaciji ili potrebnoj konfiguraciji bit će riječi u sljedeći vodič

1. Instalacija:

Krenut ćemo s prvom stvari, instalirajte Nginx iz naših spremišta.

Sve naredbe koje će se izvršiti izvršavaju se s root dozvolama, bilo stavljanjem sudoa na početak svake linije ili prijavljivanjem kao root

Ako na vašem poslužitelju koristite distribuciju poput Debiana, Ubuntu-a ili nekog derivata u terminalu, morate staviti sljedeće i pritisnuti ući :

aptitude install nginx

aptitude nije standardno instaliran u Ubuntuu, međutim, preporučujem da ga instalirate i koristite umjesto apt-get, jer aptitude u određenim prilikama bolje upravlja zavisnostima

U slučaju da na serveru koristite drugu distribuciju kao što su CentOS, Red Hat, Fedora, jednostavno instalirajte paket: nginx iz službenog spremišta

Osobno ne preporučujem nijedan derivat Debiana, čak ni Ubuntu za servere, tokom godina moja iskustva nisu bila u potpunosti zadovoljavajuća. Moj prvi izbor za poslužiteljski operativni sistem je Debian, onda bih razmišljao o CentOS-u, konačno nekom BSD-u

2. Konfiguracija:

Već imamo instaliran Nginx, ali očito ga moramo konfigurirati. Pripremio sam komprimiranu datoteku na FTP koja sadrži sve konfiguracije koje se koriste na serverima. DesdeLinux, oba za PHP, Nginx, itd. Hajde da preuzmemo i raspakujemo taj fajl:

cd ~ && wget http://ftp.desdelinux.net/nginx-spawn-fastcgi.tar.gz && tar xf nginx-spawn-fastcgi.tar.gz

Ovo će stvoriti mapu zvanu nginx-spawn-fastcgi, iz nje će nam trebati dvije datoteke za čisti Nginx (to jest, bez povezivanja s PHP-om):

  • nginx.conf - »Glavna Nginx datoteka za konfiguraciju (o njenom sadržaju ćemo kasnije)
  • index.html - »Jednostavna html datoteka pomoću koje ćemo provjeriti radi li Nginx zaista u našem najosnovnijem obliku
  • mywebsite.net - »Konfiguracijska datoteka za jednostavno web mjesto, VHost (Virtual Host) koji će konfigurirati pristup prethodnom html-u

Krenimo prvo u fasciklu Nginx postavki:

cd /etc/nginx/

Zatim uklonimo njegovu zadanu konfiguraciju i stavimo svoju:

mv nginx.conf nginx.conf_BK && cp ~/nginx-spawn-fastcgi/nginx.conf ./

Ovo je, kao što rekoh, glavna datoteka za konfiguraciju Nginxa, u njoj sam već definirao sljedeće:

korisnik www-podaci; worker_processes 4; pid /var/run/nginx.pid;

Korisnički pristup sistemu datoteka (s kojim će nginx pristupiti svugdje), broj procesa s kojima treba raditi i također PID (nginx id procesa).

Tu imamo i mali blok pod nazivom događaji (postavke događaja) koji sadrži liniju koja označava maksimalan broj dozvoljenih veza po događaju. Ispod je blok nazvan http.

Ovaj http blok sadrži gotovo sve što se odnosi na hosting, barem mnoge stvari koje će vas zanimati. Na primjer, maksimalno vrijeme za život ili čekanje (timeout), gdje će biti naši opći dnevnici (access.log i error.log), kompresija podataka pomoću gzip-a, kao i druga pravila koja bi mogla biti korisna u budućnosti.

Jednom kada je glavna konfiguracijska datoteka na mjestu, kopirajmo datoteku iz našeg VHost-a u mapu dostupnu na web lokacijama

cp ~/nginx-spawn-fastcgi/mywebsite.net sites-available/

Pored toga, iz ove datoteke moramo napraviti simboličku vezu do mape s omogućenim web lokacijama.

ln -s /etc/nginx/sites-available/mywebsite.net /etc/nginx/sites-enabled/

Objašnjavam korisnost omogućavanja i dostupnosti web lokacija.

Pronaći će trenutke kada moraju imati nekoliko vhost datoteka spremnih i konfiguriranih, jer će na taj server staviti mrežu, recimo 5 web lokacija. Međutim, događa se da još nije vrijeme za omogućavanje 2 od tih 5 hostova, ali oni moraju imati spremne datoteke kako bi po potrebi bili na mreži u najkraćem mogućem roku. Možete staviti koliko god želite vhostova na web lokacije dostupne (web stranice dostupne), jer one koje Nginx čita da bi ih stavio na mrežu samo su one sa omogućenim web lokacijama (web lokacije omogućene), a također bi radilo u suprotnom smjeru, u slučaju da želite postaviti offline na primjer) web mjesto, nema potrebe za brisanjem datoteka sa vašeg servera (datoteke koje će nam trebati u neko drugo vrijeme), jednostavno uklanjamo simboličku vezu sa omogućenim web lokacijama i to je to. Korisnost korištenja simboličkih poveznica, a ne jednostavno kopiranje datoteke iz jedne mape u drugu, je da kada želimo urediti vhost, nije važno hoćemo li urediti onaj koji se nalazi u omogućenom ili dostupnom, na kraju je isti
arhiva.

Datoteka mywebsite.net kao što sam već rekao, vhost koji služi kao primjer, odnosno, drugim riječima, moramo izmijeniti mywebsite.net i uspostaviti naše konfiguracije.

Moramo promijeniti sljedeće:

  • access_log (red 3): Ovo će biti put datoteke evidencije pristupa do ove stranice
  • error_log (red 4): Ovo će biti put datoteke evidencije grešaka do ove stranice
  • server_name (red 5): URL, domena koja se nalazi u tom folderu, na primjer, ako je to forum DesdeLinux to bi bilo: ime servera foruma.desdelinux.net
  • root (red 6): Put do direktorijuma u kojem su html datoteke, ostavimo ovo u / var / www / jer će to biti samo test
Očito moraju imati ukazivanje u svojim DNS zapisima svog pružatelja usluga hostinga (koristeći CPanel ili neki drugi alat) da se domena ili poddomena deklarirana u ime_srvera nalazi na IP-u ovog servera koji oni konfiguriraju. Odnosno, u DNS-u gdje kreiraju poddomene za svoju domenu, moraju proglasiti da se domena ili poddomena koju su stavili u red 5 nalazi na ovom serveru (ovaj server = IP adresa dotičnog servera)

Sada samo treba kopirati html datoteku u mapu koju definiramo u našoj VHost datoteci, / var / www /:

mkdir /var/www/ && cp ~/nginx-spawn-fastcgi/index.html /var/www/

Zatim ponovo pokrenemo Nginx i to je to:

service nginx restart

I voila, pojavit će se nešto poput ovoga:

nginx-pure-test-site-html

Podsjećam vas da prvo radimo s Nginxom za HTML, bez podrške za PHP, ova instalacija PHP-a i povezivanje s Nginxom bit će sadržaj sljedećeg vodiča (obećavam za nekoliko dana).

U svakom slučaju, ovo je vodič za instalaciju i konfiguraciju Nginxa, tako da radi čisto, to jest, HTML stranica, nadam se da će vas zanimati.

Pojasnit ću da da, još uvijek postoje najbolje prakse koje se mogu koristiti, međutim, pričekajmo da završimo ovu seriju vodiča i tada ćemo procijeniti konačni rezultat rada 😉

Saludos


Ostavite komentar

Vaša e-mail adresa neće biti objavljena. Obavezna polja su označena sa *

*

*

  1. Za podatke odgovoran: Miguel Ángel Gatón
  2. Svrha podataka: Kontrola neželjene pošte, upravljanje komentarima.
  3. Legitimacija: Vaš pristanak
  4. Komunikacija podataka: Podaci se neće dostavljati trećim stranama, osim po zakonskoj obavezi.
  5. Pohrana podataka: Baza podataka koju hostuje Occentus Networks (EU)
  6. Prava: U bilo kojem trenutku možete ograničiti, oporaviti i izbrisati svoje podatke.

  1.   Nelson rekao je

    Hvala, vrlo korisno!

    1.    KZKG ^ Gaara rekao je

      Hvala vam na komentaru

  2.   dhunter rekao je

    U backportsima postoji nginx 1.4 ..

    1.    KZKG ^ Gaara rekao je

      Da, ali na serveru u proizvodnji ne koristim ništa od toga 😀

      1.    dhunter rekao je

        Pod "to" mislite na najnoviju stabilnu i testiranu verziju koju je objavio nginx, činićete da zvuči kao da je apt-pinning sa sida. ~ _ ~

        1.    KZKG ^ Gaara rekao je

          Ma daj, je li to ... na poslužiteljima nikada nisam volio koristiti druge repo-lokacije, pozadinske pozadine ili nešto slično 🙂

      2.    Raphael Castro rekao je

        Uvijek stabilan na serverima, to sam naučio godinama.

        1.    dhunter rekao je

          Nginx 1.4 je stabilan od prošlog aprila, u backportsima je 1.4.1-3.

          2013-04-24

          Objavljena je stabilna verzija nginx-1.4.0 koja uključuje mnoge nove funkcije razvijene u grani 1.3.x - podrška za proksiranje WebSocket veza, OCSP heftanje, SPDY modul, gunzip filter i još mnogo toga.

          http://nginx.org/en/CHANGES-1.4

          1.    Raphael Castro rekao je

            U pravu si u onome što kažeš, kapa mi je skinuta.

  3.   chinoloco rekao je

    Hvala na dijeljenju, trenutno primjenjujem vaš najstariji post u praksi.
    Ispunit ću vas pitanjima XD

    1.    KZKG ^ Gaara rekao je

      Hvala na čitanju 🙂
      Ako imate bilo kakvih pitanja ili nedoumica, znate, mi smo tu da pomognemo, tu je forum.desdelinux.net gde ćemo zajedno pokušati da Vam ponudimo najbolje rešenje

      Saludos

      1.    Gibran barrera rekao je

        Imam pitanje imam LAMP [Linux (Debian Wheezy), Apache, PHP i MySQL] pokrenut na mom serveru za WordPress i Owncloud, kako preći na Ngnix, drugo je pitanje koja je razlika između Ngnixa i Lighttpda.

        1.    KZKG ^ Gaara rekao je

          Najveća komplikacija ili poteškoća za migraciju s Apachea na Nginx su konfiguracije svake web lokacije, odnosno .htaccess koji koristite.

          .Htaccess je najsloženiji pri prelasku na Nginx, jer su to različite konfiguracije koje morate staviti u Nginx VHost.

          O LightHTTPd-u i Nginxu ... Ne znam, LightHTTPd sam koristio samo jednom prije mnogo godina, trenutno nemam pojma kako ide njegov razvoj, konkretno koristeći PHP.

  4.   eliotime3000 rekao je

    NGINX izgleda prilično jednostavno u odnosu na Apache. Čeka se da sljedeća epizoda bude u mogućnosti da je dopuni PHP-om

  5.   Maurice rekao je

    Čekam savjete za optimizaciju više za nginx 😀

    Inače, Gaara, u svoj sljedeći vodič možete uključiti kako implementirati SSL podršku.

    Pozdrav.

    1.    KZKG ^ Gaara rekao je

      Savjeti koji dolaze su zapravo za optimizaciju PHP obrade, keširanje stranice, mogu dati primjer konfiguracije koju koristimo u DesdeLinux za Nginx+Wordpress+W3_Total_Cache :)

  6.   kajzerica rekao je

    Hvala vam dobar doprinos

  7.   Apr4xas rekao je

    A vodič za archlinux kada? xD

    1.    KZKG ^ Gaara rekao je

      U Archu je bilo vrlo slično, mijenjaju se samo imena paketa, ali ... conf je gotovo identičan

      Ali ko ima proizvodni server sa Archom? 😀

  8.   Apr4xas rekao je

    Zdravo,

    Opet sam ja xD ...

    Slijedio sam vaše korake primjenjujući ih na stroju s archlinuxom i imam sljedeći problem:

    [abr4xas@Genius www]$ systemctl status nginx.service
    nginx.service - A high performance web server and a reverse proxy server
    Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled)
    Active: failed (Result: exit-code) since vie 2013-11-15 20:11:35 VET; 1min 13s ago
    Process: 1258 ExecStartPre=/usr/bin/nginx -t -q -g pid /run/nginx.pid; daemon on; master_process on; (code=exited, status=1/FAILURE)

    Bilo koji prijedlog 😀

  9.   rhiz rekao je

    Jo ... xox, želim samo interni server, odnosno želim zamijeniti samo xampp, da li bih sve ovo trebao raditi?

    1.    KZKG ^ Gaara rekao je

      Ako želite, možete to implementirati (što ponavljam, s tim radi DL), zapravo moj virtualni server (koji koristim za razvoj i testiranje) to sam učinio sa istom onom stvari koju objašnjavam.

      Odnosno, možete ukloniti XAMPP i staviti ovu varijantu i ona će raditi dobro, ili ako želite napustiti XAMPP ... i dalje će raditi za vas.

      Pozitivna poanta korištenja ovoga koju pokazujem je vrlo mala potrošnja hardvera u usporedbi s Apacheom, ali na vašem osobnom računaru, koji nije zahtjevni hosting, daleko od toga ... ako XAMPP dobro funkcionira za vas, ne vidim zašto ga ukloniti 🙂

  10.   Isaac rekao je

    Već imam pokrenut svoj Linux server (Debian, Nginx, MySQL i PHP). Teško sam navukao PHP da radi s Nginxom jer sam bio naviknut na jednostavni Apache Web Server.

    Pa, moje pitanje je: Zna li neko kako mogu na svoj server usmjeriti test domenu koju sam kupio? Želio bih isprobati svoju .com domenu da vidim kako to funkcionira, ali nemam ni najmanju ideju kako to učiniti, jer sam uvijek koristio NOIP adresu da bih joj pristupio s noip DUC-om.

    Nadam se da mi neko može pomoći, hvala!

  11.   Abraham rekao je

    Dobivam ovo kada se pokušavam povezati s vašim ftp-om:

    cd ~ && wget http://ftp.desdelinux.net/nginx-spawn-fastcgi.tar.gz && tar xf nginx-spawn-fastcgi.tar.gz

    HTTP zahtjev poslan, čeka odgovor ... 404 Nije pronađen
    2015-11-23 17:46:30 POGREŠKA 404: Nije pronađena.

  12.   Ryan rekao je

    Imam pokrenut CentOS server (Gunicorn, Nginx, PHP) trebalo mi je puno posla da ih natjeram da rade, ali poanta u kojoj sam zapeo je da web stranici koju želim pokrenuti treba konfiguracija dobavljača domene, u ovom slučaju Go Daddy, U ovom trenutku ne znam kako da nastavim.

  13.   Ricardo rekao je

    Možete li podijeliti konfiguracijske datoteke sa mnom jer ih ne mogu preuzeti