Как да инсталирате уеб сървър с Nginx + MySQL + PHP5 + APC + Spawn_FastCGI [1-ва част: Презентация]

Неотдавна споменахме, че сега DesdeLinux (всички негови услуги) работят в GNUTransfer.com сървъри. Блогът се е подобрил много по отношение на скорост, плавност, дори когато се откажем от (след сливане на UsemosLinux) повече от 30.000 200 посещения всеки ден (почти XNUMX потребители, свързани едновременно). Как да постигнем добра производителност на сървъра дори при този обем трафик?

В момента Justice (VPS, където са блогът и някои други услуги) разполага с 3 GB RAM, но се консумират по-малко от 500 MB, това е възможно с правилния избор на софтуер за използване и адекватна конфигурация от тях. Например Apache несъмнено е велик в света, номер 1, когато става въпрос за хостинг, но точно поради тази причина Apache не винаги е най-добрият вариант. Когато трафикът е голям и сървърният хардуер не е много голям (напр. 8 или 16 GB RAM), Apache може да консумира твърде много RAM, което прави сървъра в определени моменти твърде дълго, за да отговори, или още по-лошо, че нашият сайт е офлайн за недостатъчни ресурси. Ето защо много от нас избират Nginx пред Apache.

Nginx:

Вече ви разказахме за Nginx по-рано в статията Nginx: Интересна алтернатива на Apache, там ви казахме, че това е уеб сървър като Apache, LightHttpd или Cherokee, но в сравнение с Apache той се отличава със своята производителност и ниска консумация на хардуер, точно защо много големи сайтове като Facebook, MyOpera.com, DropBox или дори WordPress .com използва Nginx вместо Apache. В света на Linux DesdeLinux Не е единственият, който използва Nginx, доколкото знам, emsLinux и MuyLinux също го използват :)

Личният ми опит с Nginx датира от няколко години, когато поради необходимост започнах да търся леки алтернативи на Apache. По това време Nginx беше за версия 0.6 и неговата съвместимост със сайтове с голямо търсене, направени в PHP, не беше най-оптималната, но днес от версия 0.9 нататъкv1.2.1 на разположение в Debian Stable, v1.4.2 на разположение на ArchLinux) се подобри много, до степен, че с правилна конфигурация и обединение на Nginx + PHP всичко ще работи като чар.

В тази поредица от уроци Ще използвам Nginx версия 1.2.1-2.2, наличен в репозиториите на Debian Stable (Wheezy).

PHP5:

PHP, този език за програмиране, с който днес работят много от сайтовете (и CMS), е според мен черната овца на семейството. С други думи, от моя личен опит, големи сайтове, с голям обем посещения, с много опции, функции и т.н., ако такъв сайт е направен в PHP, той ще консумира повече ресурси, отколкото подобен сайт, направен, например, в RoR. Опитът ми беше, че хора, PHP е огромен ресурсен дракон, PHP + Apache е достатъчен, за да погълне стотици и стотици MB RAM без реална нужда.

Причината да не използвате RoR, Django или нещо друго е просто това DesdeLinux (блогът, нашият флагман) работи с WordPress, CMS, разработен с PHP, който ни предлага толкова много удобства, че просто не планираме да го променяме в краткосрочен или средносрочен план, честно казано, WordPress, дори когато не е перфектен, ни служи за това, от което се нуждаем и може би повече.

По отношение на PHP, в тези уроци ще използвам PHP версия 5.4.4-14 наличен на Debian Wheezy (стабилен)

Spawn_FastCGI:

Това може да се каже, че това е, което свързва Nginx с PHP, тоест дори ако те имат инсталиран пакет PHP5, ако нямат инсталиран и изпълнен Spawn_FastCGI, когато отворят сайт в PHP, браузърът ще изтегли файла, той няма покажете им всичко, което .php е програмирано, тъй като сървърът не знае как да обработва .php файлове, затова е важно да инсталирате и конфигурирате Spawn_FastCGI.

