Nginx + php-fpm на centos 7

Шаг #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
2
3
4
5

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:

Мониторинг 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 по нескольким причинам:

  1. Он безопаснее.
  2. Его быстрее настроить.
  3. Не надо отдельно настраивать 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.

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Ваша ОС
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: