Kako namestiti spletni strežnik z Nginx + MySQL + PHP5 + APC + Spawn_FastCGI [1. del: Predstavitev]

Nedolgo nazaj smo omenili, da zdaj DesdeLinux (vse njegove storitve) delujejo v Strežniki GNUTransfer.com. Blog se je zelo izboljšal v smislu hitrosti, tekočnosti, tudi če ne gre za (po združitvi UsemosLinux) več kot 30.000 obiskov vsak dan (skoraj 200 uporabnikov povezanih hkrati). Kako doseči dobro zmogljivost na strežniku tudi s tolikšno količino prometa?

Trenutno ima Justice (VPS, kjer sta blog in nekatere druge storitve) 3 GB RAM-a, vendar se porabi manj kot 500 MB, kar je mogoče s pravilno izbiro programske opreme za uporabo in ustrezno konfiguracijo le-teh. Na primer, Apache je nedvomno odličen na svetu, št. 1, kar zadeva gostovanje, vendar ravno zato Apache ni vedno najboljša možnost. Kadar je promet velik in strežniška strojna oprema ni zares velika (npr .: 8 ali 16 GB RAM-a), Apache morda porabi preveč RAM-a, zaradi česar strežnik v določenih trenutkih traja predolgo, da bi se odzval, ali še huje, da naša spletna stran ne deluje nezadostna sredstva. Zato mnogi izmed nas izberejo Nginx kot Apache.

Nginx:

O Nginxu smo vam že povedali v članku Nginx: Zanimiva alternativa Apacheju, tam smo vam povedali, da gre za spletni strežnik, kot je Apache, LightHttpd ali Cherokee, vendar v primerjavi z Apachem izstopa po svoji zmogljivosti in nizki porabi strojne opreme, prav zato veliko velikih spletnih mest, kot so Facebook, MyOpera.com, DropBox ali celo WordPress .com uporablja Nginx namesto Apache. V svetu Linuxa DesdeLinux Ni edini, ki uporablja Nginx, kolikor vem, ga uporabljata tudi emsLinux in MuyLinux :)

Moje osebne izkušnje z Nginxom segajo že nekaj let nazaj, ko sem zaradi potrebe začel iskati lahke alternative za Apache. Takrat je Nginx uporabljal različico 0.6 in njegova združljivost s spletnimi mesti z velikim povpraševanjem v PHP ni bila najbolj optimalna, danes pa od različice 0.9 naprej (v1.2.1 na voljo v Debian Stable, v1.4.2 na voljo v ArchLinux) se je precej izboljšal do te mere, da bo ob pravilni konfiguraciji in združitvi Nginx + PHP vse delovalo kot čar.

V tej vadnici Uporabil bom različico Nginx 1.2.1-2.2, na voljo v rebijih Debian Stable (Wheezy).

PHP5:

PHP, tisti programski jezik, s katerim danes delujejo številna spletna mesta (in CMS), je po mojem mnenju črna ovca družine. To pomeni, da po mojih osebnih izkušnjah velika spletna mesta z velikim številom obiskov, z veliko možnostmi, funkcijami itd., Če je takšno spletno mesto izdelano v PHP, porabi več virov kot podobno spletno mesto, na primer v RoR. Moja izkušnja je bila, da ljudje, PHP je velik zmaj, PHP + Apache je dovolj, da pogoltne stotine in stotine MB RAM-a brez resnične potrebe.

Razlog, da ne uporabljate RoR, Django ali česa drugega, je preprosto ta DesdeLinux (blog, naš vodilni konj) deluje z WordPressom, CMS-jem, razvitim s PHP-jem, ki nam ponuja toliko udobja, da ga preprosto ne nameravamo spreminjati kratkoročno ali srednjeročno, iskreno, WordPress, tudi če ni popoln, nam služi za tisto, kar potrebujemo in morda še več.

Glede PHP bom v teh vadnicah uporabil Različica PHP 5.4.4-14 na voljo na Debian Wheezy (stabilno)

Spawn_FastCGI:

Lahko rečemo, da je to tisto, kar združuje Nginx s PHP, torej tudi če imajo nameščen paket PHP5, če nima nameščenega in izvršenega Spawn_FastCGI, ko odprejo spletno mesto v PHP, brskalnik prenese datoteko, ne bo pa jim pokazal ničesar, da .php je bil programiran, ker strežnik ne ve, kako obdelati datoteke .php, zato je nujno namestiti in konfigurirati Spawn_FastCGI.