Ако използвахме Apache, това би било нещо толкова просто, колкото инсталирането на пакета libapache2-mod-php5, но тъй като използваме Nginx, ще трябва да инсталираме пакета spawn-fcgi вместо това. Също така в урока ще обясня как да създадете първоначален скрипт за него в /etc/init.d/, за да можете да го контролирате по-удобно.

MySQL:

Това може да е големият въпросителен знак или може би, за някои, противоречивата нотка. Много хора, които познавам, ще ми зададат въпроса: защо да използвам MySQL, а не MariaDB?

Проблемът е просто, че нямам достатъчно време да се посветя на извършването на миграция в този момент от MySQL към MariaDB, миграция, която на теория трябва да е прозрачна за всички, 100% съвместима с всичко, но това е... като Казах, на теория. По това време започнах хамалски услуги DesdeLinux от един VPS към друг трябваше да оставя Apache и да използвам Nginx, това включваше различни конфигурационни файлове, различни начини за деклариране на VHosts, инсталиране и конфигуриране от нулата на сървъра и неговите услуги, по това време не можех да добавя друга задача към списък, също и за да бъда честен, смених Apache за Nginx, защото Apache не задоволи нуждите ми, но MySQL досега отговаря на нуждите ми на 100%, не виждам причина да увеличавам натоварването си, като променям нещо, което вече работеше технически добре за мен.

Веднъж обяснено защо не съм инсталирал MariaDB, обяснете също, че тъй като по-голямата част от уебсайтовете се нуждаят от база данни за тяхната работа, тъй като там ще се съхранява много информация (или почти цялата) от нея. Има някои, които харесват Postgre или някой друг, в тази серия уроци ще обясня как инсталирайте MySQL и конфигурирайте отделни потребители за всеки сайт.

La Версията на MySQL, която ще използвам, е v5.5.31

БТР:

APC е оптимизатор за PHP (обяснено много просто). Позволява ни веднъж правилно конфигурирани, че обработката на PHP работи по-добре, че отговорите от сървъра са по-бързи.

Има алтернативи като memcache обаче, винаги съм използвал APC и съм имал много благоприятни резултати. Препоръчвам да прочетете тази статия на английски: Сравняване на APC и Memcache като локален кеш за съдържание

Ще използвам в урока версията на php-apc v3.1.13-1 наличен и в репозиториите на Debian Stable.

Обобщение:

Този начин на инсталиране на конфигурация на уеб сървър не е най-оптималният, далеч от него, например мнозина ще препоръчат Varnish, който от това, което прочетох, върши истински чудеса, защото всичко или почти всичко е кеширано, но в нашия случай не го правим трябва 100% от сайта винаги да се кешира, защото ние не искаме или трябва да стигнем до тази крайност. Пояснявам обаче, както казах по-горе: „доколкото съм чел“, аз лично не съм използвал Лак до днес, така че не мога да ви дам 100% обективно мнение.

Това ще бъде поредица от уроци, в които ще ви покажа как да инсталирате уеб сървър като този, хостван до момента. DesdeLinux (блог, форум, паста и т.н.). Блогът има 30.000 200 посещения всеки ден, почти 500 потребители го посещават едновременно и въпреки това изразходваната RAM не надвишава 3 MB, за някои това може да е прекомерна консумация, но... хей, имаме 500 GB RAM, по-малко от XNUMX MB (които включват FTP услуга, SSH и т.н.) е наистина добра, нали? 🙂

Цялата „магия“ не се прави само от Nginx + Spawn_FastCGI + APC, нашата кеш система на блога е наистина добре конфигурирана и правилата за Nginx са прецизни, това прави блога дори когато получава много трафик много по-малко PHP от това, което обикновено, тъй като вече има много кеширани. Ако имате сайт с голямо търсене и имате проблеми с ресурсите, силно препоръчвам да проучите, за да видите коя кеш система ще работи най-добре за вас, коя най-добре ще отговаря на вашите нужди.

