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

Ne tako davno smo to sada spomenuli DesdeLinux (sve njegove usluge) rade u GNUTransfer.com serveri. Blog se puno poboljšao u pogledu brzine, fluidnosti, čak i kad pređemo sa (nakon spajanja UsemosLinux) više od 30.000 posjeta dnevno (gotovo 200 korisnika povezanih istovremeno). Kako postići dobre performanse servera čak i uz ovakav obim prometa?

Trenutno Justice (VPS u kojem su blog i neke druge usluge) ima 3 GB RAM-a, međutim troši se manje od 500 MB, što je moguće pravilnim odabirom softvera za upotrebu i odgovarajućom konfiguracijom istih. Na primjer, Apache je nesumnjivo velik na svijetu, br. 1 što se tiče hostinga, ali upravo iz tog razloga Apache nije uvijek najbolja opcija. Kada je promet velik, a serverski hardver nije stvarno velik (Npr .: 8 ili 16 GB RAM-a), Apache možda troši previše RAM-a, pa serveru u određenim trenucima treba predugo da odgovori ili još gore da naša web lokacija nije na mreži. nedovoljni resursi. Zbog toga mnogi od nas biraju Nginx umjesto Apachea.

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).

PHP5:

PHP, taj programski jezik s kojim danas rade mnoge web stranice (i CMS), po mom je mišljenju crna ovca porodice. Drugim riječima, prema mom osobnom iskustvu, velike web stranice, s velikim brojem posjeta, s mnogo opcija, funkcija itd., Ako je takva web lokacija izrađena u PHP-u, potrošit će više resursa od slične web stranice izrađene, na primjer, u RoR-u. Moje iskustvo je bilo da su ljudi, PHP ogroman zmajevski resurs, PHP + Apache je dovoljan da proguta stotine i stotine MB RAM-a bez stvarne potrebe.

Razlog da se ne koristi RoR, Django ili nešto drugo je jednostavno to DesdeLinux (blog, naš vodeći) radi sa WordPress-om, CMS-om razvijenim sa PHP-om koji nam nudi toliko udobnosti, da jednostavno ne planiramo da ga menjamo kratkoročno ili srednjoročno, iskreno, WordPress, čak i kada nije savršen, služi nam za ono što nam treba, a možda i više.

Što se tiče PHP-a, u ovim uputstvima ću koristiti PHP verzija 5.4.4-14 dostupno na Debian Wheezy (stabilno)

Spawn_FastCGI:

To se može reći da je to ono što Nginx povezuje sa PHP-om, tj. Čak i ako imaju instaliran PHP5 paket ako nemaju instaliran i pokrenut Spawn_FastCGI kada otvore stranicu u PHP-u, pretraživač će preuzeti datoteku, neće im pokazati ništa što .php je programiran jer poslužitelj ne zna kako obrađivati ​​.php datoteke, zbog čega je neophodno instalirati i konfigurirati Spawn_FastCGI.

Da smo koristili Apache, bilo bi to jednostavno, poput instaliranja paketa libapache2-mod-php5, ali budući da koristimo Nginx, umjesto njega morat ćemo instalirati paket spawn-fcgi. Takođe, u vodiču ću objasniti kako stvoriti početnu skriptu za to u /etc/init.d/ tako da ga možete udobnije kontrolirati.

MySQL:

Ovo bi mogao biti veliki upitnik ili možda, za neke, neskladna nota. Mnogi koje znam postavit će mi pitanje: zašto koristiti MySQL, a ne MariaDB?

Problem je jednostavno u tome što nemam dovoljno vremena da se u ovom trenutku posvetim migraciji sa MySQL na MariaDB, migraciji koja bi u teoriji trebala biti transparentna za sve, 100% kompatibilna sa svime, ali to je... Rekao sam, u teoriji. U to vrijeme sam počeo sa selidbama DesdeLinux s jednog VPS-a na drugi morao sam ostaviti Apache i koristiti Nginx, to je uključivalo različite konfiguracijske datoteke, različite načine deklariranja VHostova, instalaciju i konfiguraciju od nule servera i njegovih usluga, u to vrijeme nisam mogao dodati još jedan zadatak na listu, takođe i da budem iskren, promenio sam Apache za Nginx jer Apache nije zadovoljio moje potrebe, međutim, MySQL do sada zadovoljava moje potrebe 100%, ne vidim razlog da povećam svoje radno opterećenje menjajući nešto što je već radilo tehnički dobro za mene.

Jednom kada sam objasnio zašto nisam instalirao MariaDB, objasnite i to kako je velikoj većini web lokacija potrebna baza podataka za njihov rad, jer će tamo biti pohranjeno puno podataka (ili gotovo svih). Postoje neki koji vole Postgre ili nekog drugog, u ovoj seriji vodiča objasnit ću vam kako instalirajte MySQL i konfigurirajte odvojene korisnike za svaku stranicu.

La MySQL verzija koju ću koristiti je v5.5.31

oklopna vozila:

