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

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

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).

Цей підручник стосується виключно Nginx, а не Nginx + PHP, об'єднання Nginx + PHP, а також його оптимізація або необхідна конфігурація будуть розглянуті в наступний підручник

1. Встановлення:

Ми почнемо з першого, встановіть Nginx з наших сховищ.

Усі команди, які будуть виконуватися, виконуються з правами root, або ставлячи sudo на початку кожного рядка, або входячи в систему як root

Якщо на вашому сервері ви використовуєте дистрибутив, такий як Debian, Ubuntu або якийсь похідний термінал, ви повинні помістити наступне та натиснути Що натомість? Створіть віртуальну версію себе у :

aptitude install nginx

aptitude не встановлюється за замовчуванням в Ubuntu, однак я рекомендую встановити його та використовувати замість apt-get, оскільки aptitude покращує управління залежностями в певних випадках

Якщо ви використовуєте інший дистрибутив на своєму сервері, такий як CentOS, Red Hat, Fedora, просто встановіть пакет: nginx з офіційного сховища

Особисто я не рекомендую будь-які похідні від Debian, навіть Ubuntu для серверів, за ці роки мій досвід не був цілком задовільним. Мій перший вибір серверної операційної системи - Debian, тоді я б подумав про CentOS, нарешті, про BSD

2. Конфігурація:

У нас уже встановлено Nginx, але нам, очевидно, потрібно його налаштувати. Я підготував стиснутий файл на FTP, який містить усі конфігурації, які використовуються на серверах. DesdeLinux, для PHP, Nginx тощо. Давайте завантажимо та розархівуємо цей файл:

cd ~ && wget http://ftp.desdelinux.net/nginx-spawn-fastcgi.tar.gz && tar xf nginx-spawn-fastcgi.tar.gz

