Kako instalirati web poslužitelj s Nginx + MySQL + PHP5 + APC + Spawn_FastCGI [1. dio: Prezentacija]

Nedavno smo spomenuli da sada DesdeLinux (todos sus servicios) están funcionando en GNUTransfer.com poslužitelji. Blog se puno poboljšao u pogledu brzine, fluidnosti, čak i kad prijeđemo iz posjedovanja (nakon spajanja UsemosLinux) više od 30.000 200 posjeta svaki dan (gotovo XNUMX korisnika povezanih istovremeno). Kako postići dobre performanse poslužitelja čak i uz ovakvu količinu prometa?

Trenutno Justice (VPS gdje su blog i neke druge usluge) ima 3 GB RAM-a, no troši se manje od 500 MB, što je moguće ispravnim odabirom softvera za upotrebu i odgovarajućom konfiguracijom istih. Primjerice, Apache je nesumnjivo velik na svijetu, br.1 po pitanju hostinga, ali upravo iz tog razloga Apache nije uvijek najbolja opcija. Kada je promet velik, a poslužiteljski hardver stvarno nije velik (Primjer: 8 ili 16 GB RAM-a), Apache možda troši previše RAM-a, pa poslužitelju u određeno vrijeme treba predugo da odgovori, ili još gore, da je naša web lokacija izvan mreže. nedovoljni resursi. Zbog toga mnogi od nas odabiru Nginx umjesto Apachea.

nginx:

Već smo vam rekli o Nginxu u članku Nginx: Zanimljiva alternativa Apacheu, ahí les comentamos que es un servidor web como Apache, LightHttpd o Cherokee, pero que comparado con Apache destaca por su rendimiento y bajo consumo de hardware, precisamente por eso es que muchos sitios grandes como Facebook, MyOpera.com, DropBox o inclusive WordPress.com usan Nginx en vez de Apache. En el mundillo de Linux DesdeLinux no es el único que usa Nginx, hasta donde sé, emsLinux y MuyLinux también lo usan 🙂

Moje osobno iskustvo s Nginxom datira unatrag nekoliko godina, kada sam zbog potrebe počeo tražiti lagane alternative Apacheu. U to je vrijeme Nginx išao za verziju 0.6 i njegova kompatibilnost s web lokacijama s velikim zahtjevima izrađenim u PHP-u nije bila najoptimalnija, no 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 s pravilnom konfiguracijom i ujedinjenjem Nginx + PHP-a sve funkcionirati poput šarma.

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

PHP5:

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

El por qué de no usar RoR, Django o algún otro es simplemente que DesdeLinux (el blog, nuestro buque insignia) funciona con WordPress, un CMS desarrollado con PHP que nos ofrece tantas pero tantas comodidades, que simplemente no pensamos cambiarlo en corto o mediano plazo, honestamente, WordPress aún cuando no es perfecto nos sirve para lo que necesitamos y tal vez más.

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

Spawn_FastCGI:

Može se reći da je to ono što objedinjuje Nginx s PHP-om, tj. Čak i ako imaju instaliran PHP5 paket ako nemaju instaliran i pokrenut Spawn_FastCGI kada otvore stranicu u PHP-u, preglednik će preuzeti datoteku, ona se neće prikazati njima sve što je .php 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, morat ćemo umjesto njega instalirati paket spawn-fcgi. Također, u tutorialu ću objasniti kako stvoriti početnu skriptu za to u /etc/init.d/ tako da ga možete udobnije kontrolirati.

MySQL:

To 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?

El asunto es simplemente que no tengo el tiempo suficiente para dedicarme a hacer una migración en este momento de MySQL a MariaDB, migración que en teoría debería ser transparente para todos, 100% compatible todo, pero eso es… como dije, en teoría. En el momento en que empecé a mover servicios de DesdeLinux de un VPS hacia otro tuve que dejar atrás a Apache y usar Nginx, esto implicaba archivos de configuración distintos, diferentes maneras de declarar VHosts, instalación y configuración desde cero del servidor y sus servicios, no podía en ese momento sumar otra tarea más a la lista, además y siendo honestos, cambié Apache por Nginx porque Apache no me satisfacía mis necesidades, no obstante, MySQL hasta el momento me satisface mis necesidades al 100%, no veo motivos para en ese momento yo aumentar mi carga de trabajo cambiando algo que ya me funcionaba técnicamente bien.

Jednom kad sam objasnio zašto nisam instalirao MariaDB, objasnite i da je velikoj većini web stranica potrebna baza podataka za njihov rad, jer će tamo biti pohranjeno puno podataka (ili gotovo svih). Postoje neki koji vole Postgre ili nekoga drugog, u ovom nizu tutorijala objasnit ću vam kako instalirajte MySQL i konfigurirajte zasebne korisnike za svaku stranicu.

La MySQL verzija koju ću koristiti je v5.5.31

APC-ovi:

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

Postoje alternative poput memcache-a, međutim, uvijek sam koristio APC i imao sam vrlo povoljne rezultate. Preporučujem čitanje ovog članka na engleskom: Usporedba APC-a i Memcache-a kao lokalne predmemorije sadržaja

U tutorialu ću koristiti verziju php-apc v3.1.13-1 također dostupno u rebian poslovima Debian Stable.

Rezimirajući:

Ovaj način instaliranja konfiguracije web poslužitelja 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 ne treba da je 100% web mjesta 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", osobno nisam koristio lak do danas, tako da vam ne mogu dati 100% objektivno mišljenje.

