Ako nainštalovať webový server s Nginx + MySQL + PHP5 + APC + Spawn_FastCGI [1. časť: Prezentácia]

Nie je to tak dávno, čo sme to spomenuli teraz DesdeLinux (všetky jej služby) fungujú Servery GNUTransfer.com. Blog sa výrazne zlepšil, pokiaľ ide o rýchlosť, plynulosť, aj keď ideme z toho, že (po zlúčení UsemosLinuxu) viac ako 30.000 200 návštev každý deň (takmer XNUMX používateľov pripojených súčasne). Ako dosiahnuť dobrý výkon servera aj pri tomto objeme prenosu?

V súčasnosti má Justice (VPS, kde je blog a některé další služby) 3 GB RAM, avšak spotrebuje sa menej ako 500 MB, čo je možné pri správnom výbere použitého softvéru a ich adekvátnej konfigurácii. Napríklad Apache je nepochybne vynikajúci na svete, č. 1, pokiaľ ide o hosťovanie, ale práve z tohto dôvodu nie je Apache vždy najlepšou voľbou. Ak je prenos vysoký a hardvér servera nie je skutočne veľký (napr. 8 alebo 16 GB pamäte RAM), server Apache môže spotrebovať príliš veľa pamäte RAM, čo môže serveru v určitých časoch trvať príliš dlho, alebo ešte horšie, že je náš web offline. nedostatočné zdroje. Preto si mnohí z nás volia Nginx pred Apache.

Nginx:

O Nginxe sme vám už hovorili skôr v článku Nginx: Zaujímavá alternatíva k Apache, tam sme vám povedali, že ide o webový server ako Apache, LightHttpd alebo Cherokee, no v porovnaní s Apache vyniká výkonom a nízkou spotrebou hardvéru, práve preto mnoho veľkých stránok ako Facebook, MyOpera.com, DropBox či dokonca WordPress .com používa Nginx namiesto Apache. Vo svete Linuxu DesdeLinux Nie je jediný, ktorý používa Nginx, pokiaľ viem, používa ho aj emsLinux a MuyLinux :)

Moje osobné skúsenosti s Nginxom sa datujú pred niekoľkými rokmi, keď som z núdze začal hľadať ľahké alternatívy k Apache. V tom čase sa Nginx chystal pre verziu 0.6 a jeho kompatibilita s webmi s vysokým dopytom vytvoreným v PHP nebola najoptimálnejšia, avšak v súčasnosti od verzie 0.9 (v1.2.1 k dispozícii na Debiane Stable, v1.4.2 k dispozícii na ArchLinuxe) sa veľa zlepšil, až do tej miery, že pri správnej konfigurácii a zjednotení Nginx + PHP bude všetko fungovať ako kúzlo.

V tejto sérii tutoriálov Použijem Nginx verzie 1.2.1-2.2, dostupné v archívoch Debianu Stable (Wheezy).

PHP5:

PHP, programovací jazyk, s ktorým dnes pracuje mnoho webov (a CMS), je podľa môjho názoru čiernou ovcou rodiny. To znamená, podľa mojich osobných skúseností, veľké stránky s veľkým počtom návštev, s mnohými možnosťami, funkciami atď., Ak je takáto stránka vytvorená v PHP, bude spotrebovať viac zdrojov ako podobná stránka vytvorená napríklad v RoR. Moje skúsenosti boli také, že ľudia, PHP je obrovský drak zdrojov, PHP + Apache je dosť na to, aby prehltol stovky a stovky MB RAM bez skutočnej potreby.

Dôvod, prečo nepoužívať RoR, Django alebo niečo iné, je jednoducho tento DesdeLinux (blog, naša vlajková loď) pracuje s WordPress, redakčným systémom vyvinutým s PHP, ktorý nám ponúka toľko komfortu, že ho jednoducho neplánujeme v krátkodobom ani strednodobom horizonte meniť, úprimne, WordPress, aj keď nie je dokonalý, slúži nám na to, čo potrebujeme a možno aj viac.

Pokiaľ ide o PHP, v týchto tutoriáloch budem používať Verzia PHP 5.4.4-14 k dispozícii na Debian Wheezy (stabilný)

Spawn_FastCGI:

Dá sa povedať, že to spája Nginx s PHP, to znamená, že aj keď majú nainštalovaný balík PHP5, ak nemajú nainštalovaný a spustený Spawn_FastCGI pri otvorení stránky v PHP, prehliadač si súbor stiahne, neukáže im nič, čo .php bol naprogramovaný, pretože server nevie, ako spracovať súbory .php, preto je nevyhnutné nainštalovať a nakonfigurovať Spawn_FastCGI.

