Kaip įdiegti žiniatinklio serverį naudojant „Nginx + MySQL + PHP5 + APC + Spawn_FastCGI“ [1 dalis: pristatymas]

Ne taip seniai apie tai užsiminėme dabar DesdeLinux (visos jos paslaugos) dirba GNUTransfer.com serveriai. Tinklaraštis labai patobulėjo greičio, sklandumo požiūriu, net kai mes neturime (sujungus „UsemosLinux“) daugiau nei 30.000 200 apsilankymų per dieną (beveik XNUMX vartotojų prisijungė vienu metu). Kaip pasiekti gerą serverio našumą net esant tokiam srautui?

Šiuo metu „Justice“ (VPS, kur yra tinklaraštis ir kai kurios kitos paslaugos) turi 3 GB RAM, tačiau sunaudojama mažiau nei 500 MB, tai įmanoma tinkamai parinkus naudojamą programinę įrangą ir tinkamai ją konfigūravus. Pvz., „Apache“ neabejotinai yra puikus pasaulyje, prieglobos numeris Nr. 1, tačiau būtent dėl ​​šios priežasties „Apache“ ne visada yra geriausias pasirinkimas. Kai srautas yra didelis ir serverio aparatinė įranga nėra iš tikrųjų didelė (pvz., 8 arba 16 GB RAM), „Apache“ gali suvartoti per daug RAM, todėl tam tikru metu serveris gali reaguoti per ilgai arba dar blogiau, kad mūsų svetainė neprijungta prie interneto nepakanka išteklių. Štai kodėl daugelis iš mūsų renkasi „Nginx“, o ne „Apache“.

nginx:

Mes jau pasakojome apie „Nginx“ anksčiau straipsnyje „Nginx“: įdomi „Apache“ alternatyva, mes jums pasakėme, kad tai yra žiniatinklio serveris, pvz., „Apache“, „LightHttpd“ ar „Cherokee“, tačiau, palyginti su „Apache“, jis išsiskiria savo našumu ir mažu aparatinės įrangos suvartojimu, todėl daugelis didelių svetainių, tokių kaip „Facebook“, „MyOpera.com“, „DropBox“ ar net „WordPress“ .com naudoja Nginx vietoj Apache. Linux pasaulyje DesdeLinux Tai ne vienintelis, kuris naudoja Nginx, kiek žinau, tai naudoja ir emsLinux bei MuyLinux :)

Mano asmeninė „Nginx“ patirtis prasidėjo kelerius metus, kai dėl reikalo pradėjau ieškoti lengvų „Apache“ alternatyvų. Tuo metu „Nginx“ rinkosi 0.6 versiją, o suderinamumas su didelės paklausos svetainėmis, sukurtomis PHP, nebuvo pats optimaliausias, tačiau šiandien nuo 0.9 versijos (v1.2.1 galima rasti „Debian Stable“, v1.4.2 - „ArchLinux“) patobulėjo tiek, kad tinkamai sukonfigūravus ir sujungus „Nginx + PHP“ viskas veiks kaip žavesys.

Šioje pamokų serijoje Aš naudosiu Nginx 1.2.1-2.2 versiją, prieinama „Debian Stable“ repose („Wheezy“).

PHP5:

PHP, ta programavimo kalba, su kuria šiandien dirba daugelis svetainių (ir TVS), mano manymu, yra juodos šeimos avys. Kitaip tariant, mano asmenine patirtimi, didelės svetainės su dideliu apsilankymų kiekiu, su daugybe galimybių, funkcijų ir pan., Jei tokia svetainė sukurta PHP, tai sunaudos daugiau išteklių nei panaši svetainė, sukurta, pavyzdžiui, RoR. Mano patirtis rodo, kad žmonės, PHP yra didžiulis išteklių drakonas, pakanka PHP + Apache, kad būtų galima nuryti šimtus ir šimtus MB RAM be realaus poreikio.

Priežastis nenaudoti RoR, Django ar kažko kito yra tiesiog ta DesdeLinux (tinklaraštis, mūsų flagmanas) veikia su WordPress, TVS, sukurta su PHP, kuri mums siūlo tiek daug patogumų, kad mes tiesiog neplanuojame jo keisti trumpuoju ar vidutiniu laikotarpiu, atvirai kalbant, WordPress, net kai jis nėra tobulas, tarnauja tam, ko mums reikia, o gal ir daugiau.

Kalbant apie PHP, šiose pamokose naudosiu PHP 5.4.4-14 versija galima „Debian Wheezy“ (stabilus)

Spawn_FastCGI:

Galima sakyti, kad tai sujungia „Nginx“ su PHP, tai yra, net jei jie turi „PHP5“ paketą, jei jie neturi „Spawn_FastCGI“, įdiegę ir vykdydami, kai atidaro svetainę PHP, naršyklė atsisiųs failą, jiems nieko nerodys, kad .php buvo užprogramuotas, nes serveris nežino, kaip apdoroti .php failus, todėl būtina įdiegti ir konfigūruoti „Spawn_FastCGI“.

