Jak nainstalovat webový server s Nginx + MySQL + PHP5 + APC + Spawn_FastCGI [1. část: Prezentace]

Nedávno jsme to zmínili DesdeLinux (všechny její služby) fungují Servery GNUTransfer.com. Blog se hodně zlepšil, pokud jde o rychlost, plynulost, i když z toho máme (po sloučení UsemosLinux) více než 30.000 200 návštěv každý den (téměř XNUMX uživatelů připojených současně). Jak dosáhnout dobrého výkonu serveru i při tomto objemu provozu?

V současné době má Justice (VPS, kde je blog a některé další služby) 3 GB RAM, ale spotřebuje se méně než 500 MB, což je možné při správné volbě použitého softwaru a odpovídající konfiguraci. Například Apache je nepochybně ve světě skvělý, č. 1, pokud jde o hostování, ale právě z tohoto důvodu není Apache vždy tou nejlepší volbou. Pokud je provoz vysoký a hardware serveru není opravdu velký (např. 8 nebo 16 GB RAM), Apache může spotřebovávat příliš mnoho RAM, což serveru v určitých časech trvá příliš dlouho, než bude reagovat, nebo ještě hůř, že náš web je offline nedostatečné zdroje. Proto mnozí z nás volí Nginx před Apache.

Nginx:

O Nginxu jsme vám již řekli dříve v článku Nginx: Zajímavá alternativa k Apache, tam jsme vám řekli, že je to webový server jako Apache, LightHttpd nebo Cherokee, ale ve srovnání s Apache vyniká svým výkonem a nízkou spotřebou hardwaru, právě proto mnoho velkých webů, jako je Facebook, MyOpera.com, DropBox nebo dokonce WordPress .com používá Nginx místo Apache. Ve světě Linuxu DesdeLinux Není to jediný, kdo používá Nginx, pokud vím, používá ho i emsLinux a MuyLinux :)

Moje osobní zkušenost s Nginxem se datuje několik let, kdy jsem z nutnosti začal hledat lehké alternativy k Apache. V té době se Nginx chystal pro verzi 0.6 a jeho kompatibilita s weby s vysokou poptávkou vytvořenou v PHP nebyla nejoptimálnější, dnes však od verze 0.9 (v1.2.1 k dispozici na Debianu Stable, v1.4.2 k dispozici na ArchLinuxu) se hodně zlepšil, do té míry, že při správné konfiguraci a spojení Nginx + PHP bude vše fungovat jako kouzlo.

V této sérii kurzů Budu používat Nginx verze 1.2.1-2.2, k dispozici v úložištích Debianu Stable (Wheezy).

PHP5:

PHP, programovací jazyk, se kterým dnes mnoho webů (a CMS) pracuje, je podle mého názoru černou ovcí rodiny. Jinými slovy, podle mých osobních zkušeností velké stránky s velkým objemem návštěv, s mnoha možnostmi, funkcemi atd., Pokud je takový web vytvořen v PHP, bude spotřebovávat více zdrojů než podobný web, například v RoR. Moje zkušenost byla, že lidé, PHP je obrovský zdrojový drak, PHP + Apache je dost na to, aby pohltil stovky a stovky MB RAM bez skutečné potřeby.

Důvod, proč nepoužívat RoR, Django nebo něco jiného, ​​je prostě ten DesdeLinux (blog, naše vlajková loď) pracuje s WordPress, CMS vyvinutý s PHP, který nám nabízí tolik komfortu, že ho prostě neplánujeme krátkodobě ani střednědobě měnit, upřímně řečeno, WordPress, i když není dokonalý, slouží nám k tomu, co potřebujeme a možná i víc.

Pokud jde o PHP, v těchto cvičeních použiji Verze PHP 5.4.4-14 k dispozici na Debian Wheezy (stabilní)

Spawn_FastCGI:

Dá se říci, že spojuje Nginx s PHP, to znamená, že i když mají nainstalovaný balíček PHP5, pokud nemají nainstalovaný a spuštěný Spawn_FastCGI, při otevření stránky v PHP si prohlížeč soubor stáhne, bude neukazovat jim nic, co bylo .php naprogramováno, protože server neví, jak zpracovat soubory .php, proto je nezbytné nainstalovat a nakonfigurovat Spawn_FastCGI.