Če bi uporabili Apache, bi bilo nekaj tako preprostega, kot je namestitev paketa libapache2-mod-php5, ker pa uporabljamo Nginx, bomo morali namesto njega namestiti paket spawn-fcgi. V vadnici bom tudi razložil, kako v /etc/init.d/ ustvariti začetni skript zanj, da ga boste lažje nadzorovali.

MySQL:

To je lahko velik vprašaj ali morda za nekatere neskladna nota. Mnogi, ki jih poznam, me bodo vprašali: zakaj uporabljati MySQL in ne MariaDB?

Težava je preprosto v tem, da nimam dovolj časa, da bi se v tem trenutku posvetil izvajanju migracije iz MySQL v MariaDB, migracije, ki bi v teoriji morala biti pregledna za vse, 100 % združljiva z vsem, toda to je ... kot Rekel sem, v teoriji. Takrat sem začel s selitvenimi storitvami DesdeLinux od enega VPS do drugega sem moral pustiti Apache in uporabljati Nginx, to je vključevalo različne konfiguracijske datoteke, različne načine deklariranja VHosts, namestitev in konfiguracijo iz nič strežnika in njegovih storitev, takrat nisem mogel dodati druge naloge v seznam, prav tako in če sem iskren, sem zamenjal Apache za Nginx, ker Apache ni zadovoljil mojih potreb, vendar pa MySQL zaenkrat izpolnjuje moje potrebe 100%, ne vidim razloga, da bi povečal svojo delovno obremenitev s spreminjanjem nečesa, kar je že delovalo tehnično dobro zame.

Ko enkrat pojasnim, zakaj nisem namestil MariaDB, razložite tudi, da ker velika večina spletnih mest potrebuje bazo podatkov za svoje delovanje, saj bo tam shranjenih veliko informacij (ali skoraj vseh). Nekateri imajo radi Postgre ali koga drugega, v tej seriji vadnic bom razložil, kako namestite MySQL in nastavite ločene uporabnike za vsako spletno mesto.

La Različica MySQL, ki jo bom uporabil, je v5.5.31

APC-ji:

APC je optimizator za PHP (razloženo zelo preprosto). Ko je pravilno konfiguriran, nam omogoča, da obdelava PHP deluje bolje, da so odzivi strežnika hitrejši.

Obstajajo druge možnosti, kot je memcache, vendar sem vedno uporabljal APC in imel zelo ugodne rezultate. Priporočam branje tega članka v angleščini: Primerjava APC in Memcache kot lokalnega predpomnilnika vsebine

V vadnici bom uporabil različico php-apc v3.1.13-1 na voljo tudi v skladiščih Debian Stable.

Povzemanje:

Ta način namestitve konfiguracije spletnega strežnika ni najbolj optimalen, daleč od tega, na primer mnogi bodo priporočili Varnish, ki po prebranem deluje resnično čudežno, ker je vse ali skoraj vse predpomnjeno, vendar v našem primeru tega ne potrebujemo 100% strani je vedno predpomnjeno, saj nočemo ali moramo iti v to skrajnost. Vendar pojasnjujem, kot sem rekel zgoraj: "kolikor sem prebral", do danes osebno nisem uporabljal laka, zato vam ne morem dati 100% objektivnega mnenja.

To bo serija vadnic, v katerih vam bom pokazal, kako namestiti spletni strežnik, kot je ta, ki ga gosti ta hip. DesdeLinux (blog, forum, prilepi itd.). Blog ima vsak dan 30.000 obiskov, do njega dostopa skoraj 200 uporabnikov hkrati, pa vendar porabljeni RAM ne presega 500 MB, za nekatere je to morda pretirana poraba, ampak ... hej, imamo 3 GB RAM-a, manj kot 500 MB (kar vključuje Storitev FTP, SSH itd.) je res dobra, kajne? 🙂

Vse "čarovnije" ne naredi samo Nginx + Spawn_FastCGI + APC, naš sistem predpomnilnika blogov je res dobro konfiguriran in pravila za Nginx so natančna, zaradi česar je blog tudi takrat, ko prejme veliko prometa, veliko manj PHP od tistega, kar običajno, saj ima že veliko predpomnjenega. Če imate spletno mesto z velikim povpraševanjem in imate težave z viri, vam nedvomno priporočam, da preučite, kateri sistem predpomnilnika vam bo najbolj ustrezal, kateri bo najbolje ustrezal vašim potrebam.