Esto será una serie de tutoriales en los cuales les mostraré cómo instalar un servidor web como el que tiene hostedo en este minuto a DesdeLinux (blog, foro, paste, etc). El blog cuenta con 30.000 visitas cada día, casi 200 usuarios accediendo al mismo de forma simultánea, y aún así la RAM no sobrepasa los 500MB consumidos, esto para algunos puede ser un consumo excesivo pero… eh, tenemos 3GB de RAM, menos de 500MB (que incluyen servicio FTP, SSH, etc) está realmente bien no? 🙂

Svu "magiju" ne radi samo Nginx + Spawn_FastCGI + APC, naš sustav predmemorije bloga je stvarno dobro konfiguriran i pravila za Nginx su precizna, to čini blog čak i kada prima velik prometni proces mnogo manje PHP-a od onog što je uobičajeno , jer je već puno toga predmemorirano. Ako imate web stranicu s velikom potražnjom i imate problema s resursima, toplo preporučujem da proučite koji će predmemorijski sustav najbolje raditi za vas, 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.

pozdravi


Ostavite svoj komentar

Vaša email adresa neće biti objavljen. Obavezna polja su označena s *

*

*

  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 obvezi.
  5. Pohrana podataka: Baza podataka koju hostira Occentus Networks (EU)
  6. Prava: U bilo kojem trenutku možete ograničiti, oporaviti i izbrisati svoje podatke.

  1.   Bruno cascio dijo

    Vrlo dobro i jasno! Čestitam ti!

    1.    KZKG ^ Gaara dijo

      Hvala ti

  2.   Christopher castro dijo

    Vrlo dobar tutorial.

    Ono što me ispunjava sumnjom je kako su konfigurirali poslužitelj e-pošte.

    1.    KZKG ^ Gaara dijo

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

      Međutim, davno sam odlučio ne komplicirati se s 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.   Truleži87 dijo

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

    1.    KZKG ^ Gaara dijo

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

  4.   ACA dijo

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

    // Kao što sam spomenuo, bilo bi dobro kada biste povećali mogućnost chroota i koristili proxy_cache_path koji je također koristan. Također usporedba utičnice (u slučajevima kada je to moguće) s portom. i dobro definirati broj djece / ovna.

    pozdravi

    1.    KZKG ^ Gaara dijo

      Hvala na komentaru 🙂
      Da naravno, bilo bi jako lijepo da Nginx stavimo u kavez kako bi ga odvojio kao takav od ostatka sustava, 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 kako bih vidio kako ide.

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

      Još jednom, hvala vam na komentaru.

  5.   MSX dijo

    Ova vrsta HowTosa čini web doista 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 dijo

      Hvala Vam.
      Zapravo, web mjesta koja 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 nalaze se upravo tamo u postu 😉

  6.   eliotime3000 dijo

    Izvrsan 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 dijo

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

    1.    eliotime3000 dijo

      To je istina. Također, kad sam se počeo igrati s web poslužiteljima koje sam instalirao u sustavu Windows, istina je da Apache puca u smislu potrošnje resursa ako koristite WordPress (u Drupalu je potrošio polovinu resursa).

  8.   kočija dijo

    Mislim da će za Nginx dio ovaj vodič dobro doći. Sada želim instalirati poslužitelj s Nginxom, php-om, Varnish-om i MariaDB-om. Ali naravno, morate početi, a lijenost može puno učiniti kada je riječ o borbi sa poslužiteljima i trenutno sam zadovoljan tipičnom lampom i memcacheom da imam xDD.

    Pozdrav.

  9.   auroszx dijo

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

  10.   Ivan Gabriel Sosa dijo

    Pratimo vas. Trenutno krećemo u svijet web poslužitelja. 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 siječnja.
    Ali ova me tema jako zanimala. Živjeli!

  11.   Jose Manuel dijo

    Nikad nisam instalirao web poslužitelj, ali ako to želim učiniti, pitanje je hoće li razina potrebna za razumijevanje tutorijala i je li instalacija visoka ili bih je mogao isprobati s osnovnim znanjem? Hvala unaprijed.

    1.    eliotime3000 dijo

      Istina je da za rad s poslužiteljem baze podataka nije potrebno puno znanja. Kaže vam onaj tko je već isprobao to iskustvo.

  12.   Mauricijus dijo

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

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

    Sve sam to učinio u Archlinuxu, jer je ta distribucija jedina s mog stajališta koja ne donosi toliko dobrih stvari kao ostale. Stavio sam ga u okruženje u kavezu i stvorilo mi je puno neugodnosti da savršeno radi.

    Sada to savršeno radi. 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 nadolazećim postovima ove serije.

  13.   mišić dijo

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

    1.    KZKG ^ Gaara dijo

      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 dijo

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

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

  15.   Travanj4xas dijo

    Čeka se nastavak ovog 😀

    1.    KZKG ^ Gaara dijo

      Ovaj tjedan to moram objaviti, hvala što ste nas pročitali 🙂

      1.    zdravlje dijo

        i? puno nedostaje?

  16.   Dekan dijo

    Dobar post ...

  17.   NOEL IVAN dijo

    DOBRA VEČER.
    ZBOG SPECIFIKACIJA ŠKOLSKOG PROJEKTA DOZVOLJUJU MI DA INSTALIRAM NGINX U OPENBSD 5.4 ORACLE MV VIRTUALBOX DA BIH MOGAO KORIŠTITI PHP, MYSQL, NADAMASE DA NISAM MOgao PRONAĆI INFORMACIJU U VEZI SA