Pokud bychom použili Apache, bylo by to něco tak jednoduchého, jako instalace balíčku libapache2-mod-php5, ale protože používáme Nginx, musíme místo toho nainstalovat balíček spawn-fcgi. V tutoriálu také vysvětlím, jak pro něj vytvořit počáteční skript v /etc/init.d/, abyste jej mohli pohodlněji ovládat.

MySQL:

Může to být velký otazník nebo pro některé možná diskordantní poznámka. Mnoho známých mi položí otázku: proč používat MySQL a ne MariaDB?

Problém je prostě v tom, že v tuto chvíli nemám dost času věnovat migraci z MySQL na MariaDB, migraci, která by teoreticky měla být transparentní pro každého, 100% kompatibilní se vším, ale to je... Řekl jsem, teoreticky. V té době jsem začal se stěhováním služeb DesdeLinux z jednoho VPS do druhého jsem musel nechat Apache a používat Nginx, to zahrnovalo různé konfigurační soubory, různé způsoby deklarování VHostů, instalaci a konfiguraci od začátku serveru a jeho služeb, v té době jsem nemohl přidat další úkol do seznam, také a abych byl upřímný, změnil jsem Apache za Nginx, protože Apache neuspokojoval mé potřeby, nicméně MySQL zatím splňuje mé potřeby na 100%, nevidím důvod, abych si zvyšoval zátěž změnou něčeho, co už fungovalo pro mě technicky dobře.

Jakmile jsem vysvětlil, proč jsem nenainstaloval MariaDB, vysvětlete také, že drtivá většina webových stránek potřebuje pro svůj provoz databázi, protože tam se bude ukládat spousta informací (nebo téměř všechny). Existují lidé, kteří mají rádi Postgre nebo někdo jiný, v této sérii tutoriálů vysvětlím jak nainstalujte MySQL a nakonfigurujte samostatné uživatele pro každý web.

La Verze MySQL, kterou budu používat, je v5.5.31

APC:

APC je optimalizátor pro PHP (vysvětleno velmi jednoduše). Umožňuje nám, jakmile je správně nakonfigurováno, že zpracování PHP funguje lépe, že odpovědi ze serveru jsou rychlejší.

Existují alternativy jako memcache, nicméně vždy jsem používal APC a měl jsem velmi příznivé výsledky. Doporučuji přečíst tento článek v angličtině: Porovnání APC a Memcache jako mezipaměti místního obsahu

Budu používat verzi php-apc v3.1.13-1 k dispozici také v úložištích Debianu.

Shrnutí:

Tento způsob instalace konfigurace webového serveru není nejoptimálnější, daleko od toho, například mnozí doporučí Varnish, který z toho, co jsem četl, dělá opravdové zázraky, protože vše nebo téměř všechno je uloženo do mezipaměti, ale v našem případě ne potřebujeme, aby bylo 100% stránek vždy uloženo v mezipaměti, protože nechceme nebo potřebujeme jít do toho extrému. Vysvětluji však, jak jsem řekl výše: „pokud jsem četl“, osobně jsem doposud nepoužíval lak, takže vám nemohu poskytnout 100% objektivní názor.

Toto bude série tutoriálů, ve kterých vám ukážu, jak nainstalovat webový server, jako je ten, který hostuje tuto minutu. DesdeLinux (blog, fórum, vložit atd.). Blog má 30.000 200 návštěv každý den, téměř 500 uživatelů k němu přistupuje současně, a přesto spotřebovaná RAM nepřesahuje 3 MB, pro někoho to může být nadměrná spotřeba, ale... hej, máme 500 GB RAM, méně než XNUMX MB (včetně Služba FTP, SSH atd.) je opravdu dobrá, že? 🙂

Všechna „kouzla“ nedělají pouze Nginx + Spawn_FastCGI + APC, náš systém mezipaměti blogů je opravdu dobře nakonfigurovaný a pravidla pro Nginx jsou přesná, díky čemuž je blog i v případě, že přijímá hodně provozu, mnohem méně než PHP obvykle, protože už má hodně mezipaměti. Pokud máte stránky s vysokou poptávkou a máte problémy se zdroji, důrazně vám doporučuji prostudovat si, který mezipaměťový systém bude pro vás nejlépe fungovat, který bude nejlépe vyhovovat vašim potřebám.