Надявам се тези уроци да ви бъдат интересни, във всеки един от тях ще се опитам да обясня всичко по изчерпателен, подробен и възможно най-опростен начин.

поздрави


Оставете вашия коментар

Вашият имейл адрес няма да бъде публикуван. Задължителните полета са отбелязани с *

*

*

  1. Отговорен за данните: Мигел Анхел Гатон
  2. Предназначение на данните: Контрол на СПАМ, управление на коментари.
  3. Легитимация: Вашето съгласие
  4. Съобщаване на данните: Данните няма да бъдат съобщени на трети страни, освен по законово задължение.
  5. Съхранение на данни: База данни, хоствана от Occentus Networks (ЕС)
  6. Права: По всяко време можете да ограничите, възстановите и изтриете информацията си.

  1.   Бруно Касио каза той

    Много добре и ясно! Поздравявам те!

    1.    KZKG ^ Гаара каза той

      Благодаря ви

  2.   Кристофър Кастро каза той

    Много добър урок.

    Това, което ме изпълва със съмнение, е как са конфигурирали имейл сървъра.

    1.    KZKG ^ Гаара каза той

      MailServer е нещо отделно, тоест няма нищо общо с уеб сървъра, както знаете 🙂

      Въпреки това, отдавна реших да не се усложнявам с MailServer, избрах да използвам iRedMail (поддръжка за MySQL, LDAP и Postgre) и с правилните настройки и подробности, които добавям в конфигурационните файлове, всичко работи добре.

  3.   Гниене87 каза той

    Статията ми харесва, чакам поредицата статии

    1.    KZKG ^ Гаара каза той

      Благодаря, надявам се да донеса следващия в понеделник или вторник, той ще се занимава с инсталирането и конфигурирането на Nginx.

  4.   АСА каза той

    Много добре, правилната конфигурация, трудно е да се намери, компромисът между факторите понякога е почти неразрешим, аз също отидох в nginx преди малко и по-късно в mariadb (наскоро, мисля, че преди година).

    // както споменах, би било хубаво, ако повдигнете възможността за chroot и използвате proxy_cache_path, което също е полезно. Също така сравнението на сокета (в случаите, които са възможни) спрямо порта. и дефинирайте добре броя на децата / овен.

    поздрави

    1.    KZKG ^ Гаара каза той

      Благодаря ви за коментара 🙂
      Да, разбира се, би било много хубаво да поставите Nginx в клетка, за да го държите отделен от останалата част на системата, не бях обмислял тази възможност в тези уроци, ще видя какво мога да направя. За proxy_cache_path, никога не съм го използвал, ще прочета малко за него, за да видя как протича.

      По отношение на броя нишки (min & max), в конфигурацията на Nginx очевидно е дефиниран, в публикацията на Nginx ще говоря много за .conf файла 😉

      Отново благодаря за вашия коментар.

  5.   MSX каза той

    Този тип HowTos е това, което прави мрежата наистина мощна за компютърни учени, тъй като ни спестява тонове часове изследвания и тестове, докато накрая не вземем решение за подходящия вариант, благодаря много!

    Един въпрос, работи ли това на Debian? Каква версия на ОС и пакети?

    Поздрави!

    1.    KZKG ^ Гаара каза той

      Благодаря.
      Всъщност сайтовете, които докладват, които повтарят и повтарят новините, вече са твърде много ... това, което е необходимо, са сайтове, които поставят уроци, това е, което мрежата се нуждае!

      Да, Debian Wheezy (текуща стабилна), версиите на пакетите са точно там в публикацията 😉

  6.   eliotime3000 каза той

    Отличен коментар. Да видим дали ще направя нещо като Errata със ZPanel X и между другото ще направя инсталацията ръчно в Debian Wheezy.

  7.   Федерико Антонио Валдес Туяге каза той

    Продължете напред, KZKG ^ Гаара !!!, че Най-добрият критерий на истината е практиката и вие имате опит за това, което пишете. Професионален и работещ уебсайт. Мейджър лийг бейзбол, пич.

    1.    eliotime3000 каза той

      Вярно е. Също така, когато започнах да играя с уеб сървърите, които инсталирах в Windows, истината е, че Apache изстрелва по отношение на консумацията на ресурси, ако използвате WordPress (в Drupal консумира половината ресурси).

  8.   карета каза той

    Мисля, че за частта Nginx този урок ще бъде полезен. Сега искам да инсталирам сървър с Nginx, php, Varnish и MariaDB. Но разбира се, трябва да започнете и мързелът може да направи много, когато става въпрос за борба със сървъри и засега съм доволен от типичната лампа и memcache, че имам xDD.

    За поздрав.

  9.   auroszx каза той

    Чудесно, само едно от тях би било полезно 🙂 Друг го очаква с нетърпение.

  10.   Иван Габриел Соса каза той

    Ние ви следваме. В момента започваме в света на уеб сървърите. Купихме две от Hostinger и приятел ни помогна да я конфигурираме от нулата (PHP, MySQL, Apache). Това е единствената комбинация, която се използва в Linux, платформа, на която работя от януари.
    Но много се интересувах от тази тема. Наздраве!

  11.   Жозе Мануел каза той

    Никога не съм инсталирал уеб сървър, но ако искам да го направя, въпрос, дали нивото, необходимо за разбиране на уроците и дали инсталацията е високо или с основни познания, мога ли да го пробвам? Благодаря предварително.

    1.    eliotime3000 каза той

      Истината е, че не са необходими много знания, за да може да се справи сървърът на база данни. Този, който вече е опитал този опит, ви казва.

  12.   Мавриций каза той

    Здравейте, много е добре какво ще правите с тази поредица от публикации.

    Наскоро инсталирах Nginx + Php Fastcgi + Mariadb. Nginx.

    Всичко това, направих го в Archlinux, защото това разпространение е единственото от моята гледна точка, което не носи толкова добри екстри като другите. Поставих го в среда с клетки и ми създаде много неудобства да работи перфектно.

    Сега работи перфектно. Въпреки че ми е интересно да знам вашите мнения за това относно процесите на децата и бащата, колкото повече съвети ми давате, толкова по-добре.

    Всичко това е само за практика.
    Оборудването разполага с 4GB DDR2 RAM и 2Ghz Core 2.4duo процесор.

    Поздрави и очаквам с нетърпение предстоящите публикации от тази поредица.

  13.   мускул каза той

    200 потребители, свързани едновременно?
    Само в определени часове на деня, нали? Защото в противен случай би надхвърлил тези 30.000 XNUMX посещения на ден.

    1.    KZKG ^ Гаара каза той

      Да, разбира се, не винаги има 200 души онлайн, по това време има почти 40, защото все още е рано, след няколко часа те ще надхвърлят 100.

  14.   dhunter каза той

    За удоволствие току-що преминах от lighty към nginx на работната си станция (Symfony2 в момента), взех conf от тук [1], много просто.

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

  15.   Apr4xas каза той

    В очакване на продължението на това 😀

    1.    KZKG ^ Гаара каза той

      Тази седмица трябва да го публикувам, благодаря, че ни прочетохте 🙂

      1.    Salud каза той

        и? много липсва?

  16.   Декан каза той

    Добър пост ...

  17.   НОЕЛ ИВАН каза той

    ДОБЪР ВЕЧЕР.
    ПОСЛЕД СПЕЦИФИКАЦИИ НА УЧИЛИЩЕН ПРОЕКТ, ПОЗВОЛЯВАМ ДА ИНСТАЛИРАМ NGINX В OPENBSD 5.4 В ORACLE MV VIRTUALBOX, ЗА ДА ИЗПОЛЗВАМ ДА ИЗПОЛЗВАМ PHP, MYSQL, НАРЕД ДРУГИ, НАДАМИ, ЧЕ НЕ МОГАХ ДА НАМЕРЯ ИНФОРМАЦИЯ, КАТО СЪГЛАСНО ABEV ИМАЛИ СИ ПРОБЛЕМИ НАД.