Як встановити веб-сервер з Nginx + MySQL + PHP5 + APC + Spawn_FastCGI [1-а частина: Презентація]

Нещодавно ми згадували, що зараз працює DesdeLinux (усі його служби) Сервери GNUTransfer.com. Блог значно покращився з точки зору швидкості, плавності, навіть коли ми переходимо від наявності (після злиття UsemosLinux) більше 30.000 200 відвідувань щодня (майже XNUMX користувачів одночасно підключаються). Як досягти хорошої продуктивності сервера навіть при такому обсязі трафіку?

В даний час Justice (VPS, де є блог та деякі інші послуги) має 3 ГБ оперативної пам'яті, проте споживається менше 500 МБ, це можливо за умови правильного вибору програмного забезпечення для використання та адекватної їх конфігурації. Наприклад, Apache, безсумнівно, є чудовим у світі, №1, коли справа доходить до хостингу, але саме з цієї причини Apache не завжди є найкращим варіантом. Коли трафік великий, а серверне обладнання насправді не велике (Наприклад: 8 або 16 ГБ оперативної пам'яті), Apache цілком може споживати занадто багато оперативної пам'яті, тому сервер у певний час вимагає занадто багато часу, щоб відповісти, або, що ще гірше, що наш сайт не в мережі недостатньо ресурсів. Ось чому багато хто з нас вибирають 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 достатньо, щоб проковтнути сотні та сотні МБ оперативної пам'яті без реальної потреби.

Причина не використовувати 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% сумісною з усім, але це ... як я вже сказав, теоретично. На той час, коли я почав переносити служби FromLinux з одного 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 версії 3.1.13-1 також доступний у репозиторіях Debian Stable.

Підсумовуючи:

Цей спосіб встановлення конфігурації веб-сервера не є найоптимальнішим, далеко не таким, наприклад, багато хто порекомендує Varnish, який із прочитаного творить справжні чудеса, оскільки все або майже все кешоване, але в нашому випадку ми цього не робимо потрібно, щоб 100% веб-сайту завжди було кешовано, оскільки ми не хочемо або маємо йти до цієї крайності. Однак я уточнюю, як я вже говорив вище: "наскільки я вже прочитав", я особисто не використовував Лак до сьогодні, тому не можу дати Вам 100% об'єктивної думки.

Це буде серія навчальних посібників, у яких я покажу вам, як встановити веб-сервер, подібний до того, який зараз розміщує DesdeLinux (блог, форум, вставити тощо). Блог має 30.000 200 відвідувань щодня, майже 500 користувачів мають доступ до нього одночасно, і все ж споживана оперативна пам’ять не перевищує 3 МБ, для деяких це може бути надмірним споживанням, але… привіт, у нас 500 ГБ оперативної пам’яті, менше XNUMX МБ (включно з послугою FTP , SSH тощо) справді добре, чи не так? 

Вся "магія" здійснюється не тільки Nginx + Spawn_FastCGI + APC, наша система кешування блогу дійсно добре налаштована, а правила для Nginx точні, це робить блог навіть тоді, коли він отримує багато трафіку, набагато менше PHP, ніж те, що звичайний, оскільки в ньому вже багато кешованого. Якщо у вас високий попит на сайті і у вас проблеми з ресурсами, я без сумніву рекомендую вам вивчити, яка кеш-система вам найкраще підійде, яка найкраще відповідатиме вашим потребам.

Сподіваюсь, ці підручники вам будуть цікаві, у кожному з них я спробую пояснити все вичерпно, детально і якомога простіше.

привіт