APC je optimizator za PHP (objašnjeno vrlo jednostavno). Omogućava nam jednom pravilno konfiguriranu da PHP obrada radi bolje, da su odgovori sa servera brži.

Postoje alternative poput memcache-a, međutim, uvijek sam koristio APC i imao sam vrlo povoljne rezultate. Preporučujem vam da pročitate ovaj članak na engleskom: Usporedba APC-a i Memcache-a kao lokalne predmemorije sadržaja

U vodiču ću koristiti verziju php-apc v3.1.13-1 također dostupno u Debian stabilnim repo poslovima.

Rezimiranje:

Ovaj način instaliranja konfiguracije web servera nije najoptimalniji, daleko od toga, na primjer, mnogi će preporučiti Varnish, koji prema onome što sam pročitao čini istinska čuda jer je sve ili gotovo sve predmemorirano, ali, u našem slučaju to nam nije potrebno 100% web mjesta je uvijek predmemorirano jer ne želimo ili moramo ići u tu krajnost. Međutim, pojašnjavam, kao što sam gore rekao: "koliko sam pročitao", lično nisam koristio lak do danas, tako da vam ne mogu dati 100% objektivno mišljenje.

Ovo će biti serija tutorijala u kojoj ću vam pokazati kako da instalirate web server poput onog koji se nalazi u ovom trenutku. DesdeLinux (blog, forum, paste, itd.). Blog ima 30.000 poseta svakog dana, skoro 200 korisnika mu pristupa istovremeno, a ipak RAM ne prelazi 500MB potrošene, za neke ovo može biti prevelika potrošnja, ali... hej, imamo 3GB RAM-a, manje od 500MB (što uključuje FTP usluga, SSH, itd.) je stvarno dobra, zar ne? 🙂

Svu 'magiju' ne radi samo Nginx + Spawn_FastCGI + APC, naš sistem predmemorije bloga je stvarno dobro konfiguriran i pravila za Nginx su precizna, to čini blog čak i kada prima puno prometa mnogo manje PHP-a od onog što uobičajeno, jer već ima mnogo toga u kešu. Ako imate web stranicu s velikom potražnjom i imate problema s resursima, bez sumnje preporučujem da proučite koji će vam sistem predmemorije najbolje odgovarati, koji će najbolje odgovarati vašim potrebama.