Upam, da so vam te vadnice zanimive, v vsaki izmed njih bom poskušal vse razložiti na celovit, podroben in čim bolj preprost način.

pozdrav


27 komentarja, pustite svojega

Pustite svoj komentar

Vaš e-naslov ne bo objavljen. Obvezna polja so označena z *

*

*

  1. Za podatke odgovoren: Miguel Ángel Gatón
  2. Namen podatkov: Nadzor neželene pošte, upravljanje komentarjev.
  3. Legitimacija: Vaše soglasje
  4. Sporočanje podatkov: Podatki se ne bodo posredovali tretjim osebam, razen po zakonski obveznosti.
  5. Shranjevanje podatkov: Zbirka podatkov, ki jo gosti Occentus Networks (EU)
  6. Pravice: Kadar koli lahko omejite, obnovite in izbrišete svoje podatke.

  1.   Bruno cascio je dejal

    Zelo dobro in jasno! Čestitam vam!

    1.    KZKG ^ Gaara je dejal

      Hvala

  2.   Christopher castro je dejal

    Zelo dobra vadnica.

    Dvom me navdaja s tem, kako so konfigurirali e-poštni strežnik.

    1.    KZKG ^ Gaara je dejal

      MailServer je nekaj ločenega, torej nima nič skupnega s spletnim strežnikom, kot ga poznate 🙂

      Vendar sem se že zdavnaj odločil, da se ne bom zapletal z MailServerjem, sem se odločil za uporabo iRedMail (podpora za MySQL, LDAP in Postgre) in z ustreznimi nastavitvami in podrobnostmi, ki jih dodam v konfiguracijske datoteke, vse deluje v redu.

  3.   Gnilobe87 je dejal

    Članek mi je všeč, čakam na vrsto člankov

    1.    KZKG ^ Gaara je dejal

      Hvala, upam, da bom naslednjega prinesel v ponedeljek ali torek, ukvarjal se bo z namestitvijo in konfiguracijo Nginxa.

  4.   aca je dejal

    Zelo dobro, pravilna konfiguracija, težko jo je najti, kompromis med dejavniki je včasih skoraj nerešljiv, pred časom sem šel tudi v nginx in kasneje v mariadb (pred kratkim, mislim pred letom dni).

    // Kot sem že omenil, bi bilo dobro, če bi izpostavili možnost chroot in uporabili proxy_cache_path, ki je prav tako koristna. Tudi primerjava vtičnice (v primerih, ko je to mogoče) z vrati. in dobro opredeliti število otrok / ovna.

    pozdrav

    1.    KZKG ^ Gaara je dejal

      Hvala za vaš komentar 🙂
      Ja, seveda bi bilo zelo lepo, če bi Nginx postavil v kletko, da bi bil ločen kot tak od preostalega sistema, v teh vajah nisem upošteval te možnosti, bom videl, kaj lahko storim. O proxy_cache_path ga nisem nikoli uporabljal, nekaj bom prebral, da vidim, kako gre.

      Glede števila niti (min & max) je v konfiguraciji Nginx očitno določeno, v prispevku Nginx bom veliko govoril o datoteki .conf 😉

      Še enkrat hvala za vaš komentar.

  5.   MSX je dejal

    Ta vrsta HowTos je tisto, zaradi česar je splet resnično zmogljiv za računalniške znanstvenike, saj nam prihrani na tone ur raziskav in testiranj, dokler se končno ne odločimo za ustrezno možnost, lepa hvala!

    Eno vprašanje, ali to deluje na Debianu? Katera različica operacijskega sistema in paketi?

    Lep pozdrav!

    1.    KZKG ^ Gaara je dejal

      Hvala.
      Dejansko je spletnih mest, ki poročajo, ponavljajo in ponavljajo novice, že preveč ... potrebna so spletna mesta z vadnicami, to je tisto, kar splet potrebuje!

      Da, Debian Wheezy (trenutna stabilnost), različice paketov so tam v prispevku 😉

  6.   eliotime3000 je dejal

    Odličen komentar. Poglejmo, ali naredim nekakšno napako z ZPanel X in mimogrede namestim ročno namestitev v Debian Wheezy.

  7.   Federico Antonio Valdes Toujague je dejal

    Kar naprej KZKG ^ Gaara !!!, da je najboljše merilo resnice praksa in imate izkušnje s tem, kar pišete. Strokovno in delujoče spletno mesto. Major League Baseball, stari.

    1.    eliotime3000 je dejal

      To je res. Tudi, ko sem se začel igrati s spletnimi strežniki, ki sem jih namestil v sistem Windows, je resnica, da Apache pospeši porabo virov, če uporabljate WordPress (v Drupalu je porabil polovico virov).

  8.   prevoz je dejal

    Mislim, da bo ta del za Nginx prav prišel. Zdaj želim namestiti strežnik z Nginx, php, Varnish in MariaDB. Seveda pa je treba začeti in lenoba lahko veliko naredi, ko gre za boj s strežniki, in trenutno sem zadovoljen s tipično žarnico in memcache, da imam xDD.

    Pozdrav.

  9.   auroszx je dejal

    Super, le eden od teh bi mi prišel prav 🙂 Še en se ga veseli.

  10.   Ivan Gabriel Sosa je dejal

    Sledimo vam. Trenutno začenjamo v svetu spletnih strežnikov. Dva smo kupili pri Hostingerju, prijatelj pa nam ga je pomagal konfigurirati iz nič (PHP, MySQL, Apache). To je edina kombinacija, ki se uporablja v Linuxu, platformi, na kateri sem od januarja.
    Me je pa ta tema zelo zanimala. Na zdravje!

  11.   Jose Manuel je dejal

    Nikoli nisem namestil spletnega strežnika, če pa to želim, vprašanje, ali bo raven, ki je potrebna za razumevanje vadnic in ali je namestitev visoka ali bi jo lahko preizkusil z osnovnim znanjem? Hvala vnaprej.

    1.    eliotime3000 je dejal

      Resnica je, da za upravljanje strežnika baz podatkov ni potrebno veliko znanja. Tisti, ki je to izkušnjo že preizkusil, vam pove.

  12.   Mauricio je dejal

    Pozdravljeni, zelo dobro je, kaj boste počeli s to serijo objav.

    Pred kratkim sem namestil Nginx + Php Fastcgi + Mariadb. Nginx.

    Vse to sem naredil v Archlinuxu, ker je ta distribucija z mojega stališča edina, ki ne prinaša toliko dobrot kot druge. Postavil sem ga v kletko in imel veliko neprijetnosti, da je odlično deloval.

    Zdaj deluje popolnoma. Čeprav me zanimajo vaša mnenja o otrokovih in očetovih procesih, več nasvetov mi dajo, bolje je.

    Vse to je samo za vajo.
    Oprema ima 4 GB DDR2 RAM-a in 2 GHz Core 2.4duo procesor.

    Lep pozdrav in veselim se prihodnjih objav te serije.

  13.   mišic je dejal

    200 uporabnikov povezanih hkrati?
    Samo ob določenih urah dneva, kajne? Ker bi sicer presegel tistih 30.000 dnevnih obiskov.

    1.    KZKG ^ Gaara je dejal

      Ja, seveda ni vedno 200 ljudi na spletu, trenutno jih je skoraj 40, ker je še zgodaj, čez nekaj ur bodo presegli 100.

  14.   dhunter je dejal

    Samo za zabavo sem pravkar na svoji delovni postaji (zdaj Symfony2) prestopil z lahkega na nginx, od tu sem vzel conf [1], zelo preprosto.

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

  15.   Apr4xas je dejal

    Čakam na nadaljevanje tega 😀

    1.    KZKG ^ Gaara je dejal

      Ta teden ga moram objaviti, hvala za branje št

      1.    zdravje je dejal

        in? veliko manjka?

  16.   Dean je dejal

    Dobra objava ...

  17.   NOEL IVAN je dejal

    DOBER VEČER.
    ZARADI SPECIFIKACIJ ŠKOLSKEGA PROJEKTA DOSTOPIJO, DA NAMESTIM NGINX V OPENBSD 5.4 V ORACLE MV VIRTUALBOX, DA BOM MOGLI UPORABLJATI PHP, MYSQL, NADAMAS, DA NISEM MOŽEL IZKLJUČITI INFORMACIJ, KI JIH TREBAM VKLJUČATI V SEM