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

Ne taip seniai apie tai užsiminėme dabar DesdeLinux (todos sus servicios) están funcionando en 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, 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 🙂

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.

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.

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

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.

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.

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

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


27 komentarai, palikite savo

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.