Keby sme použili Apache, bolo by to niečo také jednoduché ako inštalácia balíka libapache2-mod-php5, ale keďže používame Nginx, budeme si musieť namiesto toho nainštalovať balíček spawn-fcgi. V tomto návode tiež vysvetlím, ako preň vytvoriť počiatočný skript v priečinku /etc/init.d/, aby ste ho mohli ovládať pohodlnejšie.

MySQL:

Môže to byť veľký otáznik alebo pre niekoho možno nesúhlasná poznámka. Mnoho ľudí, ktorých poznám, mi položí otázku: prečo používať MySQL a nie MariaDB?

Problém je jednoducho v tom, že v tejto chvíli nemám dosť času venovať sa migrácii z MySQL na MariaDB, migrácii, ktorá by teoreticky mala byť transparentná pre každého, 100% kompatibilná so všetkým, ale to je... Povedal som, teoreticky. V tom čase som začal sťahovať služby DesdeLinux z jedného VPS do druhého som musel nechať Apache a používať Nginx, to zahŕňalo rôzne konfiguračné súbory, rôzne spôsoby deklarovania VHostov, inštaláciu a konfiguráciu od začiatku servera a jeho služieb, v tom čase som nemohol pridať ďalšiu úlohu zoznam, tiež a aby som bol úprimný, zmenil som Apache za Nginx, pretože Apache neuspokojil moje potreby, avšak MySQL zatiaľ spĺňa moje potreby na 100%, nevidím dôvod, aby som si zvyšoval záťaž zmenou niečoho, čo už fungovalo pre mna technicky dobre.

Po vysvetlení, prečo som nenainštaloval MariaDB, vysvetlite aj to, že veľká väčšina webových stránok potrebuje pre svoju činnosť databázu, pretože práve tam sa uloží veľa informácií (alebo takmer všetky). Existujú ľudia, ktorí majú radi Postgre alebo niekto iný, v tejto sérii tutoriálov vysvetlím ako nainštalovať MySQL a nakonfigurovať samostatných používateľov pre každý web.

La Verzia MySQL, ktorú budem používať, je v5.5.31

APC:

APC je optimalizátor pre PHP (vysvetlený veľmi jednoducho). Po správnom nakonfigurovaní nám umožní, aby spracovanie PHP fungovalo lepšie a odpovede zo servera boli rýchlejšie.

Existujú alternatívy ako memcache, vždy som však používal APC a mal som veľmi priaznivé výsledky. Odporúčam prečítať tento článok v angličtine: Porovnanie APC a Memcache ako medzipamäte miestneho obsahu

V tutoriále použijem verziu php-apc v3.1.13-1 k dispozícii aj v archívoch Debianu.

Zhrnutie:

Tento spôsob inštalácie konfigurácie webového servera nie je najoptimálnejší, ďaleko od neho, napríklad mnohí odporúčajú Varnish, ktorý z toho, čo som čítal, robí skutočné zázraky, pretože všetko alebo takmer všetko je uložené v pamäti, ale v našom prípade to nepotrebujeme 100% stránky je vždy uložené v medzipamäti, pretože nechceme alebo nemusíme ísť do tohto extrému. Spresňujem však, ako som už uviedol vyššie: „pokiaľ som sa dočítal“, osobne som lak do dnešného dňa nepoužíval, takže vám nemôžem dať stopercentne objektívny názor.

Toto bude séria tutoriálov, v ktorých vám ukážem, ako nainštalovať webový server, ako je ten, ktorý hostil túto minútu. DesdeLinux (blog, fórum, vložiť atď.). Blog má 30.000 200 návštev každý deň, takmer 500 používateľov k nemu pristupuje súčasne a napriek tomu spotreba RAM nepresahuje 3 MB, pre niekoho to môže byť nadmerná spotreba, ale... hej, máme 500 GB RAM, menej ako XNUMX MB (vrátane Služba FTP, SSH atď.) je naozaj dobrá, však? 🙂

Všetko to „kúzlo“ nerobí iba Nginx + Spawn_FastCGI + APC, náš systém vyrovnávacej pamäte blogov je skutočne dobre nakonfigurovaný a pravidlá pre Nginx sú presné, vďaka čomu bude blog, aj keď prijíma veľa prenosov, oveľa menej PHP ako to, čo obvykle, pretože už má veľa cache. Ak máte stránky s vysokým dopytom a máte problémy so zdrojmi, odporúčam vám bezpochyby študovať, aby ste zistili, ktorý systém vyrovnávacej pamäte vám bude najlepšie vyhovovať, ktorý bude najlepšie vyhovovať vašim potrebám.

