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

Не так давно ми згадували про це зараз DesdeLinux (todos sus servicios) están funcionando en Сервери 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 достатньо, щоб проковтнути сотні та сотні МБ оперативної пам'яті без реальної потреби.

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.

Щодо 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?

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.

Одного разу пояснивши, чому я не встановив 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% об'єктивної думки.

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

Вся "магія" здійснюється не тільки 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 - сказав він

    Відмінний коментар. Давайте подивимось, чи я роблю якусь помилку з ZPanel X, і, до речі, виконую установку вручну в Debian Wheezy.

  7.   Федеріко Антоніо Вальдес Туягу - сказав він

    Вперед, KZKG ^ Гаара !!!, що найкращим критерієм істини є практика, і ви маєте досвід щодо того, що пишете. Професійний та робочий веб-сайт. Вища ліга бейсболу, чувак.

    1.    eliotime3000 - сказав він

      Це правда. Крім того, коли я почав грати з веб-серверами, які я встановив у Windows, правда полягає в тому, що Apache виграє з точки зору споживання ресурсів, якщо ви використовуєте WordPress (у Drupal він споживав половину ресурсів).

  8.   карета - сказав він

    Я думаю, що для частини Nginx цей підручник стане в нагоді. Тепер я хочу встановити сервер з Nginx, php, Varnish та MariaDB. Але, звичайно, нам слід починати, і лінощі можуть багато для мене зробити, коли справа доходить до боротьби із серверами, і на даний момент я задоволений типовою лампою та пам’яттю, що маю xDD.

    Привітання.

  9.   auroszx - сказав він

    Чудово, тільки одне з них стане в нагоді.

  10.   Іван Габріель Соса - сказав він

    Ми йдемо за вами. В даний час ми починаємо світ веб-серверів. Ми придбали два у Hostinger, і друг допоміг нам налаштувати їх з нуля (PHP, MySQL, Apache). Це єдина комбінація, яка використовується в Linux, платформі, на якій я працюю з січня.
    Але мене ця тема дуже зацікавила. На здоров’я!

  11.   Жозе Мануель - сказав він

    Я ніколи не встановлював веб-сервер, але якщо я хочу це зробити, питання, чи буде рівень, необхідний для розуміння навчальних посібників, і чи висока інсталяція, чи я маю спробувати базові знання? Заздалегідь спасибі.

    1.    eliotime3000 - сказав він

      Істина полягає в тому, що для обробки сервера баз даних не потрібно багато знань. Той, хто вже випробував цей досвід, розповідає вам.

  12.   Маврикій - сказав він

    Привіт, дуже добре, що ви збираєтеся робити з цією серією публікацій.

    Нещодавно я встановив Nginx + Php Fastcgi + Mariadb. Nginx.

    Все це, я зробив це в Archlinux, тому що такий розподіл є єдиним з моєї точки зору, який не приносить стільки смаколиків, як інші. Я помістив його в клітку, і це доставляло мені багато незручностей, щоб він працював ідеально.

    Зараз він працює ідеально. Хоча мені цікаво знати ваші думки щодо думок дітей та батьків, чим більше порад ви мені дасте, тим краще.

    Все це лише для практики.
    Обладнання має 4 Гб оперативної пам'яті DDR2 і процесор Core 2duo з частотою 2.4 ГГц.

    Вітаю, і я з нетерпінням чекаю наступних публікацій цієї серії.

  13.   м'язів - сказав він

    200 користувачів підключено одночасно?
    Тільки в певний час доби, так? Бо інакше це перевищило б ці 30.000 XNUMX щоденних відвідувань.

    1.    KZKG ^ Гаара - сказав він

      Так, звичайно, в мережі не завжди 200 людей, на даний момент їх майже 40, бо ще рано, за кілька годин вони перевищать 100.

  14.   dhunter - сказав він

    Для розваги я щойно перейшов із легкого на nginx на своїй робочій станції (Symfony2 прямо зараз), я взяв конф. Звідси [1], дуже просто.

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

  15.   Квітня4xas - сказав він

    Чекаю продовження цього 😀

    1.    KZKG ^ Гаара - сказав він

      Цього тижня я повинен його опублікувати, дякую за прочитання номерів

      1.    здоров'я - сказав він

        і? багато чого не вистачає?

  16.   декан - сказав він

    Хороший пост ...

  17.   НОЕЛ ІВАН - сказав він

    ДОБРОГО ВЕЧОРА.
    Зважаючи специфікацій шкільного проекту, вони дозволяють мені встановити NGINX в OPENBSD 5.4 ORACLE MV VIRTUALBOX, ЩО МОЖУТЬ ВИКОРИСТОВУВАТИ PHP, MYSQL, СЕРЕД ІНШИХ, НАДАМ, ЩО Я НЕ МОГО ЗНАЙТИ Є ПРОБЛЕМОЮ ДЛЯ МНОГО.