Как установить веб-сервер с Nginx + MySQL + PHP5 + APC + Spawn_FastCGI [2-я часть: 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 (Wheezy).

В этом руководстве рассматривается исключительно Nginx, а не Nginx + PHP, объединение Nginx + PHP, а также его оптимизация или необходимая конфигурация будут рассмотрены в разделе следующий урок

1. Установка:

Начнем с первого, установим Nginx из наших репозиториев.

Все команды, которые должны быть выполнены, выполняются с правами root, либо путем помещения sudo в начало каждой строки, либо путем входа в систему как root

Если на вашем сервере вы используете дистрибутив, такой как Debian, Ubuntu или какой-либо производный в терминале, вы должны ввести следующее и нажать Enter :

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

У нас также есть небольшой блок под названием events (настройки для событий), который содержит строку, которая указывает максимальное количество подключений, разрешенных для каждого события. Ниже расположен блок с названием 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 виртуальных хостов, но у них должны быть готовы файлы, чтобы при необходимости они были в сети в кратчайшие сроки. Вы можете разместить столько vhosts, сколько захотите, в sites-available (sites-available), потому что те, которые Nginx читает для подключения к сети, являются только теми, которые включены (sites-enabled), это также будет работать в противоположном направлении, в случае, если вы хотите отключить (например, временно) сайт, нет необходимости удалять файлы с вашего сервера (файлы, которые нам понадобятся в другое время), мы просто удаляем символическую ссылку сайтов с включенным доступом и все. Утилита наличия символических ссылок, а не просто копирования файла из одной папки в другую, заключается в том, что, когда мы хотим отредактировать виртуальный хост, не имеет значения, редактируем ли мы тот, который находится в разрешенном или доступном, в конце концов, это то же самое.
архив.

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

Мы должны изменить следующее:

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

Теперь нам просто нужно скопировать html-файл в папку, которую мы определяем в нашем файле VHost, / var / www /:

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

Затем перезапускаем Nginx и все:

service nginx restart

И вуаля, появится что-то вроде этого:

nginx-чистый-тест-сайт-html

Напоминаю, что мы сначала работаем с Nginx для HTML, без поддержки PHP, эта установка PHP и привязка его к Nginx будет содержанием следующего руководства (обещаю, через несколько дней).

В любом случае, это руководство по установке и настройке Nginx, чтобы он работал в чистом виде, то есть сайт в формате HTML, надеюсь, он будет вам интересен.

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

привет


Оставьте свой комментарий

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

*

*

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

  1.   нельсон сказал

    Спасибо, очень помогли!

    1.    КЗКГ ^ Гаара сказал

      Спасибо за комментарий

  2.   Данхантер сказал

    В бэкпортах стоит nginx 1.4 ..

    1.    КЗКГ ^ Гаара сказал

      Да, но на производственном сервере я ничего из этого не использую 😀

      1.    Данхантер сказал

        Под «этим» вы подразумеваете последнюю стабильную и протестированную версию, выпущенную nginx, вы говорите так, будто это apt-pinning от sid. ~ _ ~

        1.    КЗКГ ^ Гаара сказал

          Да ладно, это ... на серверах мне никогда не нравилось использовать другие репозитории, бэкпорты или что-то в этом роде 🙂

      2.    Рафаэль Кастро сказал

        Всегда стабильно на серверах, я узнал об этом много лет назад.

        1.    Данхантер сказал

          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.   Chinoloco сказал

    Спасибо, что поделились, сейчас я претворяю в жизнь ваш самый старый пост.
    Я собираюсь заполнить вас вопросами XD

    1.    КЗКГ ^ Гаара сказал

      Спасибо за чтение 🙂
      Если у вас есть какие-либо вопросы или проблемы, вы знаете, мы здесь, чтобы помочь, есть форум.desdelinux.net, где мы вместе постараемся предложить вам лучшее решение

      привет

      1.    Джебран Баррера сказал

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

        1.    КЗКГ ^ Гаара сказал

          Самая большая сложность или трудность перехода с Apache на Nginx - это конфигурации каждого сайта, то есть, в частности, используемого вами .htaccess.

          .Htaccess - самый сложный, когда дело доходит до перехода на Nginx, поскольку это разные конфигурации, которые вы должны поместить в VHost Nginx.

          Насчет LightHTTPd и Nginx… Не знаю, много лет назад я использовал LightHTTPd только один раз, в настоящее время не имею представления, как идет его разработка, в частности с использованием PHP.

  4.   элиотайм3000 сказал

    NGINX выглядит довольно просто по сравнению с Apache. Жду следующего эпизода, чтобы дополнить его PHP

  5.   Маврикий сказал

    Жду советов по оптимизации под nginx 😀

    Кстати, Гаара, вы можете включить в свой следующий урок, как реализовать поддержку SSL.

    Привет.

    1.    КЗКГ ^ Гаара сказал

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

  6.   кайзер сказал

    Спасибо за хороший вклад.

  7.   Апр 4xas сказал

    А руководство для Archlinux когда? xD

    1.    КЗКГ ^ Гаара сказал

      В 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.   Риз сказал

    Джо ... xox, мне нужен только внутренний сервер, то есть я хочу только заменить xampp, мне все это делать?

    1.    КЗКГ ^ Гаара сказал

      Если вы хотите, вы можете реализовать это (что, повторяю, это то, с чем работает 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 Not Found
    2015-11-23 17:46:30 ОШИБКА 404: не найдено.

  12.   Райан сказал

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

  13.   Рикардо сказал

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