Dúfam, že vás tieto návody zaujmú, v každom z nich sa pokúsim vysvetliť všetko komplexne, podrobne a čo najjednoduchšie.

pozdravy


Zanechajte svoj komentár

Vaša e-mailová adresa nebude zverejnená. Povinné položky sú označené *

*

*

  1. Zodpovedný za údaje: Miguel Ángel Gatón
  2. Účel údajov: Kontrolný SPAM, správa komentárov.
  3. Legitimácia: Váš súhlas
  4. Oznamovanie údajov: Údaje nebudú poskytnuté tretím stranám, iba ak to vyplýva zo zákona.
  5. Ukladanie dát: Databáza hostená spoločnosťou Occentus Networks (EU)
  6. Práva: Svoje údaje môžete kedykoľvek obmedziť, obnoviť a vymazať.

  1.   Bruno cascio dijo

    Veľmi dobré a prehľadné! Gratulujem ti!

    1.    KZKG ^ Gaara dijo

      Ďakujem vám

  2.   Christopher castro dijo

    Veľmi dobrý návod.

    Pochybnosti ma napĺňajú, ako nakonfigurovali e-mailový server.

    1.    KZKG ^ Gaara dijo

      MailServer je niečo od seba, to znamená, že nemá nič spoločné s webovým serverom, ako viete 🙂

      Avšak už dávno som sa rozhodol nekomplikovať si to s MailServerom, zvolil som použitie iRedMail (podpora MySQL, LDAP a Postgre) a so správnymi nastaveniami a detailmi, ktoré pridávam do konfiguračných súborov, všetko funguje dobre.

  3.   Hnije87 dijo

    Článok sa mi páči, čakám na sériu článkov

    1.    KZKG ^ Gaara dijo

      Ďakujem, dúfam, že ďalší prinesiem v pondelok alebo utorok, bude sa zaoberať inštaláciou a konfiguráciou Nginx.

  4.   ACA dijo

    Veľmi dobrá, správna konfigurácia, ťažko ju nájsť, kompromis medzi faktormi je niekedy takmer neriešiteľný, pred chvíľou som išiel aj na nginx a neskôr na mariadb (nedávno, myslím, že pred rokom).

    // ako som už spomenul, bolo by pekné, keby ste zvýšili možnosť chroot a použili proxy_cache_path, ktorá je tiež užitočná. Tiež porovnanie zásuvky (v prípade, že je to možné) s portom. a dobre definujte počet detí / barana.

    pozdravy

    1.    KZKG ^ Gaara dijo

      Ďakujem za komentár 🙂
      Áno, samozrejme, bolo by veľmi pekné umiestniť Nginx do klietky, aby bol oddelený od zvyšku systému. V týchto tutoriáloch som túto možnosť neuvažoval, uvidím, čo dokážem. O ceste proxy_cache_path som ju nikdy nepoužil, trochu si o nej prečítam, aby som zistil, ako to chodí.

      Čo sa týka počtu vlákien (min & max), v konfigurácii Nginx je to samozrejme definované, v príspevku Nginx budem veľa hovoriť o súbore .conf 😉

      Ešte raz vám ďakujem za komentár.

  5.   MSX dijo

    Tento typ HowTos je to, čo robí web skutočne výkonným pre počítačových vedcov, pretože nám šetrí veľa hodín výskumu a testovania, kým sa nakoniec rozhodneme pre vhodnú možnosť, a to veľmi pekne!

    Jedna otázka, funguje to na Debiane? Aká verzia OS a balíkov?

    Zdravím!

    1.    KZKG ^ Gaara dijo

      Ďakujem.
      Webov, ktoré hlásia a ktoré opakujú a opakujú novinky, je už skutočne príliš veľa ... čo je potrebné, sú weby, ktoré poskytujú návody, to je to, čo web potrebuje!

      Áno, Debian Wheezy (aktuálny Stable), verzie balíkov sú priamo v príspevku 😉

  6.   eliotime3000 dijo

    Výborný komentár. Uvidíme, či urobím akúsi Erratu so ZPanel X, a mimochodom, urobím inštaláciu manuálne v Debian Wheezy.

  7.   Federico Antonio Valdes Toujague dijo

    Len do toho, KZKG ^ Gaara !!!, že najlepším kritériom pravdy je prax a vy máte skúsenosti s tým, čo píšete. Profesionálny a funkčný web. Major League Baseball, kámo.

    1.    eliotime3000 dijo

      To je pravda. Keď som tiež začal hrať s webovými servermi, ktoré som nainštaloval do systému Windows, pravdou je, že Apache stúpa z hľadiska spotreby zdrojov, ak používate WordPress (v Drupale spotreboval polovicu zdrojov).

  8.   kočiar dijo

    Myslím si, že pre časť Nginx sa tento návod bude hodiť. Teraz chcem nainštalovať server s Nginx, php, Varnish a MariaDB. Ale samozrejme musíte začať, a lenivosť dokáže veľa, čo sa týka boja so servermi, a momentálne som spokojný s typickou lampou a memcache, ktoré mám xDD.

    Pozdrav.

  9.   auroszx dijo

    Super, len jeden z nich by padol vhod 🙂 Ďalšia, ktorá sa teší.

  10.   Ivan Gabriel Sosa dijo

    Nasledujeme vás. Momentálne začíname vo svete webových serverov. Kúpili sme dva od spoločnosti Hostinger a priateľ nám ich pomohol nakonfigurovať od nuly (PHP, MySQL, Apache). Je to jediná kombinácia, ktorá sa používa v Linuxe, platforme, na ktorej som od januára.
    Táto téma ma ale veľmi zaujala. Na zdravie!

  11.   Jose Manuel dijo

    Nikdy som nenainštaloval webový server, ale ak to chcem urobiť, bude otázka, bude úroveň nevyhnutná na pochopenie tutoriálov a vykonanie inštalácie vysoká, alebo so základnými znalosťami, či to môžem vyskúšať? Vopred ďakujem.

    1.    eliotime3000 dijo

      Pravda je taká, že na prácu s databázovým serverom nevyžaduje veľa vedomostí. Hovorí vám ten, kto už túto skúsenosť vyskúšal.

  12.   Mauritius dijo

    Dobrý deň, je veľmi dobré, čo budete robiť s touto sériou príspevkov.

    Nedávno som nainštaloval Nginx + Php Fastcgi + Mariadb. Nginx.

    To všetko som urobil v Archlinuxe, pretože táto distribúcia je z môjho pohľadu jediná, ktorá neprináša toľko dobrôt ako ostatné. Vložil som ho do klietkového prostredia a robilo mi veľa nepríjemností, aby to perfektne fungovalo.

    Teraz to funguje perfektne. Aj keď by ma zaujímalo, aké sú vaše názory, na názory na procesy detí a otca, čím viac tipov mi dáte, tým lepšie.

    To všetko iba na cvičenie.
    Vo výbave sú 4 GB DDR2 ram a procesor 2 GHz Core 2.4duo.

    Zdravím a teším sa na ďalšie príspevky tejto série.

  13.   kas dijo

    200 používateľov pripojených súčasne?
    Iba v určitých časoch dňa, však? Pretože inak by to presiahlo tých 30.000 XNUMX denných návštev.

    1.    KZKG ^ Gaara dijo

      Áno, samozrejme, online nie je vždy 200 ľudí, v tejto chvíli je ich takmer 40, pretože je ešte skoro, o pár hodín presiahnu 100.

  14.   lovec dijo

    Len pre zábavu som na svojej pracovnej stanici (práve teraz Symfony2) prešiel z lighty na nginx, vzal som conf odtiaľto [1], veľmi jednoduchý.

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

  15.   Apr4xas dijo

    Čaká sa na pokračovanie tohto 😀

    1.    KZKG ^ Gaara dijo

      Tento týždeň to musím zverejniť, ďakujem, že ste si nás prečítali 🙂

      1.    zdravie dijo

        a? veľa chýba?

  16.   dekan dijo

    Dobrý príspevok ...

  17.   NOEL IVAN dijo

    DOBRÝ VEČER.
    Z dôvodu ŠPECIFIKÁCIÍ ŠKOLSKÉHO PROJEKTU, NECHAJÚ MI INŠTALOVAŤ NGINX V OPENBSD 5.4 V ORACLE MV VIRTUALBOX, ABY SOM MOHOL POUŽÍVAŤ PHP, MYSQL, MEDZI NADAMÁMI, KTORÉ NEMOHEM BÝT NADSTAŤ, ABY SOM NEMOHLA VYHĽADÁVAŤ INFORMÁCIE TÝKAJÚCE SA VYŠŠIE UVEDENÉHO.