web-server-nginx:how-to-install-lemp-web-server-on-ubuntu-14-04:setup-nginx-global-params-and-virtual-hosts-for-php-fpm
Различия
Показаны различия между двумя версиями страницы.
| Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия | ||
| web-server-nginx:how-to-install-lemp-web-server-on-ubuntu-14-04:setup-nginx-global-params-and-virtual-hosts-for-php-fpm [05.09.2025 12:05] – удалено - внешнее изменение (Дата неизвестна) 127.0.0.1 | web-server-nginx:how-to-install-lemp-web-server-on-ubuntu-14-04:setup-nginx-global-params-and-virtual-hosts-for-php-fpm [05.09.2025 12:06] (текущий) – ↷ Операцией перемещения обновлены ссылки Алексей Максимов | ||
|---|---|---|---|
| Строка 1: | Строка 1: | ||
| + | ===== Настройка веб-сервера на базе стека LEMP в Ubuntu Server 14.04 LTS. Часть 5. Установка и настройка Nginx для работы в связке в PHP-FPM ===== | ||
| + | В этой части мы рассмотрим пример установки и настройки веб-сервера **Nginx**, как более производительной и легковесной альтернативы веб-серверу **Apache**. | ||
| + | |||
| + | <WRAP center tip> | ||
| + | Если на вашем сервере ранее уже был развёрнут веб-сервер **Apache**, то возможно будет полезна [[: | ||
| + | </ | ||
| + | |||
| + | |||
| + | \\ | ||
| + | ==== Установка и запуск Nginx ==== | ||
| + | |||
| + | Для установки веб-сервера **nginx** выполним: | ||
| + | |||
| + | < | ||
| + | sudo apt-get install nginx</ | ||
| + | |||
| + | Запустим, | ||
| + | |||
| + | < | ||
| + | sudo service nginx start</ | ||
| + | |||
| + | Разрешим в **iptables** подключение на порты веб-сервера TCP 80/443 и сохраним правила: | ||
| + | |||
| + | < | ||
| + | sudo iptables -A INPUT -p tcp -m multiport --dports 80,443 -i eth0 -j ACCEPT \ | ||
| + | -m comment --comment "Allow web-server ports" | ||
| + | sudo iptables-save | sudo tee / | ||
| + | </ | ||
| + | |||
| + | Проверим доступ к веб-серверу через веб-браузер по адресу **http:// | ||
| + | |||
| + | Должен открыться веб-документ c сайта, который создаётся в nginx при установке **/ | ||
| + | |||
| + | {{ : | ||
| + | |||
| + | |||
| + | \\ | ||
| + | ==== Настройка службы Nginx ==== | ||
| + | |||
| + | Конфигурационные файлы nginx имеют следующую структуру: | ||
| + | |||
| + | * Главный конфигурационный файл веб-сервера nginx: **/ | ||
| + | * Конфигурационные файлы виртуальных хостов разделены на два каталога.\\ Каталог **/ | ||
| + | * Вспомогательные файлы конфигурации из каталога **/ | ||
| + | |||
| + | Для настройки главного конфигурационного файла **nginx.conf** нам предварительно потребуется выяснить количество процессоров работающих в нашей системе. | ||
| + | Сделать это можно разными способами, | ||
| + | |||
| + | < | ||
| + | |||
| + | Или ещё один вариант: | ||
| + | |||
| + | < | ||
| + | |||
| + | {{ : | ||
| + | |||
| + | <WRAP center tip> | ||
| + | Пример заполненного конфигурационного файла **nginx.conf** со всеми параметрами можно найти по ссылке | ||
| + | </ | ||
| + | |||
| + | |||
| + | Откроем главный конфигурационный файл **nginx.conf**: | ||
| + | |||
| + | < | ||
| + | |||
| + | Далее приведёны некоторые параметры файла, на которые нужно обратить внимание: | ||
| + | |||
| + | |||
| + | <file c / | ||
| + | |||
| + | # Пользователь от имени которого работает nginx. | ||
| + | # Нужно убедиться в том, что основная группа этого пользователя и группа, | ||
| + | # указаная в конфигурационных файлах пулов php-fpm в параметре listen.group совпадают. | ||
| + | # В противном случае nginx может получить проблемы с доступом | ||
| + | # на изменение файлов сокетов пулов php-fpm. | ||
| + | # | ||
| + | user www-data; | ||
| + | |||
| + | # Количество рабочих процессов. | ||
| + | # Выставляем равным количеству CPU (его мы определили ранее) | ||
| + | # | ||
| + | worker_processes 4; | ||
| + | |||
| + | |||
| + | # Число соединений на один рабочий процесс | ||
| + | # max_clients = worker_processes * worker_connections | ||
| + | # | ||
| + | worker_connections 1024; | ||
| + | |||
| + | # Cкрыть токены и номер версии nginx | ||
| + | # Раскомментировать этот параметр в секции http | ||
| + | # | ||
| + | server_tokens off; | ||
| + | |||
| + | |||
| + | # Проверьте наличие строк присоединения файлов конфигураций включенных виртулаьных хостов: | ||
| + | # | ||
| + | include / | ||
| + | include / | ||
| + | </ | ||
| + | |||
| + | Остальные параметры **nginx.conf** в большинстве случаев можно оставить в значениях по умолчанию. | ||
| + | |||
| + | Сохраняем файл и для вступления изменений в силу перезапускаем службу **nginx**: | ||
| + | |||
| + | < | ||
| + | |||
| + | |||
| + | \\ | ||
| + | ==== Создание виртуальных хостов Nginx ==== | ||
| + | |||
| + | Как уже упоминалось ранее, настройки сайта по умолчанию хранятся в файле **/ | ||
| + | |||
| + | Отключим сайт по умолчанию, | ||
| + | |||
| + | < | ||
| + | |||
| + | Создадим отдельный конфиг.файл для первого сайта, скопировав его из конфиг.файла **default** и подключим его, создав соответствующую символическую ссылку. | ||
| + | При создании конфиг.файлов под виртуальные хосты для удобства будем присваивать им имена сайтов. | ||
| + | |||
| + | < | ||
| + | sudo cp / | ||
| + | sudo ln -s / | ||
| + | </ | ||
| + | |||
| + | Аналогичным образом создадим (и в дальнейшем подключим) конфигурационные файлы виртуальных хостов для каждого сайта. | ||
| + | В итоге нашем примере получиться 4 включённых конфиг.файла: | ||
| + | |||
| + | < | ||
| + | ls -la / | ||
| + | |||
| + | total 0 | ||
| + | lrwxrwxrwx 1 root root ... mydomain.ru -> / | ||
| + | lrwxrwxrwx 1 root root ... blog.mydomain.ru -> / | ||
| + | lrwxrwxrwx 1 root root ... forum.mydomain.ru -> / | ||
| + | lrwxrwxrwx 1 root root ... wiki.mydomain.ru -> / | ||
| + | </ | ||
| + | |||
| + | |||
| + | Создадим под каждый виртуальный хост свои корневые каталоги, | ||
| + | |||
| + | < | ||
| + | sudo mkdir -p / | ||
| + | sudo mkdir -p / | ||
| + | sudo mkdir -p / | ||
| + | sudo mkdir -p / | ||
| + | </ | ||
| + | |||
| + | |||
| + | \\ | ||
| + | ==== Настройка виртуальных хостов Nginx ==== | ||
| + | |||
| + | Теперь нам предстоит настроить файлы виртуальных хостов. | ||
| + | Редактируем настройки первого виртуального хоста (сайт **mydomain.ru**). | ||
| + | В нашем примере он будет содержать миниму настроек, | ||
| + | все клиентские запросы на сайт **mydomain.ru** должны перенаправлятся на адрес сайта блога **blog.mydomain.ru** | ||
| + | |||
| + | < | ||
| + | |||
| + | Здесь мы определим основные параметры виртуального хоста: | ||
| + | * **listen** - номер порта, на котором доступен сайт mydomain.ru; | ||
| + | * **root** - корневой каталог файлов веб-сайта (был создан нами ранее); | ||
| + | * **server_name** - доменное имя, которое бует приниматься веб-сервером для этого сайта; | ||
| + | * **access_log** и **error_log** - расположение файлов логов веб-сайта.\\ Для удобства для каждого сайта лучше сделать отдельные логи. | ||
| + | * **location** - определение правил обработки того или иного url веб-сайта.\\ В данном примере все запросы перенаправляются на другой сайт.\\ При необходимости, | ||
| + | |||
| + | <file php / | ||
| + | server { | ||
| + | listen 80; | ||
| + | root / | ||
| + | server_name mydomain.ru; | ||
| + | access_log / | ||
| + | error_log / | ||
| + | location / { | ||
| + | return 301 $scheme:// | ||
| + | } | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | |||
| + | Редактируем настройки второго виртуального хоста (сайт **blog.mydomain.ru**). | ||
| + | |||
| + | < | ||
| + | |||
| + | Простейший пример конфигурации виртуального хоста: | ||
| + | |||
| + | <file php / | ||
| + | server { | ||
| + | listen 80; | ||
| + | root / | ||
| + | index index.html index.htm; | ||
| + | server_name blog.mydomain.ru; | ||
| + | access_log / | ||
| + | error_log / | ||
| + | location / { | ||
| + | try_files $uri $uri/ =404; | ||
| + | } | ||
| + | location ~ \.php$ { | ||
| + | fastcgi_pass unix:/ | ||
| + | fastcgi_index index.php; | ||
| + | include fastcgi_params; | ||
| + | } | ||
| + | location ~ /\.ht { | ||
| + | deny all; | ||
| + | } | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | В данном примере в одной из секций **location** (определяющей правила обработки всех *.php файлов) присутсвует параметр **fastcgi_pass**. В этом параметре мы указываем путь к **unix-сокету**, | ||
| + | |||
| + | Напомню, | ||
| + | Таким образом, | ||
| + | |||
| + | По аналогии с вышеприведённым примером отредактируем конфигурационные файлы виртуальных хостов **nginx** для остальных сайтов: | ||
| + | * **/ | ||
| + | * **/ | ||
| + | |||
| + | При этом в конфигурации каждого виртуального хоста не забудем указать свой отдельный unix-сокет для совместной работы **nginx** с **PHP-FPM**. | ||
| + | |||
| + | После того, как все конфигурационные файлы отредактированы протестируем конфигурацию nginx: | ||
| + | |||
| + | < | ||
| + | |||
| + | Вывод должен свидетельствовать об отсутвии явных ошибок конфигурации: | ||
| + | |||
| + | < | ||
| + | nginx: configuration file / | ||
| + | |||
| + | Если всё в порядке, | ||
| + | |||
| + | < | ||
| + | |||
| + | Если при перезапуске службы nginx возникают ошибки, | ||
| + | |||
| + | \\ | ||
| + | ==== Тестирование PHP ==== | ||
| + | |||
| + | Сайты **nginx** запущены, | ||
| + | |||
| + | Для этого создадим в корневой папке каждого сайта php-скрипт, | ||
| + | |||
| + | < | ||
| + | |||
| + | Скопируем в файл вызов функции вывода текущей конфигурации php: | ||
| + | |||
| + | <file php testphp.php> | ||
| + | <?php | ||
| + | phpinfo(); | ||
| + | ?> | ||
| + | </ | ||
| + | |||
| + | Проверим возможность открытия скрипта с каждого сайта по ссылке типа http:// | ||
| + | |||
| + | {{ : | ||
| + | |||
| + | <WRAP center important> | ||
| + | Во избежание открытия излишней информации о конфигурации нашего веб-сервера, | ||
| + | |||
| + | < | ||
| + | </ | ||
| + | |||
| + | |||
| + | \\ | ||
| + | ==== Дополнительные источники информации ==== | ||
| + | |||
| + | * [[http:// | ||
| + | * [[http:// | ||
| + | * [[https:// | ||
| + | |||
| + | ---- | ||
| + | |||
| + | {{: | ||
| + | |||
| + | {{tag> | ||
| + | |||
| + | ~~DISCUSSION~~ | ||