Doufám, že vás tyto návody zaujmou, v každém z nich se pokusím vše vysvětlit komplexním, podrobným a co nejjednodušším způsobem.

pozdravy


Zanechte svůj komentář

Vaše e-mailová adresa nebude zveřejněna. Povinné položky jsou označeny *

*

*

  1. Odpovědný za údaje: Miguel Ángel Gatón
  2. Účel údajů: Ovládací SPAM, správa komentářů.
  3. Legitimace: Váš souhlas
  4. Sdělování údajů: Údaje nebudou sděleny třetím osobám, s výjimkou zákonných povinností.
  5. Úložiště dat: Databáze hostovaná společností Occentus Networks (EU)
  6. Práva: Vaše údaje můžete kdykoli omezit, obnovit a odstranit.

  1.   Bruno cascio řekl

    Velmi dobré a jasné! Blahopřeji ti!

    1.    KZKG ^ Gaara řekl

      Děkuji

  2.   Christopher castro řekl

    Velmi dobrý návod.

    Pochybnosti mě naplňují tím, jak nakonfigurovali e-mailový server.

    1.    KZKG ^ Gaara řekl

      MailServer je něco odděleného, ​​to znamená, že nemá nic společného s webovým serverem, jak víte 🙂

      Avšak už dávno jsem se rozhodl nekomplikovat se s MailServerem, rozhodl jsem se použít iRedMail (podpora MySQL, LDAP a Postgre) a se správným nastavením a podrobnostmi, které přidám do konfiguračních souborů, vše funguje dobře.

  3.   hnije87 řekl

    Článek se mi líbí, čekám na sérii článků

    1.    KZKG ^ Gaara řekl

      Díky, doufám, že přinesu další v pondělí nebo v úterý, bude se zabývat instalací a konfigurací Nginx.

  4.   aca řekl

    Velmi dobrá, správná konfigurace, je těžké ji najít, kompromis mezi faktory je někdy téměř neřešitelný, také jsem před chvílí šel na nginx a později na mariadb (nedávno, myslím, že před rokem).

    // jak jsem již zmínil, bylo by hezké, kdybyste zvýšili možnost chroot a použili proxy_cache_path, což je také užitečné. Rovněž srovnání zásuvky (v případech, kdy je to možné) s portem. a dobře definujte počet dětí / berana.

    pozdravy

    1.    KZKG ^ Gaara řekl

      Děkuji za komentář 🙂
      Ano, samozřejmě, bylo by velmi hezké umístit Nginx do klece, aby byl samostatný jako takový od zbytku systému, v těchto tutoriálech jsem tuto možnost neuvažoval, uvidím, co mohu udělat. O proxy_cache_path jsem to nikdy nepoužíval, budu si o tom trochu číst, abych zjistil, jak to chodí.

      Pokud jde o počet vláken (min & max), v konfiguraci Nginx je to samozřejmě definováno, v příspěvku Nginx budu hodně mluvit o souboru .conf 😉

      Ještě jednou vám děkuji za komentář.

  5.   MSX řekl

    Tento typ HowTos je to, co dělá web skutečně výkonným pro počítačové vědce, protože nám šetří spoustu hodin výzkumu a testování, dokud se nakonec rozhodneme pro vhodnou možnost, díky moc!

    Jedna otázka, běží to na Debianu? Jaká verze OS a balíčků?

    Zdravím!

    1.    KZKG ^ Gaara řekl

      Děkuju.
      Webů, které hlásí, které opakují a opakují zprávy, je již příliš mnoho ... co je potřeba, jsou weby, které dávají výukové programy, to je to, co web potřebuje!

      Ano, Debian Wheezy (aktuální Stable), verze balíčků jsou přímo v příspěvku 😉

  6.   eliotime3000 řekl

    Výborný komentář. Podívejme se, jestli dělám jakýsi Errata se ZPanel X, a mimochodem, udělám instalaci ručně v Debian Wheezy.

  7.   Federico Antonio Valdes Toujague řekl

    Pokračujte KZKG ^ Gaara !!!, že nejlepším kritériem pravdy je praxe a máte zkušenosti s tím, co píšete. Profesionální a funkční web. Major League Baseball, vole.

    1.    eliotime3000 řekl

      To je pravda. Také, když jsem začal hrát s webovými servery, které jsem nainstaloval v systému Windows, je pravda, že Apache vystřeluje z hlediska spotřeby zdrojů, pokud používáte WordPress (v Drupalu spotřeboval polovinu zdrojů).

  8.   vozík řekl

    Myslím, že pro část Nginx tento návod přijde vhod. Nyní chci nainstalovat server s Nginx, php, Varnish a MariaDB. Ale samozřejmě musíte začít, a lenošení může udělat hodně, pokud jde o boj se servery, a v tuto chvíli jsem spokojený s typickou lampou a memcache, které mám xDD.

    Pozdrav.

  9.   auroszx řekl

    Skvělé, jen jeden z nich by se hodil 🙂 Další se těší.

  10.   Ivan Gabriel Sosa řekl

    Následujeme vás. V současné době začínáme ve světě webových serverů. Koupili jsme dva od společnosti Hostinger a kamarád nám je pomohl nakonfigurovat od nuly (PHP, MySQL, Apache). Je to jediná kombinace, která bude použita v Linuxu, platformě, na které jsem od ledna.
    Ale toto téma mě velmi zajímalo. Na zdraví!

  11.   Jose Manuel řekl

    Nikdy jsem nenainstaloval webový server, ale pokud to chci udělat, otázka, bude úroveň nutná k pochopení tutoriálů a instalace vysoká, nebo se základními znalostmi to mohu vyzkoušet? Díky předem.

    1.    eliotime3000 řekl

      Pravdou je, že ke zvládnutí databázového serveru to nevyžaduje mnoho znalostí. Říká vám ten, kdo tuto zkušenost již vyzkoušel.

  12.   Mauritius řekl

    Dobrý den, je velmi dobré, co budete dělat s touto sérií příspěvků.

    Nedávno jsem nainstaloval Nginx + Php Fastcgi + Mariadb. Nginx.

    To vše jsem udělal v Archlinuxu, protože ta distribuce je z mého pohledu jediná, která nepřináší tolik dobrot jako ostatní. Vložil jsem to do prostředí v kleci a bylo mi nepříjemné, aby to fungovalo perfektně.

    Nyní to funguje perfektně. I když bych měl zájem znát vaše názory na názory na procesy dětí a otců, čím více tipů mi dáte, tím lépe.

    To vše je jen pro praxi.
    Zařízení má 4 GB paměti DDR2 a procesor 2 GHz Core 2.4duo.

    Zdravím a těším se na nadcházející příspěvky této série.

  13.   sval řekl

    200 uživatelů připojených současně?
    Pouze v určité denní době, že? Protože jinak by to překročilo těch 30.000 XNUMX denních návštěv.

    1.    KZKG ^ Gaara řekl

      Ano, samozřejmě není vždy 200 lidí online, v tuto chvíli je jich téměř 40, protože je ještě brzy, za pár hodin překročí 100.

  14.   lovec řekl

    Jen pro zábavu jsem na své pracovní stanici (právě teď Symfony2) přešel z lighty na nginx, vzal jsem conf z tohoto místa [1], velmi jednoduché.

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

  15.   Apr4xas řekl

    Čekání na pokračování tohoto 😀

    1.    KZKG ^ Gaara řekl

      Tento týden to musím zveřejnit, děkuji, že jste si nás přečetli 🙂

      1.    zdraví řekl

        a? hodně chybí?

  16.   Děkan řekl

    Dobrý příspěvek…

  17.   NOEL IVAN řekl

    DOBRÝ VEČER.
    Z HLEDISKA SPECIFIKACÍ ŠKOLSKÉHO PROJEKTU, MOHOU MĚ Nainstalovat NGINX V OPENBSD 5.4 V ORACLE MV VIRTUALBOX, ABY MOHL POUŽÍVAT PHP, MYSQL, MEZI OSTATNÍMI, NADAMAS, KTERÉ JSEM NEMOHL BÝT NAJDĚT INFORMACE TÝKAJÍCÍ SE VÝŠE UVEDENÉHO, VĚŘÍ JE MNĚ PROBLÉM.