Nadam se da će vam ovi vodiči biti zanimljivi, u svakom od njih ću pokušati sve objasniti na sveobuhvatan, detaljan i što jednostavniji način.

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.   Bruno cascio rekao je

    Vrlo dobro i jasno! Čestitam vam!

    1.    KZKG ^ Gaara rekao je

      Hvala

  2.   Christopher castro rekao je

    Vrlo dobar tutorial.

    Ono što me ispunjava sumnjom je kako su oni konfigurirali server e-pošte.

    1.    KZKG ^ Gaara rekao je

      MailServer je nešto odvojeno, odnosno nema nikakve veze s web serverom kao što znate 🙂

      Međutim, davno sam odlučio ne komplicirati se MailServerom, odlučio sam koristiti iRedMail (podrška za MySQL, LDAP i Postgre) i uz odgovarajuće postavke i detalje koje dodam u konfiguracijske datoteke, sve funkcionira u redu.

  3.   rots87 rekao je

    Članak mi se sviđa, čekam seriju članaka

    1.    KZKG ^ Gaara rekao je

      Hvala, nadam se da ću sljedeći donijeti u ponedjeljak ili utorak, bavit će se instalacijom i konfiguracijom Nginxa.

  4.   aca rekao je

    Vrlo dobro, prava konfiguracija, teško je pronaći je, kompromis između faktora je ponekad gotovo nerješiv, i ja sam također otišao na nginx maloprije, a kasnije i na mariadb (nedavno, mislim prije godinu dana).

    // Kao što sam spomenuo, bilo bi dobro kada biste podigli mogućnost chroot-a i koristili proxy_cache_path koji je također koristan. Takođe i poređenje utičnice (u slučajevima kada je to moguće) sa portom. i dobro definirati broj djece / ovna.

    Saludos

    1.    KZKG ^ Gaara rekao je

      Hvala na komentaru 🙂
      Da, naravno, bilo bi jako lijepo da Nginx stavimo u kavez kako bi ga odvojio kao takav od ostatka sistema, nisam razmatrao tu mogućnost u ovim vodičima, vidjet ću što mogu učiniti. O proxy_cache_path, nikad ga nisam koristio, pročitaću malo o tome da vidim kako to ide.

      Što se tiče broja niti (min i max), u Nginx konfiguraciji je očito definirano, u Nginx postu ću puno govoriti o .conf datoteci 😉

      Još jednom, hvala vam na komentaru.

  5.   MSX rekao je

    Ova vrsta HowTosa čini web istinski moćnim za informatičare jer nam štedi tone sati istraživanja i testiranja dok konačno ne odlučimo za odgovarajuću opciju, hvala puno!

    Jedno pitanje, radi li ovo na Debianu? Koja verzija OS-a i paketi?

    Pozdrav!

    1.    KZKG ^ Gaara rekao je

      Hvala.
      Zapravo, web lokacija koje izvještavaju, ponavljaju i ponavljaju vijesti već je previše ... ono što je potrebno su web stranice koje stavljaju vodiče, to je ono što web treba!

      Da, Debian Wheezy (trenutni Stable), verzije paketa su upravo tamo u postu 😉

  6.   eliotime3000 rekao je

    Odličan komentar. Da vidimo hoću li napraviti neku vrstu pogreške sa ZPanel-om X, i slučajno, izvršiti instalaciju ručno u Debianu Wheezy.

  7.   Federico Antonio Valdes Toujague rekao je

    Samo naprijed KZKG ^ Gaara !!!, da je Najbolji kriterij istine praksa, a vi imate iskustva sa onim što pišete. Profesionalna i radna web stranica. Major League Baseball, stari.

    1.    eliotime3000 rekao je

      To je istina. Takođe, kada sam počeo da se igram sa veb serverima koje sam instalirao u Windows, istina je da Apache puca u pogledu potrošnje resursa ako koristite WordPress (u Drupalu je potrošio polovinu resursa).

  8.   kočija rekao je

    Mislim da će za Nginx dio ovaj vodič dobro doći. Sada želim instalirati server s Nginxom, php-om, Varnish-om i MariaDB-om. Ali naravno, moramo početi, a lijenost mi može puno učiniti kada se borim sa serverima i trenutno sam zadovoljan tipičnom lampom i memcacheom da imam xDD.

    A pozdrav.

  9.   auroszx rekao je

    Super, samo bi jedan od njih dobro došao 🙂 Drugi se tome raduje.

  10.   Ivan Gabriel Sosa rekao je

    Pratimo vas. Trenutno krećemo u svijet web servera. Dvoje smo kupili od Hostingera, a prijatelj nam je pomogao da ga konfiguriramo od nule (PHP, MySQL, Apache). To je jedina kombinacija koja se koristi u Linuxu, platformi na kojoj sam od januara.
    Ali bila sam jako zainteresirana za ovu temu. Živjeli!

  11.   Jose Manuel rekao je

    Nikada nisam instalirao web server, ali ako želim to učiniti, pitanje, hoće li nivo potreban za razumijevanje tutorijala i da li je instalacija visoka ili sa osnovnim znanjem mogu li ga isprobati? Hvala unaprijed.

    1.    eliotime3000 rekao je

      Istina je da nije potrebno puno znanja da bi se moglo rukovati serverom baze podataka. Kaže vam onaj ko je već isprobao to iskustvo.

  12.   Maurice rekao je

    Pozdrav, vrlo je dobro što ćete raditi s ovom serijom postova.

    Nedavno sam instalirao Nginx + Php Fastcgi + Mariadb. Nginx.

    Sve ovo, učinio sam to u Archlinuksu, jer je ta distribucija jedina s moje tačke gledišta koja ne donosi toliko dobrih stvari kao ostale. Stavio sam ga u kavezno okruženje i pričinjalo mi je puno neprijatnosti da savršeno radi.

    Sada to savršeno funkcionira. Iako me zanima vaše mišljenje o dječjem i očevom procesu, što mi više savjeta daju, to bolje.

    Sve je ovo samo za vježbu.
    Oprema ima 4 GB DDR2 ram-a i 2 Ghz Core 2.4duo procesor.

    Pozdrav i radujem se predstojećim postovima ove serije.

  13.   mišić rekao je

    200 korisnika povezanih istovremeno?
    Samo u određeno doba dana, zar ne? Jer bi u protivnom premašio tih 30.000 dnevnih posjeta.

    1.    KZKG ^ Gaara rekao je

      Da, naravno, nije uvijek 200 ljudi na mreži, u ovom trenutku ima ih gotovo 40, jer je još uvijek rano, za nekoliko sati premašit će 100.

  14.   dhunter rekao je

    Samo iz zabave, upravo sam prebacio sa lighty na nginx na svojoj radnoj stanici (Symfony2 trenutno), uzeo sam conf odavde [1], vrlo jednostavno.

    [1] http://ihaveabackup.net/2012/11/17/nginx-configuration-for-symfony2

  15.   Apr4xas rekao je

    Čeka se nastavak ovog 😀

    1.    KZKG ^ Gaara rekao je

      Ove sedmice moram to objaviti, hvala što ste nas pročitali 🙂

      1.    Salud rekao je

        i? puno nedostaje?

  16.   dekan rekao je

    Dobar post…

  17.   NOEL IVAN rekao je

    DOBRO VEČE.
    ZBOG SPECIFIKACIJA ŠKOLSKOG PROJEKTA DOZVOLJAVAJU MI DA NAMESTIM NGINX U OPENBSD 5.4 ORACLE MV VIRTUALBOX DA BIH MOGAO KORISTITI PHP, MYSQL, NADAMASE DA NISAM MOGAO DA PRONAĐEM INFORMACIJU U VEZU SA ABOVE