Jei mes naudojome „Apache“, tai būtų kažkas tokio paprasto, kaip įdiegti paketą libapache2-mod-php5, tačiau kadangi mes naudojame „Nginx“, turėsime įdiegti „spawn-fcgi“ paketą. Taip pat pamokoje paaiškinsiu, kaip sukurti pirminį scenarijų /etc/init.d/, kad galėtumėte patogiau valdyti.

MySQL:

Tai gali būti didelis klaustukas, o gal kai kuriems - nesuderinamas užrašas. Daugelis, kuriuos pažįstu, man užduos klausimą: kam naudoti „MySQL“, o ne „MariaDB“?

Problema tik ta, kad šiuo metu neturiu pakankamai laiko skirti perkėlimui iš MySQL į MariaDB – perkėlimui, kuris teoriškai turėtų būti skaidrus visiems, 100% suderinamas su viskuo, bet tai yra... kaip Sakiau, teoriškai. Tuo metu pradėjau perkraustymo paslaugas DesdeLinux iš vieno VPS į kitą turėjau palikti „Apache“ ir naudoti „Nginx“, tai buvo susiję su skirtingais konfigūracijos failais, skirtingais VHostų deklaravimo būdais, serverio ir jo paslaugų diegimu ir konfigūravimu nuo nulio, tuo metu negalėjau pridėti kitos užduoties sąrašą, taip pat ir tiesą sakant, pakeičiau „Apache“ į „Nginx“, nes „Apache“ nepatenkino mano poreikių, tačiau „MySQL“ iki šiol patenkina mano poreikius 100%, nematau jokios priežasties padidinti savo darbo krūvį keičiant kažką, kas jau veikė techniškai man gerai.

Kartą paaiškinęs, kodėl neįdiegiau „MariaDB“, taip pat paaiškinkite, kad kadangi daugumai svetainių jų veikimui reikalinga duomenų bazė, nes būtent joje bus saugoma daug informacijos (arba beveik visos). Yra tokių, kuriems patinka „Postgre“ ar kas nors kitas, šioje pamokų serijoje paaiškinsiu, kaip įdiekite „MySQL“ ir sukonfigūruokite atskirus kiekvienos svetainės vartotojus.

La „MySQL“ versija, kurią naudosiu, yra v5.5.31

APC:

APC yra PHP optimizavimo priemonė (paaiškinta labai paprastai). Tai leidžia mums tinkamai sukonfigūravus, kad PHP apdorojimas veikia geriau, kad serverio atsakymai yra greitesni.

Yra tokių alternatyvų kaip „memcache“, tačiau aš visada naudojau APC ir turėjau labai palankius rezultatus. Aš rekomenduoju perskaityti šį straipsnį anglų kalba: Palyginti APC ir Memcache kaip vietinio turinio talpyklą

Pamokoje naudosiu php-apc v3.1.13-1 taip pat galima rasti „Debian Stable“ repose.

Apibendrinant:

Šis žiniatinklio serverio konfigūracijos diegimo būdas nėra pats optimaliausias, toli gražu ne toks, pavyzdžiui, daugelis rekomenduos laką, kuris iš mano perskaitytų dalykų daro tikrus stebuklus, nes viskas arba beveik viskas yra talpykloje, tačiau, mūsų atveju, mes reikia, kad 100% svetainės visada būtų talpykloje, nes mes nenorime ar nereikia eiti į šį kraštutinumą. Tačiau patikslinu, kaip sakiau aukščiau: „kiek skaičiau“, aš asmeniškai iki šiol nenaudojau lako, todėl negaliu pateikti jums 100% objektyvios nuomonės.

Tai bus vadovėlių serija, kurioje parodysiu, kaip įdiegti tokį žiniatinklio serverį, koks buvo priglobtas šią minutę. DesdeLinux (tinklaraštis, forumas, įklijavimas ir kt.). Tinklaraštį kasdien aplanko 30.000 200 kartų, vienu metu jį pasiekia beveik 500 vartotojų, tačiau RAM sunaudojama ne daugiau kaip 3 MB, kai kuriems tai gali būti per didelis suvartojimas, bet... ei, mes turime 500 GB RAM, mažiau nei XNUMX MB (įskaitant FTP paslauga, SSH ir kt.) yra tikrai geras, tiesa? 🙂