Це створить папку з назвою nginx-spawn-fastcgi, з неї нам знадобляться два файли для чистого Nginx (тобто без прив'язки до PHP):

  • nginx.conf - »Основний файл конфігурації Nginx (про його зміст ми поговоримо пізніше)
  • index.html - »Простий файл html, який ми використаємо, щоб перевірити, чи дійсно Nginx працює для нас у найосновнішій формі
  • mywebsite.net - »Конфігураційний файл для простого веб-сайту, VHost (віртуального хосту), який налаштує доступ до попереднього html

Спочатку перейдемо до папки налаштувань Nginx:

cd /etc/nginx/

Тоді давайте видалимо конфігурацію за замовчуванням і розмістимо власну:

mv nginx.conf nginx.conf_BK && cp ~/nginx-spawn-fastcgi/nginx.conf ./

Це, як я вже сказав, основний файл конфігурації Nginx, у ньому я вже визначив наступне:

користувач www-дані; робочі_процеси 4; pid /var/run/nginx.pid;

Доступ користувача до файлової системи (з якою nginx буде мати доступ скрізь), кількість процесів, з якими працюватиме, а також PID (ідентифікатор процесу nginx).

У нас також є невеликий блок, що називається подіями (налаштування подій), який містить рядок, який вказує максимальну кількість дозволених з'єднань на подію. Нижче наведено блок під назвою http.

Цей блок http містить майже все, що стосується хостингу, принаймні багато речей, які вас зацікавлять. Наприклад, максимальний час життя або очікування (тайм-аут), де будуть наші загальні журнали (access.log та error.log), стиснення даних за допомогою gzip, а також інші правила, які можуть бути корисними в майбутньому.

Як тільки основний конфігураційний файл буде на місці, давайте скопіюємо файл із нашого VHost в папку, доступну для сайтів

cp ~/nginx-spawn-fastcgi/mywebsite.net sites-available/

Крім того, ми повинні зробити символічне посилання з цього файлу на папку з підтримкою сайтів.

ln -s /etc/nginx/sites-available/mywebsite.net /etc/nginx/sites-enabled/

Я пояснюю корисність використання сайтів з включеними та доступними сайтами.

Вони знайдуть моменти, коли у них повинно бути кілька готових та налаштованих файлів vhost, оскільки на цьому сервері вони розмістять мережу, скажімо, 5 сайтів. Однак трапляється, що ще не час увімкнути 2 із цих 5 візитів, але вони повинні мати готові файли, щоб за необхідності вони були в мережі в найкоротші терміни. Ви можете розмістити скільки завгодно хостів на сайтах, доступних (сайти доступні), тому що те, що Nginx читає, щоб розмістити в Інтернеті, це лише ті сайти, які підтримують (сайти), це також буде працювати в зворотному напрямку, у випадку, якщо ви хочете перевести офлайн (тимчасово, наприклад) сайт, немає необхідності видаляти файли з вашого сервера (файли, які нам знадобляться в інший час), ми просто видаляємо символічне посилання на сайти з підтримкою і все. Корисність символічних посилань, а не просто копіювання файлу з однієї папки в іншу, полягає в тому, що коли ми хочемо відредагувати vhost, неважливо, чи будемо редагувати той, який знаходиться у включеному чи доступному, врешті-решт, той самий
архів.

Файл mywebsite.net, як я вже говорив раніше, vhost, який служить прикладом, тобто, іншими словами, ми повинні змінити mywebsite.net і встановити наші конфігурації.

Ми повинні змінити наступне:

  • access_log (рядок 3): Це буде шлях до файлу журналу доступу до цього веб-сайту
  • error_log (рядок 4): Це буде шлях до файлу журналу помилок до цього веб-сайту
  • server_name (рядок 5): URL-адреса, домен, який розміщено в цій папці, наприклад, якби це був форум DesdeLinux це буде: forum server_name.desdelinux. Net
  • root (рядок 6): Шлях до папки, де знаходяться файли html, залишимо це в / var / www /, оскільки це буде лише тестом
Очевидно, що вони повинні вказувати у своїх DNS-записах свого хостинг-провайдера (за допомогою CPanel або іншого інструменту), що домен або субдомен, оголошений в імені_сервера, знаходиться в IP-адресі цього сервера, який вони налаштовують. Тобто в DNS, де вони створюють субдомени для свого домену, вони повинні оголосити, що домен або субдомен, який вони поставили в рядку 5, знаходиться на цьому сервері (цей сервер = IP-адреса відповідного сервера)

Тепер нам просто потрібно скопіювати файл html у папку, яку ми визначили у нашому файлі VHost, / var / www /:

mkdir /var/www/ && cp ~/nginx-spawn-fastcgi/index.html /var/www/

Потім ми перезапускаємо Nginx і все:

service nginx restart

І вуаля, з’явиться щось подібне:

nginx-pure-test-site-html

Я нагадую вам, що ми працюємо спочатку з Nginx для HTML, не маючи підтримки PHP, ця інсталяція PHP та посилання на Nginx буде вмістом наступного підручника (я обіцяю через кілька днів).

У будь-якому випадку, це підручник з встановлення та конфігурації Nginx, щоб він працював чисто, тобто HTML-сайт, сподіваюся, він буде вам цікавий.

Я уточню, що так, все ще існують найкращі практики, які можна використовувати, однак, почекаємо, щоб закінчити цю серію навчальних посібників, а потім оцінимо кінцевий результат роботи 😉

привіт


Залиште свій коментар

Ваша електронна адреса не буде опублікований. Обов'язкові для заповнення поля позначені *

*

*

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

  1.   Нельсон - сказав він

    Дякую, дуже корисно!

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

      Дякую за коментар

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

    У бекпортах є nginx 1.4 ..

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

      Так, але на виробничому сервері я не використовую нічого з цього 😀

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

        Під "це" ви маєте на увазі останню стабільну і перевірену версію, випущену nginx, ви робите це так, ніби це вдале закріплення з sid. ~ _ ~

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

          А, давай, це що ... на серверах я ніколи не любив користуватися іншими репозиторіями, або бекпортами або чимось подібним 🙂

      2.    Рафаель Кастро - сказав він

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

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

          Nginx 1.4 стабільний з квітня минулого року, у бекпортах - 1.4.1-3.

          2013-04-24

          Випущена стабільна версія nginx-1.4.0, яка включає багато нових функцій, розроблених у гілці 1.3.x - підтримка проксінгу з'єднань WebSocket, зшивання OCSP, модуль SPDY, фільтр gunzip тощо.

          http://nginx.org/en/CHANGES-1.4

          1.    Рафаель Кастро - сказав він

            Ви маєте рацію в тому, що говорите, у мене капелюх знятий.

  3.   хінолоко - сказав він

    Дякуємо, що поділилися. Зараз я застосовую ваш найдавніший пост на практиці.
    Я збираюся наповнити вас питаннями XD

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

      Дякуємо за читання 🙂
      Якщо у вас виникли запитання чи сумніви, ми готові допомогти, є форум.desdelinux.net, де разом ми спробуємо дати вам найкраще рішення

      привіт

      1.    Гібрана барера - сказав він

        У мене є запитання, у мене на моєму сервері працює LAMP [Linux (Debian Wheezy), Apache, PHP та MySQL] для WordPress та Owncloud, як перейти на Ngnix, інше питання - яка різниця між Ngnix та Lighttpd.

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

          Найбільшим ускладненням або труднощами для переходу з Apache на Nginx є конфігурації кожного сайту, тобто саме .htaccess, який ви використовуєте.

          .Htaccess є найскладнішим при переході на Nginx, оскільки це різні конфігурації, які ви повинні вставити в Nginx VHost.

          Про LightHTTPd та Nginx ... Я не знаю, я використовував LightHTTPd лише один раз багато років тому, в даний час я не маю уявлення про те, як йде його розвиток, зокрема за допомогою PHP.

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

    NGINX виглядає досить просто в порівнянні з Apache. Чекаємо наступного епізоду, щоб мати можливість доповнити його PHP

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

    Чекаю підказок щодо оптимізації більше до nginx 😀

    До речі, Gaara, ви можете включити у свій наступний підручник, як реалізувати підтримку SSL.

    Привіт.

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

      Поради, які надходять, насправді стосуються оптимізації обробки PHP, кешування сайту, я можу навести приклад конфігурації, яку ми використовуємо в DesdeLinux для Nginx+Wordpress+W3_Total_Cache :)

  6.   кайзер - сказав він

    Дякую за внесок.

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

    А керівництво для archlinux коли? xD

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

      В Arch це було дуже схоже, змінюються лише назви пакетів, але ... conf майже ідентичний

      Але хто має виробничий сервер з Arch? 😀

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

    Привіт там,

    Це я знову xD ...

    Я дотримувався ваших кроків, застосовуючи їх на машині з archlinux, і у мене така проблема:

    [abr4xas@Genius www]$ systemctl status nginx.service
    nginx.service - A high performance web server and a reverse proxy server
    Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled)
    Active: failed (Result: exit-code) since vie 2013-11-15 20:11:35 VET; 1min 13s ago
    Process: 1258 ExecStartPre=/usr/bin/nginx -t -q -g pid /run/nginx.pid; daemon on; master_process on; (code=exited, status=1/FAILURE)

    Будь-які пропозиції 😀

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

    Jo ... xox, я хочу лише внутрішній сервер, тобто я хочу лише замінити xampp, чи слід робити все це?

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

      Якщо ви хочете, ви можете реалізувати це (що я повторюю, це те, з чим працює DL), насправді мій віртуальний сервер (який я використовую для розробки та тестування) у мене зроблено з тим самим, що я поясню.

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

      Позитивним моментом використання цього, що я показую, є дуже низьке споживання апаратного забезпечення порівняно з Apache, але на вашому персональному комп’ютері, який не є хостингом з великим попитом, далеко не так ... якщо XAMPP добре працює для вас, я не подивіться, навіщо це видаляти 🙂

  10.   Ісаак - сказав він

    У мене вже запущений сервер Linux (Debian, Nginx, MySQL та PHP). Мені було важко змусити PHP працювати з Nginx, оскільки я звик до простого веб-сервера Apache.

    Ну, моє запитання: хтось знає, як я можу направити тестовий домен, який я купив, на свій сервер? Я хотів би спробувати свій домен .com, щоб побачити, як він працює, але я не маю ні найменшого уявлення, як це зробити, тому що я завжди використовував адресу NOIP для доступу до нього із noip DUC.

    Сподіваюся, хтось може мені допомогти, дякую!

  11.   Авраам - сказав він

    Я отримую це при спробі підключитися до вашого ftp:

    cd ~ && wget http://ftp.desdelinux.net/nginx-spawn-fastcgi.tar.gz && tar xf nginx-spawn-fastcgi.tar.gz

    Запит HTTP надіслано, чекає відповіді… 404 Не знайдено
    2015-11-23 17:46:30 ПОМИЛКА 404: Не знайдено.

  12.   Райан - сказав він

    У мене запущений сервер CentOS (Gunicorn, Nginx, PHP), щоб змусити їх працювати, мені знадобилося багато роботи, але суть, де я застряг, полягає в тому, що веб-сторінка, яку я хочу запустити, потребує конфігурації постачальника доменів, у цьому випадку Go Daddy , Отже, на даний момент я не знаю, як продовжувати.

  13.   Рікардо - сказав він

    Не могли б ви поділитися зі мною файлами конфігурації, оскільки я не можу їх завантажити, будь ласка