Шаг #2: Установка веб-сервера Nginx
Nginx (энджин экс) можно установить как минимум двумя способами.
Способ #1: Из репозитория EPEL-release
Так как Nginx не входит в набор пакетов доступных из базового репозитория, то скачать и установить его вы сможете его из репозитория EPEL-release.
EPEL-release, в некоторых дистрибутивах, может быть не установлен по-умолчанию, поэтому для начала нужно убедится, что он у вас есть.
или
Репозиторий Epel-release установлен
Если вы не видите никаких результатов для вышеуказанных команд, тогда EPEL репозитория у вас нет и его нужно установить.
Далее устанавливаем сам веб-сервер nginx
Минус данного способа в том, что часто в EPEL репозитории хранится устаревшая версия пакета Nginx. Установленную версию можно проверить следующей командой:
Способ #2: Из собственного репозитория Nginx
Данный способ позволит установить последнюю стабильную версию Nginx прямо с сайта http://nginx.org, который мы укажем в репозитории как источник пакета.
Для этого необходимо создать новый файл в каталоге .
Файл нужно наполнить следующим содержимым:
name=nginx repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1
1 |
nginx name=nginx repo baseurl=httpnginx.orgpackagescentos$releasever$basearch gpgcheck= enabled=1 |
Теперь установим Nginx, однако в качестве источника пакета автоматически будет выбран наш, только что созданный, репозиторий.
Включим Nginx и добавим его в автозапуск при перезагрузке системы.
Уже сейчас можно проверить работоспособность сервера. Наберите ip-адрес вашей машины в адресной строке браузера и вам будет выдана проверочная страница .
Nginx запущен и исправно работает
Установка phpmyadmin на web сервер Freebsd
# cd /usr/ports/databases/phpmyadmin # make install clean
Перемещаем файлы из установочной директории по-умолчанию в наш поддомен pma.site1.ru:
# mv /usr/local/www/phpMyAdmin/* /web/sites/pma.site1.ru/www # mv /usr/local/www/phpMyAdmin/.* /web/sites/pma.site1.ru/www
Меняем владельца:
# chown -R www:www /web/sites/pma.site1.ru/www
Настраиваем DNS записи на pma.site1.ru или просто добавляем в винде в файл hosts строку
192.168.1.21 pma.site1.ru
И заходим по адресу http://pma.site1.ru
У вас должно открыться окно приветствия phpmyadmin. Вводим сюда пользователя и пароль root, которые мы задали в самом начале настройки и попадаем в панель управления базами.
На этом настройка web сервера на базе Freebsd 10.1 и связки nginx + php-fpm закончена.
Подготовка php-fpm к мониторингу
Переходим к мониторингу php-fpm. Он отдает побольше метрик, не буду описывать их все. Рассмотрю только самые основные. Мы будем наблюдать следующие параметры php-fpm:
active processes count | Число активных процессов |
connections per sec | Количество соединений в секунду |
idle processes count | Количество idle процессов |
slow requests | Количество медленных запросов |
length of listen queue | Размер очереди ожидающих подключений |
max children reached | Сколько раз был достигнут лимит по процессам |
max length of listen queue | Максимальный размер очереди подключений |
Пару слов о том, зачем это нужно и как пользоваться полученными данными. Этот мониторинг актуален, если у вас динамическое создание процессов в php-fpm. К примеру, если у вас значение max children reached регулярно больше единицы, то вам рекомендуется увеличить лимит на максимальное количество процессов, если позволяют ресурсы сервера. То же самое относится и к параметру length of listen queue. Если он больше нуля, то создается очередь из запросов, которые не успевают обработать сервер. Необходимо увеличить количество процессов, которые смогут обработать ожидающие подключения.
Приступаем к настройке мониторинга php-fpm на web сервере. Установим fcgi:
# yum install fcgi
Теперь подготовим pfp-fpm для сбора статистики. Для этого мы снова воспользуемся nginx. Редактируем его конфиг, добавляя в ту же секцию server, что и на прошлом этапе, следующую конструкцию:
location /phpfpm-status { include fastcgi_params; fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; }
Обращаю ваше внимание на то, что я в своей конфигурации использую подключение к php-fpm через unix сокет. За это отвечает параметр конфигурации fastcgi_pass
Если вы используете в работе tcp/ip порт, обычно 127.0.0.1:9000, то нужно указать его вместо сокета, вот так: fastcgi_pass 127.0.0.1:9000
Перезапускаем nginx:
# systemctl restart nginx
Внесем необходимые изменения в конфиг php-fpm — добавим одну строку:
# mcedit /etc/php-fpm.d/www.conf pm.status_path = /phpfpm-status
Перезапускаем php-fpm:
# systemctl restart php-fpm
Проверяем, что по указанному адресу мы получаем статистику php-fpm:
# curl http://localhost/phpfpm-status
И ее же в формате json.
# curl -s 'http://localhost/phpfpm-status?json' {"pool":"www","process manager":"dynamic","start time":1566494413,"start since":2049,"accepted conn":3236,"listen queue":0,"max listen queue":0,"listen queue len":0,"idle processes":5,"active processes":1,"total processes":6,"max active processes":6,"max children reached":0,"slow requests":0}
Если у вас примерно то же самое, то все в порядке, php-fpm отдает информацию о своем состоянии.
Доступ к сайту по sftp
Если вы администратор и единственный пользователь, то больше можно ничего не делать. Вы и так сможете загрузить на сервер все что нужно тем или иным способом. Если же вы будете передавать управление сайтами другим людям, им нужен доступ к директории с исходниками сайта. Раньше для этих целей повсеместно использовали ftp. Если вы хотите так сделать, у меня есть статья по настройке ftp сервера vsftpd.
Я же предлагаю использовать sftp по нескольким причинам:
- Он безопаснее.
- Его быстрее настроить.
- Не надо отдельно настраивать firewall.
Статью по настройке sftp доступа я уже тоже писал, все подробности там. Здесь без комментариев выполним необходимые действия.
Создаем пользователя для подключения к сайту и добавляем его в группу sftp. Я обычно использую имя пользователя пересекающееся с названием сайта. Так удобнее управлять.
Открываем конфиг ssh по пути /etc/ssh/sshd_config и комментируем там одну строку, добавляя далее несколько новых.
Перезапускаем службу sshd.
Теперь нужно сделать владельцем каталогов /web/sites и /web/sites/z.serveradmin.ru пользователя root и убрать у остальных права на запись в эти каталоги. Без этого параметр ChrootDirectory работать не будет и при подключении получите ошибку.
Этого уже достаточно, чтобы вы могли подключиться к сайту, к примеру, с помощью программы winscp. Если что-то пойдет не так и будут какие-то ошибки, то смотреть подробности нужно в логе /var/log/secure. С помощью такого подключения вы можете загрузить к себе исходники сайта, но не править их. У вас доступ только на чтение. В таком подходе возникает много нюансов с правами к файлам и директориям. Дальше я расскажу, как их аккуратно и грамотно разрулить, чтобы у нас не было проблем с дальнейшей работой сайтов от разных пользователей и были все необходимые права.
Настройка php-fpm
touch /etc/php5/fpm/pool.d/site.conf
В этот файл записываем следующее:
# Сокет-файл для обмена данными с nginx listen = /var/run/php-fpm-site.sock # Максимально доступное в системе количество соединений listen.backlog = -1 # Владелец сокета и группа владения listen.owner = www-data listen.group = www-data # Права, устанавливаемые при создании сокета listen.mode = 660 user = www-data group = www-data # Количество процессов будет контролироваться динамически pm = dynamic pm.max_children = 30 pm.start_servers = 2 pm.min_spare_servers = 2 pm.max_spare_servers = 5 pm.max_requests = 50 env = site env = /usr/local/bin:/usr/bin:/bin env = /tmp env = /tmp env = /tmp
Теперь можно запускать php-fpm командой
service php5-fpm start
И после этого так же запустить nginx
service nginx start
Давайте создадим директорию /var/www/site, если она еще не создана:
mkdir -p /var/www/site
А в этой директории создадим файл /var/www/site/index.php со следующим содержимым:
<?php phpinfo(); ?>
Теперь в браузере откроем наш сервер по доменному имени. Например, «http://site». Должна открыться страница с информацией о сервере. Там же перечислены все модули, которые используются. В этом списке должен присутствовать модуль apc, и его статус должен быть «Enabled».
Установка php-fpm 7.1
Установка и настройка 7-й версии php на centos не очень простая задача. Ранее я уже рассказывал как обновить php до 7-й версии, но в итоге откатился назад. Прошло прилично времени и откатываться уже не будем, так как большинство проблем исправлены.
Вторая проблема в том, что надо определить, какой репозиторий использовать для установки php7. Их существует очень много. К примеру, мой хороший знакомый в своей статье по настройке web сервера использует репозиторий Webtatic. В принципе, чтобы просто поставить php 7-й версии это нормальный вариант. Но если вы после этого захотите установить phpmyadmin через yum уже ничего не получится. Будет ошибка зависимостей, которые нужно будет как-то руками разбирать.
То же самое будет и с другими пакетами. К примеру, zabbix без плясок с бубнами скорее всего не встанет. В сторонних репозиториях есть еще одна проблема. Иногда они закрываются. И это станет для вас большой проблемой на боевом сервере. Так что к выбору репозитория нужно подходить очень аккуратно и внимательно. Я до сих пор иногда встречаю настроенные сервера centos 5 с очень популярным в прошлом репозиторием centos.alt.ru, который закрылся. Сейчас это уже не так актуально, так как таких серверов осталось мало, но некоторое время назад мне это доставляло серьезные неудобства.
Для установки свежей версии php я буду использовать репозиторий Remi. Это известный и популярный репозиторий, который ведет сотрудник RedHat. И хотя надежность репозитория, который ведет один человек не так высока, но ничего лучше и надежнее remi лично я не нашел для своих целей. Если вы можете что-то посоветовать на этот счет — комментарии в вашем распоряжении. Буду благодарен за дельный совет.
Подключаем remi репозиторий для centos 7.
# rpm -Uhv http://rpms.remirepo.net/enterprise/remi-release-7.rpm
Я получил ошибку:
Retrieving http://rpms.remirepo.net/enterprise/remi-release-7.rpm warning: /var/tmp/rpm-tmp.nwcDV1: Header V4 DSA/SHA1 Signature, key ID 00f97f56: NOKEY error: Failed dependencies: epel-release = 7 is needed by remi-release-7.3-2.el7.remi.noarch
Тут все понятно, нужен репозиторий epel. Те, кто готовили сервер по моей статье по базовой настройке сервера его уже подключили, а те кто не делали этого, подключают сейчас:
# yum install epel-release
После этого повторяем установку remi, все должно пройти нормально. Проверим список подключенных репозиториев.
# yum repolist
У меня такая картинка получилась.
Активируем репу remi-php71, для этого выполняем команду:
# yum-config-manager --enable remi-php71
Если получаете ошибку:
bash: yum-config-manager: command not found
то установите пакет yum-utils.
# yum install yum-utils
Теперь устанавливаем php7.1.
# yum install php71
Установим php-fpm и наиболее популярные модули, которые могут пригодится в процессе эксплуатации веб сервера.
# yum install php-fpm php-cli php-mysql php-gd php-ldap php-odbc php-pdo php-pecl-memcache php-opcache php-pear php-xml php-xmlrpc php-mbstring php-snmp php-soap php-zip
Запускаем php-fpm и добавляем в автозагрузку.
# systemctl start php-fpm # systemctl enable php-fpm
Проверяем, запустился ли он.
# netstat -tulpn | grep php-fpm tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 9084/php-fpm: maste
Все в порядке, повис на порту 9000. Запустим его через unix сокет. Для этого открываем конфиг /etc/php-fpm.d/www.conf и комментируем строку:
;listen = 127.0.0.1:9000
Вместо нее добавляем несколько других:
listen = /var/run/php-fpm/php-fpm.sock listen.mode = 0660 listen.owner = nginx listen.group = nginx
Заодно измените пользователя, от которого будет работать php-fpm. Вместо apache укажите nginx.
user = nginx group = nginx
Перезапускаем php-fpm.
# systemctl restart php-fpm
Проверяем, стартовал ли указанный сокет.
# ll /var/run/php-fpm/php-fpm.sock srw-rw----. 1 nginx nginx 0 Oct 26 18:08 /var/run/php-fpm/php-fpm.sock
На текущий момент с настройкой php-fpm закончили, двигаемся дальше.
Для того, чтобы проверить работу нашего веб сервера, нужно установить ssl сертификаты. Без них nginx с текущим конфигом не запустится. Исправляем это.
1000 rps
Ссылки с детальным отчетом
- php-fpm https://overload.yandex.net/150841
- php-fpm-80 https://overload.yandex.net/153612
- php-ppm https://overload.yandex.net/150842
- nginx-unit https://overload.yandex.net/150843
- road-runner https://overload.yandex.net/150844
- road-runner-reboot https://overload.yandex.net/152068
- react-php https://overload.yandex.net/150846
- react-php-reboot https://overload.yandex.net/152065
Перцентили времени ответа
95%(ms) | 90%(ms) | 80%(ms) | 50%(ms) | HTTP OK(%) | HTTP OK(count) | |
---|---|---|---|---|---|---|
php-fpm | 11050 | 11050 | 9040 | 195 | 80.67 | 72627 |
php-fpm-80 | 3150 | 1375 | 1165 | 152 | 99.85 | 89895 |
php-ppm | 2785 | 2740 | 2685 | 2545 | 100 | 90030 |
nginx-unit | 98 | 80 | 60 | 21 | 100 | 90030 |
road-runner | 27 | 15 | 7.1 | 3.21 | 100 | 90030 |
road-runner-reboot | 1110 | 1100 | 1085 | 1060 | 100 | 90030 |
react-php | 23 | 13 | 5.6 | 2.86 | 100 | 90030 |
react-php-reboot | 28 | 24 | 19 | 11 | 100 | 90030 |
Мониторинг
cpu median(%) | cpu max(%) | memory median(MB) | memory max(MB) | |
---|---|---|---|---|
php-fpm | 12.66 | 78.25 | 990.16 | 1,006.56 |
php-fpm-80 | 83.78 | 91.28 | 746.01 | 937.24 |
php-ppm | 66.16 | 91.20 | 1,088.74 | 1,102.92 |
nginx-unit | 78.11 | 88.77 | 1,010.15 | 1,062.01 |
road-runner | 42.93 | 54.23 | 1,010.89 | 1,068.48 |
road-runner-reboot | 77.64 | 85.66 | 976.44 | 1,044.05 |
react-php | 36.39 | 46.31 | 1,018.03 | 1,088.23 |
react-php-reboot | 72.11 | 81.81 | 911.28 | 961.62 |
Графики
График 3.1 Среднее время ответа в секунду
График 3.2 Среднее время ответа в секунду (без php-fpm, php-ppm, road-runner-reboot)
График 3.3 Средняя нагрузка процессора в секунду
График 3.4 Среднее потребление памяти в секунду
Пример FastCGI на PHP
PHP можно использовать через различные интерфейсы SAPI.
Чтобы понять все различия, я написал этот скрипт:
- fast.php
-
#!/usr/bin/php <?php if('cli' === php_sapi_name()) { /* Nginx с помощью fcgiwrap запускает скрипт через cli-интерфейс, поэтому отправляем заголовок "вручную", иначе получим "502 Bad Gateway" */ echo "Content-type: text/plain\n\n"; } else { /* В других случаях используем штатный способ, и удаляем "#!/usr/bin/php" (PHP буферизирует вывод, и такая небольшая строка как раз умещается) */ ob_end_clean(); ob_start(); header("Content-type: text/plain"); /* Откроем stdout и stderr (в cli они уже открыты и доступны через константы STDOUT и STDERR) */ define('STDOUT', fopen('php://stdout', 'w')); define('STDERR', fopen('php://stderr', 'w')); } echo "php_sapi_name: " . php_sapi_name() . "\n"; echo "stdout: "; fwrite(STDOUT, "STDOUT"); echo "\n"; /* При SAPI !== 'cli' вызов `ob_end_clean();` очистит предыдущий вывод */ // ob_end_clean(); /* - Если используется веб-сервер, он "отрежет" вывод ошибок, вне зависимости от SAPI - Если веб-сервера нет, и запуск через командную строку, ошибка будет выведена в stderr */ echo "stderr: "; fwrite(STDERR, "STDERR"); echo "\n";
FastCGI, работающий через , который запускает :
php_sapi_name: cli stdout: STDOUT stderr:
php_sapi_name: fpm-fcgi stdout: stderr:
php_sapi_name: cgi-fcgi stdout: stderr:
Content-type: text/plain php_sapi_name: cli stdout: STDOUT stderr: STDERR
Таким образом, запись в с выводом на экран работает только для Cli-SAPI, в остальных случаях — молчание.
Настройка nginx + PHP + MySQL
nginx не имеет встроенной поддержки обработки PHP, поэтому потребуется менеджер процессов fastCGI, который умеет интерпретировать PHP, и внести изменения в конфигурационный файл.
Для этого необходимо выполнить следующее:
Устанавливаем php-fpm и модуль для взаимодействия PHP с MySQL:
$ sudo apt-get install php-fpm php-mysql
Изменяем индексный файл по умолчанию на index.php:
server { ... index index.php
Добавляем location для обработки скриптов php средствами fastCGI:
server { ... location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php7.0-fpm.sock; } ...
Запрещаем доступ к .htaccess, так как nginx не обрабатывает эти файлы:
location ~ /\.ht { deny all; }
Установка и настройка mysql на Freebsd
Устанавливаем mysql:
# cd /usr/ports/databases/mysql55-server # make config-recursive # make install clean
Добавляем Mysql в автозагрузку:
echo 'mysql_enable="YES"' >> /etc/rc.conf
Создаем для него конфигурационный файл:
# touch /etc/my.cnf
Конфигурацию каждый под свои потребности может сделать, описаний настроек в интернете много. Я предлагаю свой универсальный вариант:
port = 3306 socket = /tmp/mysql.sock port = 3306 bind-address = 127.0.0.1 socket = /tmp/mysql.sock skip-external-locking key_buffer_size = 256M max_allowed_packet = 1M table_open_cache = 256 sort_buffer_size = 1M read_buffer_size = 1M read_rnd_buffer_size = 4M myisam_sort_buffer_size = 64M thread_cache_size = 8 query_cache_size= 16M thread_concurrency = 8 log-bin=mysql-bin log=/var/log/mysql.log binlog_format=mixed server-id = 1 quick max_allowed_packet = 16M no-auto-rehash key_buffer_size = 128M sort_buffer_size = 128M read_buffer = 2M write_buffer = 2M interactive-timeout
В моем варианте сервер жестко привязан к локальному интерфейсу и удаленно с ним работать нельзя. Если вам нужны удаленные подключения, то в параметре bind-address добавьте внешний адрес сервера.
Создадим файл логов:
touch /var/log/mysql.log chown mysql:mysql /var/log/mysql.log
Запускаем Mysql:
# /usr/local/etc/rc.d/mysql-server start
Проверяем, все ли в порядке:
# sockstat | grep mysql mysql mysqld 46460 13 tcp4 127.0.0.1:3306 *:* mysql mysqld 46460 15 stream /tmp/mysql.sock
Демон запущен и слушает локальный интерфейс.
Теперь запустим скрипт для настройки безопасности:
# /usr/local/bin/mysql_secure_installation
Задаем пароль для root и далее на все вопросы отвечаем утвердительно:
На этом установка и настройка mysql закончена. Идем дальше.
Послесловие¶
Так выглядит стандартная настройка ПО в GNU/Linux. Возможно, она кажется сложной или громоздкой. На самом деле, ничего сложного здесь нет: весь процесс хорошо документирован. По сравнению с GUI имеем больше возможностей. Если нет желания настраивать вручную, для популярного ПО есть множество скриптов для автоматического развертывания.
Если вы когда нибудь брали дешевые или бесплатные хостинги для сайтов, то у вас может возникнуть вопрос: зачем мучиться с настройкой, если там все проще? Все эти хостинги работают на тех же Apache и Nginx, но не дают возможности хоть сколько-нибудь настроить их. Более разумным решением будет взять VDS или VPS и поднять веб-сервер. Крупные компании для размещения сайтов и приложений пользуются такими решениями, как AWS или MS Azure.
Создание проекта Django
Теперь нужно создать два виртуальных окружения и запустить два проекта.
Создание первого проекта Django
Создайте виртуальное окружение с помощью команд, доступных благодаря инструменту virtualenvwrapper.
Чтобы создать первое виртуальное окружение, введите:
Эта команда создаст виртуальное окружение по имени firstsite, а также установит локальную версию Python и pip, которые можно использовать для создания изолированной среды разработки проекта. Командная строка изменится, указывая, что текущей средой является виртуальная среда Python
В скобках указано имя текущего виртуального окружения. Теперь всё программное обеспечение, загруженное с помощью pip, будет установлено в индивидуальное окружение первого проекта и никак не повлияет на общее состояние системы.
Сначала нужно установить Django:
Теперь создайте первый тестовый проект:
Эта команда создаст в домашнем каталоге каталог firstsite. В нём хранится сценарий для управления новым проектом и ещё один одноимённый каталог, в котором будет находиться код проекта.
Откройте каталог первого уровня:
Для начала нужно переместить БД, чтобы инициализировать базу данных SQLite для проекта.
Примечание: При желании можно создать базу данных для приложения самостоятельно, но это выходит за рамки данного руководства.
Теперь в домашнем каталоге есть файл БД по имени db.sqlite3. Создайте администратора.
Выберите имя пользователя, укажите контактный адрес электронной почты, а затем выберите и подтвердите пароль.
Затем откройте файл настроек проекта:
Теперь нужно создать отдельный каталог для хранения статических файлов сайта. Так Nginx сможет обслуживать их напрямую, а это улучшит производительность. Поместите каталог static в корневом каталоге проекта. Добавьте в конец конфигурационного файла следующую строку:
Сохраните и закройте файл. Соберите статические файлы в этом каталоге:
В каталоге проекта появится новый каталог static.
Теперь протестируйте проект, временно запустив сервер разработки.
Это запустит сервер разработки на порт 8080. В браузере посетите свой домен или IP:
На экране должна появиться такая страница:
Добавьте в ссылку сегмент /admin, чтобы получить доступ к форме аутентификации администратора. Введите учётные данные администратора, и на экране появится панель управления.
После этого можно остановить сервер разработки. Нажмите CTRL-C в терминале. Теперь можно приступать к разработке второго проекта.
Разработка второго проекта
Второй проект создаётся точно так же, как первый.
Вернитесь в домашний каталог и создайте второе виртуальное окружение. Установите Django.
После этого откроется окружение нового проекта.
Создайте второй проект и откройте его каталог:
Инициализируйте базу данных и создайте пользователя с правами администратора:
Откройте файл settings:
Добавьте каталог статических файлов строку:
Сохраните и закройте файл. Соберите статические файлы в этот каталог.
Запустите сервер разработки:
Ссылка на интерфейс администратора:
Чтобы остановить сервер, нажмите CTRL-C.
Отключение виртуального окружения
Теперь нужно отключить виртуальное окружение, поскольку разработка проектов завершена:
Чтобы вернуться в виртуальное окружение любого из проектов, введите:
В дальнейшей работе виртуальное окружение не нужно, потому отключите его:
О данной инструкции¶
Nginx изначально умел очень мало и позиционировался как быстрый http-сервер для отдачи статики. Cейчас он умеет почти все, что и Apache. При этом первый менее ресурсоемкий и гораздо проще в настройке.
Выполнять его установку и настройку будем на дистрибутиве CentOS 7, который часто использутеся в качестве серверной ОС. Для других дистрибутивов процесс практически идентичен. Вам будет необходимо подключиться по () к хосту на порт , где XX — номер вашего компьютера. Заходите под пользователем root с паролем toor. Пароль можно сразу изменить ().
К слову, сайт школы работает именно на такой конфигурации: Nginx и CentOS 7.
Шаг 6 — Установка и настройка Nginx
На этом шаге мы выполним установку Nginx и настроим домены и как виртуальные хосты Nginx. Полное руководство по настройке виртуальных хостов в Nginx можно найти в документе .
Установите Nginx с помощью диспетчера пакетов:
Затем удалите соединение symlink по умолчанию виртуального хоста, поскольку мы больше не будем его использовать:
Позднее мы создадим собственный сайт по умолчанию ().
Теперь мы создадим виртуальные хосты для Nginx, используя ту же процедуру, что использовалась для Apache. Вначале необходимо создать корневые каталоги документов для обоих сайтов:
Мы будем хранить сайты Nginx в каталоге , где Nginx требуется хранить их по умолчанию. Вы можете поместить их в каталог с сайтами Apache, но разделение поможет привязать сайты к Nginx.
Как и в случае с виртуальными хостами Apache, после завершения настройки следует создать файлы и для тестирования:
Теперь создайте файл виртуального хоста для домена :
Nginx вызывает области серверных блоков файла конфигурации Создайте серверный блок для главного виртуального хоста, . Директива делает его виртуальным хостом по умолчанию для обработки запросов HTTP, не соответствующих никакому другому виртуальному хосту.
/etc/nginx/sites-available/example.com
Сохраните и закройте файл. Создайте файл виртуального хоста для второго домена Nginx, :
Добавьте в файл следующее:
/etc/nginx/sites-available/sample.org
Сохраните и закройте файл.
Затем активируйте оба сайта, создав символические ссылки на каталог :
Протестируйте конфигурацию Nginx и убедитесь в отсутствии проблем с конфигурацией:
При обнаружении ошибок перезагрузите Nginx:
Получите доступ к файлу виртуальных хостов Nginx через браузер по адресам http://example.com/info.php и http://sample.org/info.php. Снова изучите разделы PHP Variables.
должен иметь значение , указывая, что файлы обслуживались Nginx напрямую. должен указывать на каталог, ранее созданный на этом шаге для каждого из сайтов Nginx.
К настоящему моменту мы установили Nginx и создали два виртуальных хоста. Далее мы настроим Nginx на запросы прокси-сервера, предназначенные для доменов Apache.