Visą „magiją“ atlieka ne tik „Nginx + Spawn_FastCGI + APC“, mūsų tinklaraščio talpyklos sistema yra tikrai gerai sukonfigūruota, o „Nginx“ taisyklės yra tikslios, todėl tinklaraštis net ir tada, kai gauna didelį srauto procesą, yra daug mažesnis nei PHP. įprasta, nes jau daug talpykloje. Jei turite didelę paklausą turinčią svetainę ir turite problemų su ištekliais, be jokios abejonės rekomenduoju studijuoti, kad sužinotumėte, kuri talpyklos sistema jums labiausiai tiks, kuri geriausiai atitiks jūsų poreikius.

Tikiuosi, kad šios pamokos jums bus įdomios. Kiekvienoje iš jų pabandysiu viską paaiškinti išsamiai, išsamiai ir kuo paprasčiau.

saludos


Palikite komentarą

Jūsų elektroninio pašto adresas nebus skelbiamas. Privalomi laukai yra pažymėti *

*

*

  1. Atsakingas už duomenis: Miguel Ángel Gatón
  2. Duomenų paskirtis: kontroliuoti šlamštą, komentarų valdymą.
  3. Įteisinimas: jūsų sutikimas
  4. Duomenų perdavimas: Duomenys nebus perduoti trečiosioms šalims, išskyrus teisinius įsipareigojimus.
  5. Duomenų saugojimas: „Occentus Networks“ (ES) talpinama duomenų bazė
  6. Teisės: bet kuriuo metu galite apriboti, atkurti ir ištrinti savo informaciją.

  1.   Bruno cascio sakė

    Labai gerai ir aišku! Sveikinu tave!

    1.    KZKG ^ Gaara sakė

      Ačiū

  2.   Christopheris Castro sakė

    Labai gera pamoka.

    Mane abejoja tai, kaip jie sukonfigūravo el. Pašto serverį.

    1.    KZKG ^ Gaara sakė

      „MailServer“ yra kažkas, išskyrus tai, kad jis neturi nieko bendro su žiniatinklio serveriu 🙂

      Tačiau labai seniai nusprendžiau neapsunkinti „MailServer“, nusprendžiau naudoti „iRedMail“ („MySQL“, „LDAP“ ir „Postgre“ palaikymas) ir su tinkamais nustatymais bei išsamia informacija, kurią pridedu konfigūracijos failuose, viskas veikia gerai.

  3.   Puvimas87 sakė

    Straipsnis man patinka, laukiu straipsnių ciklo

    1.    KZKG ^ Gaara sakė

      Ačiū, tikiuosi, kad kitą atvesiu pirmadienį arba antradienį, jis bus susijęs su „Nginx“ diegimu ir konfigūravimu.

  4.   aca sakė

    Labai gera, tinkama konfigūracija, sunku rasti, kompromisas tarp veiksnių kartais yra beveik neišsprendžiamas, aš taip pat prieš kurį laiką nuėjau į „nginx“, o vėliau - į „mariadb“ (neseniai, manau, prieš metus).

    // kaip jau minėjau, būtų puiku, jei iškeltumėte chroot galimybę ir naudotumėte proxy_cache_path, kuris taip pat yra naudingas. Taip pat lizdo (tais atvejais, kai tai įmanoma) palyginimas su uostu. ir gerai apibrėžkite vaikų / avino skaičių.

    saludos

    1.    KZKG ^ Gaara sakė

      Ačiū už jūsų komentarą 🙂
      Taip, žinoma, būtų labai malonu uždėti „Nginx“ į narvą, kad jis būtų atskirai nuo likusios sistemos. Šiose pamokose šios galimybės nebuvau apsvarsčiusi, pamatysiu, ką galiu padaryti. Apie proxy_cache_path aš niekada jo nenaudojau, aš šiek tiek paskaitysiu apie tai, kaip jis eina.

      Kalbant apie gijų skaičių (min & max), Nginx konfigūracijoje tai akivaizdžiai apibrėžta, Nginx įraše aš daug kalbėsiu apie .conf failą 😉

      Vėlgi, ačiū už jūsų komentarą.

  5.   MSX sakė

    Šio tipo „HowTos“ daro žiniatinklį išties galingą kompiuterių mokslininkams, nes sutaupo daugybę valandų tyrimų ir bandymų, kol galų gale nusprendžiame dėl tinkamo varianto, labai ačiū!

    Vienas klausimas, ar tai veikia su „Debian“? Kokia OS ir paketų versija?

    Sveiki atvykę!

    1.    KZKG ^ Gaara sakė

      Ačiū.
      Iš tikrųjų svetainių, kurios praneša, kurios kartoja ir kartoja naujienas, jau yra per daug ... reikia svetainių, kuriose pateikiamos mokymo programos, būtent to reikia žiniatinkliui!

      Taip, „Debian Wheezy“ (dabartinis „Stable“), paketų versijos yra tiesiai ten įraše 😉

  6.   3000 sakė

    Puikus komentaras. Pažiūrėkime, ar aš darau tam tikrą „Errata“ su „ZPanel X“, ir, beje, atlikiu diegimą rankiniu būdu „Debian Wheezy“.

  7.   Federico Antonio Valdés Toujague'as sakė

    Pirmyn KZKG ^ Gaara !!!, kad geriausias tiesos kriterijus yra praktika, ir jūs turite patirties apie tai, ką rašote. Profesionali ir veikianti svetainė. „Major League“ beisbolas, bičiuli.

    1.    3000 sakė

      Tai tiesa. Be to, kai pradėjau žaisti su žiniatinklio serveriais, kuriuos įdiegiau sistemoje „Windows“, tiesa ta, kad „Apache“ išnaudoja išteklių sunaudojimą, jei naudojate „WordPress“ („Drupal“ ji sunaudojo pusę išteklių).

  8.   vežimas sakė

    Manau, kad „Nginx“ daliai ši pamoka bus naudinga. Dabar noriu įdiegti serverį su „Nginx“, „php“, „Varnish“ ir „MariaDB“. Bet, žinoma, jūs turite pradėti, o tingumas gali daug nuveikti, kai reikia kovoti su serveriais, ir šiuo metu esu patenkinta tipine lempa ir „memcache“, kurią turiu „xDD“.

    Pasisveikinimas.

  9.   „AurosZx“ sakė

    Puiku, tik vienas iš tokių praverstų 🙂 Kitas jo laukia.

  10.   Ivanas Gabrielis Sosa sakė

    Mes sekame tave. Šiuo metu pradedame veikti žiniatinklio serverių pasaulyje. Mes nusipirkome du iš „Hostinger“, o draugas padėjo mums sukonfigūruoti jį nuo nulio (PHP, MySQL, Apache). Tai vienintelis derinys, kuris naudojamas „Linux“ - platformoje, kurioje esu nuo sausio mėnesio.
    Bet mane labai domino ši tema. Cheers!

  11.   Chosė Manuelis sakė

    Niekada neįdiegiau žiniatinklio serverio, bet jei noriu tai padaryti, kyla klausimas, ar reikalingas lygis norint suprasti vadovėlius ir ar diegimas bus aukštas, ar turėčiau pagrindinių žinių, ar galėčiau tai išbandyti? Ačiū iš anksto.

    1.    3000 sakė

      Tiesa ta, kad norint tvarkyti duomenų bazės serverį nereikia daug žinių. Tas, kuris jau išbandė tą patirtį, jums sako.

  12.   Mauricijus sakė

    Sveiki, labai gerai, ką ketinate daryti su šia pranešimų serija.

    Neseniai įdiegiau „Nginx + Php Fastcgi + Mariadb“. Nginx.

    Visa tai padariau „Archlinux“, nes mano požiūriu tas paskirstymas yra vienintelis, kuris neatneša tiek daug gėrybių, kaip kiti. Aš įdėjau jį į narvą ir man tai sukėlė daug nepatogumų, kad jis veiktų puikiai.

    Dabar jis veikia puikiai. Nors man įdomu sužinoti jūsų nuomonę apie vaikų ir tėvo procesus, kuo daugiau patarimų jie man duos, tuo geriau.

    Visa tai skirta tik praktikai.
    Įranga turi 4 GB DDR2 atminties ir 2 GHz „Core 2.4duo“ procesorių.

    Sveikinimai ir laukiu būsimų šios serijos įrašų.

  13.   raumuo sakė

    200 vartotojų prisijungė vienu metu?
    Tik tam tikru paros metu, tiesa? Priešingu atveju jis viršytų tuos 30.000 XNUMX apsilankymų per dieną.

    1.    KZKG ^ Gaara sakė

      Taip, žinoma, ne visada internete yra 200 žmonių, šiuo metu jų yra beveik 40, nes dar anksti, per kelias valandas jie viršys 100.

  14.   dunteris sakė

    Dėl savo malonumo aš tiesiog perėjau iš „lighty“ į „nginx“ savo darbo vietoje („Symfony2“ dabar), iš čia paėmiau konfidencialumą [1], labai paprastą.

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

  15.   Apr4xas sakė

    Laukia šio tęsinio 😀

    1.    KZKG ^ Gaara sakė

      Šią savaitę turiu ją paskelbti, ačiū, kad mus perskaitėte 🙂

      1.    Salud sakė

        ir? daug ko trūksta?

  16.   Dekanas sakė

    Geras pranešimas ...

  17.   NOELIS IVANAS sakė

    LABAS VAKARAS.
    DĖL MOKYKLOS PROJEKTŲ SPECIFIKACIJŲ JIE LEIDO ĮDIEGTI „NGINX“ „OPENBSD 5.4“ ORACLE MV VIRTUALBOX, kad galėčiau naudoti PHP, „MySQL“, tarp kitų, NADAMAS, KURIŲ NEGALĖJAU ATSIŽSAKYTI, KAIP MINĖTU anksčiau.