Пошаговые руководства, шпаргалки, полезные ссылки...
БлогФорумАвторы
Полезные Online-сервисы
Перечень Бесплатного ПО
Подписка на RSS-канал
В этой части мы рассмотрим пример установки и настройки веб-сервера Nginx, как более производительной и легковесной альтернативы веб-серверу Apache.
Если на вашем сервере ранее уже был развёрнут веб-сервер Apache, то возможно будет полезна короткая заметка о его удалении из системы.
Для установки веб-сервера nginx выполним:
sudo apt-get update sudo apt-get install nginx
Запустим, если требуется, основную службу nginx:
sudo service nginx status 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 /etc/iptables.conf
Проверим доступ к веб-серверу через веб-браузер по адресу http://ip-address/
Должен открыться веб-документ c сайта, который создаётся в nginx при установке /usr/share/nginx/html
Конфигурационные файлы nginx имеют следующую структуру:
Для настройки главного конфигурационного файла nginx.conf нам предварительно потребуется выяснить количество процессоров работающих в нашей системе. Сделать это можно разными способами, например посмотреть значение параметра CPU(s) в выводе команды
lscpu
Или ещё один вариант:
cat /proc/cpuinfo | grep processor | wc -l
Пример заполненного конфигурационного файла nginx.conf со всеми параметрами можно найти по ссылке Full Example Configuration
Откроем главный конфигурационный файл nginx.conf:
sudo nano /etc/nginx/nginx.conf
Далее приведёны некоторые параметры файла, на которые нужно обратить внимание:
# Пользователь от имени которого работает 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 /etc/nginx/conf.d/*.conf; include /etc/nginx/sites-enabled/*;
Остальные параметры nginx.conf в большинстве случаев можно оставить в значениях по умолчанию.
Сохраняем файл и для вступления изменений в силу перезапускаем службу nginx:
sudo service nginx restart
Как уже упоминалось ранее, настройки сайта по умолчанию хранятся в файле /etc/nginx/sites-available/default.
Отключим сайт по умолчанию, удалив символическую ссылку на его конфиг.файл:
sudo rm /etc/nginx/sites-enabled/default
Создадим отдельный конфиг.файл для первого сайта, скопировав его из конфиг.файла default и подключим его, создав соответствующую символическую ссылку. При создании конфиг.файлов под виртуальные хосты для удобства будем присваивать им имена сайтов.
sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/mydomain.ru sudo ln -s /etc/nginx/sites-available/mydomain.ru /etc/nginx/sites-enabled/
Аналогичным образом создадим (и в дальнейшем подключим) конфигурационные файлы виртуальных хостов для каждого сайта. В итоге нашем примере получиться 4 включённых конфиг.файла:
ls -la /etc/nginx/sites-enabled/ total 0 lrwxrwxrwx 1 root root ... mydomain.ru -> /etc/nginx/sites-available/mydomain.ru lrwxrwxrwx 1 root root ... blog.mydomain.ru -> /etc/nginx/sites-available/blog.mydomain.ru lrwxrwxrwx 1 root root ... forum.mydomain.ru -> /etc/nginx/sites-available/forum.mydomain.ru lrwxrwxrwx 1 root root ... wiki.mydomain.ru -> /etc/nginx/sites-available/wiki.mydomain.ru
Создадим под каждый виртуальный хост свои корневые каталоги, в которые в дальнейшем будут скопированы скрипты сайтов:
sudo mkdir -p /var/www/html/root sudo mkdir -p /var/www/html/blog sudo mkdir -p /var/www/html/forum sudo mkdir -p /var/www/html/wiki
Теперь нам предстоит настроить файлы виртуальных хостов. Редактируем настройки первого виртуального хоста (сайт mydomain.ru). В нашем примере он будет содержать миниму настроек, так как будет нацелен на редирект всех запросов на другой виртуальный хост, то есть в нашем примере все клиентские запросы на сайт mydomain.ru должны перенаправлятся на адрес сайта блога blog.mydomain.ru
sudo nano /etc/nginx/sites-available/mydomain.ru
Здесь мы определим основные параметры виртуального хоста:
server { listen 80; root /var/www/html/root; server_name mydomain.ru; access_log /var/log/nginx/access.mydomain.ru.log; error_log /var/log/nginx/error.mydomain.ru.log; location / { return 301 $scheme://blog.mydomain.ru$request_uri; } }
Редактируем настройки второго виртуального хоста (сайт blog.mydomain.ru).
sudo nano /etc/nginx/sites-available/blog.mydomain.ru
Простейший пример конфигурации виртуального хоста:
server { listen 80; root /var/www/html/blog; index index.html index.htm; server_name blog.mydomain.ru; access_log /var/log/nginx/access.blog.mydomain.ru.log; error_log /var/log/nginx/error.blog.mydomain.ru.log; location / { try_files $uri $uri/ =404; } location ~ \.php$ { fastcgi_pass unix:/var/run/php5-fpm-blog.sock; fastcgi_index index.php; include fastcgi_params; } location ~ /\.ht { deny all; } }
В данном примере в одной из секций location (определяющей правила обработки всех *.php файлов) присутсвует параметр fastcgi_pass. В этом параметре мы указываем путь к unix-сокету, который мы создавали ранее.
Напомню, что ранее мы создали отдельные unix-сокеты для каждого пула PHP-FPM. Таким образом, с помощью этих сокетов, здесь мы выполняем связку виртуальных хостов nginx с созданными ранее пулами PHP-FPM.
По аналогии с вышеприведённым примером отредактируем конфигурационные файлы виртуальных хостов nginx для остальных сайтов:
При этом в конфигурации каждого виртуального хоста не забудем указать свой отдельный unix-сокет для совместной работы nginx с PHP-FPM.
После того, как все конфигурационные файлы отредактированы протестируем конфигурацию nginx:
sudo nginx -t
Вывод должен свидетельствовать об отсутвии явных ошибок конфигурации:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
Если всё в порядке, выполняем перезапуск сервера nginx для вступления изменений в силу:
Если при перезапуске службы nginx возникают ошибки, ищем их описание в логах в каталоге /var/log/nginx/
Сайты nginx запущены, и теперь нам нужно протестировать возможность совместной работы nginx и php-fpm.
Для этого создадим в корневой папке каждого сайта php-скрипт, например, с именем testphp.php
sudo nano /var/www/html/blog/testphp.php
Скопируем в файл вызов функции вывода текущей конфигурации php:
<?php phpinfo(); ?>
Проверим возможность открытия скрипта с каждого сайта по ссылке типа http://blog.mydomain.ru/testphp.php
Во избежание открытия излишней информации о конфигурации нашего веб-сервера, после проверок не забываем удалить тестовый php-скрипт из всех корневых папок сайтов:
sudo rm /var/www/html/blog/testphp.php
Автор первичной редакции: Алексей Максимов Время публикации: 28.03.2016 22:03