Установка php-fpm на CentOS 7
Устанавливаем php-fpm и некоторые модули, которые скорее всего пригодятся в дальнейшей работе:
# yum install -y php-fpm php-cli php-mysql php-gd php-ldap php-odbc php-pdo php-pecl-memcache php-pear php-xml php-xmlrpc php-mbstring php-snmp php-soap
Так же я предлагаю установить APC — бесплатный и открытый кэшер кода PHP, который кэширует и оптимизирует промежуточный код PHP, ускоряя его исполнение. Установим APC из хранилища PHPpecl. Для того, чтобы скомпилировать пакет APC нужно установить Centos Development tools.
# yum install -y php-devel # yum groupinstall 'Development Tools'
Компилируем APC:
# pecl install apc
На все вопросы просто жмем enter, выбирая параметры по-умолчанию.
Теперь отредактируем /etc/php.ini как нам рекомендует инсталлятор:
# mcedit /etc/php.ini
Задаем параметр cgi.fix_pathinfo=0 и добавляем в конце строку extension=apc.so
Заодно установим сразу же часовой пояс: date.timezone = «Europe/Moscow»
Создадим файл настроек APC:
# mcedit /etc/php.d/apc.ini extension = apc.so apc.enabled = 1 apc.cache_by_default = 1 apc.ttl = 7200 apc.shm_size = 64M apc.max_file_size = 4M apc.stat = 1
Добавляем php-fpm в автозагрузку:
# systemctl enable php-fpm.service ln -s '/usr/lib/systemd/system/php-fpm.service' '/etc/systemd/system/multi-user.target.wants/php-fpm.service'
И запускаем:
# systemctl start php-fpm.service
Проверяем:
# netstat -tulpn | grep php-fpm tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 2907/php-fpm: maste
Подключение Nginx к PHP-FPM
Чтобы принимать запросы FastCGI от Nginx, PHP-FPM может прослушивать сокет TCP/IP или UNIX сокет. Сокеты UNIX являются средством межпроцессного взаимодействия, которое обеспечивает эффективный обмен данными между процессами, работающими в одной и той же операционной системе, в то время как сокеты TCP/IP позволяют процессам обмениваться данными по сети.
В отличие от сокета TCP/IP, который идентифицирует сервер по IP-адресу и порту (например, 127.0.0.1:9000), вы можете привязать сервер к сокету UNIX, используя путь к файлу (например, /run/php-fpm/www.sock), который виден в файловой системе.
Сокет UNIX — это особый тип файла — к нему применяются разрешения на доступ к файлам и каталогам (как в случае с любым другим типом файла UNIX), и его можно использовать для ограничения того, какие процессы на хосте могут читать и записывать в файл, (и, таким образом, общаться с внутренним сервером).
Таким образом, сокет UNIX является безопасным, поскольку его могут использовать только процессы на локальном хосте. Сокет TCP/IP может быть доступен из Интернета, и это может представлять угрозу безопасности, если не будут приняты дополнительные меры безопасности, такие как настройка брандмауэра.
Настройка PHP-FPM для прослушивания на сокете UNIX
Чтобы настроить PHP-FPM на прослушивание сокета UNIX, откройте файл конфигурации пула PHP-FPM по умолчанию, используя свой любимый текстовый редактор при помощи команды:
Затем найдите директиву listen и задайте для нее путь к файлу сокета UNIX следующим образом — listen = /run/php/php7.4-fpm.sock
Если вы используете сокет UNIX, вам также необходимо установить соответствующие разрешения на чтение/запись для файла, чтобы разрешить подключения с веб-сервера NGINX. По умолчанию Nginx работает как пользователь www-data в Ubuntu.
Найдите параметры listen.owner и listen.group и задайте им значение www-data. Также установите режим на 0660, для параметра listen.mode.
Настройка PHP-FPM для прослушивания через сокет TCP/IP
Хотя сокет UNIX быстрее сокета TCP/IP, он менее масштабируем, поскольку он может поддерживать межпроцессное взаимодействие только в одной и той же ОС. Если Nginx и внутренний сервер приложений (PHP-FPM) работают в разных системах, вам придется настроить php-fpm для прослушивания сокетов TCP/IP для удаленного подключения.
В файле конфигурации пула php-fpm установите адрес прослушивания, например: 127.0.0.1:9000. Убедитесь, что выбранный вами порт не используется другим процессом или службой в той же системе.
Найдите параметр listen и пропишите адрес — 127.0.0.1:9000:
Сохраните изменения и закройте файл. Установка Nginx php fpm практически завершена.
Настройка Nginx для работы php-fpm
После того, как вы настроили адрес, который прослушивает PHP-FPM, вам нужно настроить Nginx для запроса прокси к нему через этот адрес, используя параметр конфигурации fastcgi_pass, который располагается в файле конфигурации блока виртуального хоста.
Для примера, возьмем файл конфигурации стандартной странички сайта nginx которая открывается при первом запуске nginx, расположенный по следующему пути — /etc/nginx/conf.d/default.conf, откроем его для редактирования:
Если вы настроили PHP-FPM для прослушивания на сокете UNIX, найдите блок местоположения для обработки файлов .php и установите следующие параметры для fastcgi:
Если используется TCP/IP сокет, замените значение в параметре fastcgi_pass на IP-адрес и порт сервера, на котором работает PHP-FPM FastCGI:
После внесения изменений в конфигурации Nginx проверьте правильность синтаксиса при помощи команды:
Далее вам необходимо перезапустить службы, чтобы применить изменения, используя для этого команды:
После перезапуска служб, подключение считается выполненным успешно. Можно создать файл index.php со следующим содержимым:
Затем можно попытаться открыть эту страницу в браузере. Для этого в адресную строку надо ввести http://localhost/index.php. Если всё было настроено верно, перед вами откроется такая страница:
Для дальнейшей настройки PHP-FPM воспользуйтесь статьей по настройке PHP-FPM на Ubuntu 20.04 – Настройка PHP-FPM
Работа с сайтами разных пользователей на одном веб сервере
Самый простой способ решить проблему с правами доступа, это сделать владельцем папки с сайтом пользователя, который подключается по sftp. Тогда он сможет нормально работать с файлами, загружать и удалять их. Если доступ в качестве группы установить для nginx, то в целом все будет работать. Для каких-то сайтов такой вариант может оказаться подходящим. То есть сделать надо вот так:
# chown -R hl.zeroxzed.ru:nginx /web/sites/hl.zeroxzed.ru/ # chmod -R 0775 /web/sites/hl.zeroxzed.ru/
Но при такой схеме будут проблемы с движками сайтов, которые автоматом что-то к себе загружают. Какие-то галереи не будут работать. К примеру, wordpress не сможет автоматически загружать плагины, будет просить доступ к ftp. В общем, могут возникнуть некоторые неудобства. Сейчас мы их исправим.
Еще обращаю внимание на один нюанс. Chroot доступ для sftp не будет работать, если владельцем директории, куда чрутимся, будет не root
Только что мы сделали владельцем каталога с сайтом и всего, что внутри него пользователя hl.zeroxzed.ru. Теперь надо вернуть обратно владельцем исходного каталога рута, а все, что внутри него остается как мы и хотим — будет принадлежать hl.zeroxzed.ru.
# chown root:root /web/sites/hl.zeroxzed.ru/ # chmod 0755 /web/sites/hl.zeroxzed.ru/
# chown -R hl.zeroxzed.ru:hl.zeroxzed.ru /web/sites/hl.zeroxzed.ru/
Возвращаем обратно рута владельцем корня chroot.
# chown root:root /web/sites/hl.zeroxzed.ru/ # chmod 0755 /web/sites/hl.zeroxzed.ru/
Обращаю внимание, что сначала мы рекурсивно назначаем права на все содержимое директорий, а потом возвращаем владельца root только на корень. Добавляем пользователя nginx в группу hl.zeroxzed.ru
Добавляем пользователя nginx в группу hl.zeroxzed.ru.
# usermod -aG hl.zeroxzed.ru nginx
Создаем отдельный pool для php-fpm, который будет обслуживать сайт hl.zeroxzed.ru и будет запускаться от этого пользователя. Для этого копируем существующий конфиг /etc/php-fpm.d/www.conf и изменяем в нем несколько строк.
# cd /etc/php-fpm.d && cp www.conf hl.zeroxzed.ru.conf
user = hl.zeroxzed.ru group = hl.zeroxzed.ru listen = /var/run/php-fpm/hl.zeroxzed.ru.sock listen.owner = hl.zeroxzed.ru listen.group = hl.zeroxzed.ru
Мы поменяли название пула, запустили его от отдельного пользователя и назначили ему отдельный сокет. Теперь идем в настройки этого виртуального хоста в nginx — /etc/nginx/conf.d/hl.zeroxzed.ru.conf и везде меняем старое значение сокета
fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
на новое
fastcgi_pass unix:/var/run/php-fpm/hl.zeroxzed.ru.sock;
Перезапускаем nginx и php-fpm и проверяем работу сайта от отдельного пользователя.
# systemctl restart nginx # systemctl restart php-fpm
Я рекомендую подключиться по sftp, закинуть исходники wordpress, установить его и добавить новую тему, чтобы проверить, что все корректно работает. По аналогии проделанные выше действия повторяются для всех остальных сайтов.
Установка PHP и PHP-FPM
Устанавливаем PHP и php-fpm следующей командой:
yum install php php-fpm
* В CentOS 7 будет установлена php версии 5.4. Если необходимо установить PHP 7, читайте статью Как установить PHP 7 на CentOS 7.
Запускаем php-fpm и разрешаем его автозапуск:
systemctl enable php-fpm —now
Настройка связки NGINX + PHP
Открываем файл для настройки виртуального домена по умолчанию. В зависимости от версии CentOS 7 пути могут различаться:
а) вариант 1:
vi /etc/nginx/conf.d/default.conf
б) вариант 2:
vi /etc/nginx/nginx.conf
в) вариант 3:
vi /etc/nginx/nginx.conf.default
В секции location редактируем параметр index на следующее значение:
location / {
index index.php index.html index.htm;
}
* добавляем index.php в начало списка. Если параметра index нет, создаем его.
А внутри секции server добавим следующее:
location ~ \.php$ {
set $root_path /usr/share/nginx/html;
fastcgi_pass unix:/run/php-fpm/www.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $root_path$fastcgi_script_name;
include fastcgi_params;
fastcgi_param DOCUMENT_ROOT $root_path;
}
* где /usr/share/nginx/html — корневой путь хранения скриптов; unix:/run/php-fpm/www.sock — файл для взаимодействия с php-fpm.
Открываем настройки php-fpm:
vi /etc/php-fpm.d/www.conf
Проверяем, настройки параметров:
listen = /run/php-fpm/www.sock
…
listen.group = nginx
* listen должен иметь значение /run/php-fpm/www.sock (путь до сокетного файла, который мы указали в конфигурационном файле nginx); listen.group указывает, какую группу назначить сокетному файлу.
… иначе, меняем значение. После перезагружаем php-fpm:
systemctl restart php-fpm
* в данном примере мы указываем, что php-fpm будет использовать сокетный файл /run/php-fpm/www.sock для взаимодействия. Этот файл мы указали выше в настройке NGINX.
Проверяем правильность настроек nginx:
nginx -t
И перезагружаем его:
systemctl restart nginx
Создаем index.php в каталоге сайта по умолчанию со следующим содержимым:
vi /usr/share/nginx/html/index.php
<?php phpinfo(); ?>
Открываем в браузере IP-адрес нашего сервера. Теперь мы должны увидеть сводную информацию по PHP и его настройкам, например:
Управление процессом Nginx
Теперь, когда у вас есть работающий и запущенный веб-сервер, мы рассмотрим процесс управления службой Nginx с помощью
Если вам потребуется остановить работу веб-сервера, вы можете использовать следующую команду:
# sudo systemctl stop nginx
1 | # sudo systemctl stop nginx |
Чтобы запустить остановленный веб-сервер, введите:
# sudo systemctl start nginx
1 | # sudo systemctl start nginx |
Чтобы остановить и перезапустить службу еще раз, вы можете использовать следующую команду:
# sudo systemctl restart nginx
1 | # sudo systemctl restart nginx |
Nginx также может перегрузить изменения конфигурации без отключения подключений. Для этого введите:
# sudo systemctl reload nginx
1 | # sudo systemctl reload nginx |
По умолчанию Nginx настроен на автоматический запуск при загрузке сервера. Если вам это не нужно, вы можете отключить такое поведение с помощью следующей команды:
# sudo systemctl disable nginx
1 | # sudo systemctl disable nginx |
Чтобы снова активировать эту службу и активировать запуск Nginx во время загрузки, воспользуйтесь следующей командой:
# sudo systemctl enable nginx
1 | # sudo systemctl enable nginx |
Установка Apache2
Веб-серер энжинкс уже установлен и настроен, сейчас установим и настроим apache2 который в списке пакетов имеет имя httpd и для его установки нужно выполнить:
# yum install httpd
Конфигурация Apache
Нужно немного подредактировать конфигурационный файл в apache и привести к такому виду:
# vim /etc/httpd/conf/httpd.conf
Listen 127.0.0.1:8080 NameVirtualHost 127.0.0.1:8080 <VirtualHost 127.0.0.1:8080> ServerAdmin [email protected] DocumentRoot /var/www/212.66.44.35/ ServerName 212.66.44.35 ErrorLog logs/212.66.44.35-error_log CustomLog logs/212.66.44.35-access_log common </VirtualHost>
Мой рабочий конфиг Вы можете посмотреть тут, можно так же и скачать (но не забудьте переименовать его):
# cd /etc/httpd/conf/ # wget http://linux-notes.org/wp-content/uploads/files/apache_nginx/httpd_for_conjunction_nginx_CenOS.conf
Установка модуля RPAF
Сейчас все запросы к апачу поступают не от удаленных посетителей, а уже от nginx, то в итоге IP-адрес посетителя apache будет оприделятся как локальный (127.0.0.1). Собственно, чтобы решить эту проблему нужно установить и настроить модуль RPAF. Расскажу как работает данный модуль:
Собственно, нечего непонятного тут нет, RPAF берет тело заголовка X-Forwarded-For, который прислал наш фронтенд (веб-сервер nginx) и делает замену в заголовке REMOTE_ADDR на бекенде (веб-серера apache).
Выполним установку:
# yum install mod_rpaf
У меня этот метод установки почему то не работал, по этому я решил свою проблему немного по другому.
Сначала я поставил пакеты нужных для работы утилит (http-devel и gcc -это компилятор):
# yum -y install httpd-devel gcc
После чего я перейду в папку src:
# cd /usr/local/src
После этого я скачаю архив с исходным кодом mod_rpaf:
# wget http://drupion.com/sites/default/files/mod_rpaf-0.6.tar_.gz
Распакую данный, скачанный архив следующей командой и перейду в нужную папку для дальнейшей работы:
# tar zxvf mod_rpaf-0.6.tar_.gz && cd mod_rpaf-0.6
После чего, выполняем команду и устанавливаем данный модуль в апач:
# apxs -i -c -n mod_rpaf-2.0.so mod_rpaf-2.0.c
Настройка модуля RPAF
Следующим шагом будет настройка модуля, для этого откроем нужный файл и впишем в него некоторые изменения:
# vim /etc/httpd/conf.d/rpaf.conf
LoadModule rpaf_module modules/mod_rpaf-2.0.so RPAFenable On RPAFsethostname Off RPAFproxy_ips 127.0.0.1 RPAFheader X-Real-IP
Все, установка и настройка nginx и apache в связи в CentOS, но остались последние штрихи — нужно перегрузить все сервисы:
# /etc/init.d/httpd restart # /etc/init.d/nginx restart
На этом, тема «Установка Nginx и Apache в связи в CentOS» завершена, спасибо что читаете мой блог http://linux-notes.org
Не забываем поставить еще PHP5, базы данных (Mysql, MariaDB, MongoBD, oracle или любую другую), на сайте можно найти многое по различным темам.
Installing Nagios plugins on Fedora 29/CentOS 7
There exist over 50 Nagios plugins that enables you to monitor just about anything and everything with Nagios. Talk about databases, operating systems, applications, network equipment, protocols etc. To list available Nagios plugins, run the command below;
yum list nagios-plugins*
On CentOS 7/RHEL 7;
Installed Packages nagios-plugins.x86_64 2.2.1-9git5c7eb5b9.el7 @epel Available Packages nagios-plugins-all.x86_64 2.2.1-9git5c7eb5b9.el7 epel nagios-plugins-apt.x86_64 2.2.1-9git5c7eb5b9.el7 epel nagios-plugins-bacula.x86_64 5.2.13-23.1.el7 base nagios-plugins-bonding.x86_64 1.4-3.el7 epel nagios-plugins-breeze.x86_64 2.2.1-9git5c7eb5b9.el7 epel nagios-plugins-by_ssh.x86_64 2.2.1-9git5c7eb5b9.el7 epel nagios-plugins-check-updates.x86_64 1.6.18-2.el7 epel nagios-plugins-cluster.x86_64 2.2.1-9git5c7eb5b9.el7 epel nagios-plugins-dbi.x86_64 2.2.1-9git5c7eb5b9.el7 epel nagios-plugins-dhcp.x86_64 2.2.1-9git5c7eb5b9.el7 epel nagios-plugins-dig.x86_64 2.2.1-9git5c7eb5b9.el7 epel nagios-plugins-disk.x86_64 2.2.1-9git5c7eb5b9.el7 epel nagios-plugins-disk_smb.x86_64 2.2.1-9git5c7eb5b9.el7 epel ...
On Fedora 29
Installed Packages nagios-plugins.x86_64 2.2.1-14.20180725git3429dad.fc29 @fedora Available Packages nagios-plugins-all.x86_64 2.2.1-14.20180725git3429dad.fc29 fedora nagios-plugins-apt.x86_64 2.2.1-14.20180725git3429dad.fc29 fedora nagios-plugins-bacula.x86_64 9.2.1-1.fc29 fedora nagios-plugins-bdii.x86_64 1.0.15-11.fc29 fedora nagios-plugins-bonding.x86_64 1.4-11.fc29 fedora nagios-plugins-breeze.x86_64 2.2.1-14.20180725git3429dad.fc29 fedora nagios-plugins-by_ssh.x86_64 2.2.1-14.20180725git3429dad.fc29 fedora nagios-plugins-check-updates.x86_64 1.6.23-1.fc29 fedora nagios-plugins-cluster.x86_64 2.2.1-14.20180725git3429dad.fc29 fedora nagios-plugins-dbi.x86_64 2.2.1-14.20180725git3429dad.fc29 fedora nagios-plugins-dhcp.x86_64 2.2.1-14.20180725git3429dad.fc29 fedora nagios-plugins-dig.x86_64 2.2.1-14.20180725git3429dad.fc29 fedora
To install specific Nagios plugins for example to check the load, http, users, processes, disk space, swap space, uptime, run the command below;
yum install nagios-plugins-{load,http,users,procs,disk,swap,nrpe,uptime} -y
Once the installation is done, tou can check your plugins under
ls /usr/lib64/nagios/plugins/ check_disk check_load check_procs check_uptime eventhandlers urlize check_http check_nrpe check_swap check_users negate utils.sh
If you also need to monitor physical system memory, download the check_mem Nagios plugin following plugin to the plugins directory. Once you have downloaded, make it executable;
chmod +x /usr/lib64/nagios/plugins/check_mem
Проверка веб-сервера
Теперь вы можете проверить, работает ли ваш веб-сервер, выполнив попытку перехода на публичный IP-адрес вашего сервера или его доменное имя с помощью вашего веб-браузера.
Если у вас нет доменного имени, указывающего на ваш сервер, и вы не знаете публичный IP-адрес вашего сервера, вы можете найти его, введя следующую команду:
ip addr show eth0 | grep inet | awk ‘{ print $2; }’ | sed ‘s/\/.*$//’
1 | ip addr show eth0|grep inet|awk'{ print $2; }’|sed’s/\/.*$//’ |
Команда выведет несколько IP-адресов. Вы можете попробовать каждый из них в своем браузере.
Также вы можете проверить доступность IP-адреса из других мест в интернете:
curl -4 https://darksf.ru
1 | curl-4https//darksf.ru |
Введите полученный адрес в браузере, после чего вы попадете на страницу Nginx по умолчанию:
Welcome to nginx!
If you see this page, the nginx web server is successfully installed and working. Further configuration is required.
For online documentation and support please refer to nginx.org.
Commercial support is available at nginx.com.
Thank you for using nginx.
1 |
Welcome tonginx! Ifyou see thispage,the nginx web server issuccessfully installed andworking.Further configuration isrequired. Foronline documentation andsupport please refer tonginx.org. Commercial support isavailable at nginx.com. Thank you forusing nginx. |
Если вы увидите эту страницу, это значит, что ваш веб-сервер установлен корректно.
Создание проекта 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 и рекомендации
- Все файлы конфигурации Nginx находятся в каталоге .
- Главный файл конфигурации Nginx — это .
- Чтобы упростить поддержку конфигурации Nginx, рекомендуется создать отдельный файл конфигурации для каждого домена.
- Новые файлы блоков сервера Nginx должны оканчиваться на и храниться в . Вы можете иметь столько серверных блоков, сколько вам нужно.
- Рекомендуется следовать стандартному соглашению об именах, например, если ваше доменное имя — тогда ваш файл конфигурации должен называться
- Если вы используете повторяющиеся сегменты конфигурации в серверных блоках своих доменов, рекомендуется создать каталог с именем преобразовав эти сегменты в фрагменты и включив файл фрагмента в блоки сервера.
- Файлы журнала Nginx ( и ) находятся в каталоге . Рекомендуется иметь разные файлы и журналов для каждого блока сервера.
- Вы можете установить корневой каталог документов домена в любое место. Наиболее распространенные места для webroot:
Установка Nginx и Apache в связи в CentOS
Данная связка распараллеливает ресурсы между двумя серверами, один работает в качестве фронтенда за это отвечает Nginx, а второй выполняет функцию бэкенда за это отвечает apache2 и сделано это все для снижения общей нагрузки на сервер. Выполняется все это за счет того, что более легкий и не обремененный дополнительным функционалом nginx который обрабатывает все запросы от пользователей. Он сам отдает по запросам весь статический контент, такой как — изображения, html, javascript (его скрипты) и все остальное и не нагружая этим apache, который занимается свою очередь, обрабаткой динамического контента. Собственно, apache не работает с клиентами напрямую, все ихние запросы проксируются на nginx и ему только возвращаются ответы на те запросы. Так соблюдается разделение труда: nginx делает свободным apache от необходимости “обращаться” с большим количеством юзеров и выполнять запросы по статике- это очень большая его часть исходящего трафика. Сам apache не создает никаких дочерних процессов, потребляющие RAM (оперативную память).
Данная связка очень часто используется для обеспечения работы больших ресурсов с очень большей посещаемостью на сайте, но если ресурс с маленькой посещаемостью, то данная связка не даст нормального роста производительности и в своей теме «Установка Nginx и Apache в связи в CentOS» я расскажу и покажу как можно это сделать.
Знакомство с важными файлами и директориями Nginx
Теперь, когда вы научились управлять службой Nginx, настало время познакомиться с несколькими важными директориями и файлами.
Контент
/usr/share/nginx/html: реальный веб-контент, в состав которого по умолчанию входит только показанная ранее страница Nginx по умолчанию, выводится из директории /usr/share/nginx/html . Это можно изменить путем изменения файлов конфигурации Nginx.
Конфигурация сервера
/etc/nginx директория конфигурации Nginx. Здесь хранятся все файлы конфигурации Nginx.
/etc/nginx/nginx.conf основной файл конфигурации Nginx. Его можно изменить для внесения изменений в глобальную конфигурацию Nginx
/etc/nginx/conf.d/ эта директория содержит файлы конфигурации для блока сервера, где вы можете определить веб-сайты, которые размещены в Nginx.
Типичный подход — размещение каждого сайта в отдельном файле, название которого совпадает с доменным именем сайта, например, your_domain.conf
Журналы сервера
/var/log/nginx/access.log : каждый запрос к вашему веб-серверу регистрируется в этом файле журнала, если Nginx не настроен иначе.
/var/log/nginx/error.log : любые ошибки Nginx будут регистрироваться в этом журнале.
Шаг #4: Создание и настройка сервер-блоков Nginx
Для создания возможности обработки нескольких доменов на одном ip-адресе, веб-сервер Apache использует виртуальные хосты — это специальные файлы конфигурации веб-сервера, которые настраиваются отдельно для каждого домена. В веб-сервере Nginx также присутствует такая возможность, однако в терминологии Nginx виртуальные хосты называются сервер-блоками.
Создание директорий для сайта
По умолчанию, Nginx создает один сервер-блок настроенный для обработки файлов из директории , однако для создания самостоятельных сервер-блоков для каждого отдельного домена рекомендуется использовать директорию . Внутри каталога создадим новый каталог с именем вашего домена, внутри которого также добавим нужные подкаталоги — , где будут хранится файлы сайта и , где будут хранится логи работы веб-сервера.
Созданным директориям нужно присвоить владельца. Владельцем чаще всего назначается сам веб-сервер т.к. именно он проводит большинство операций с файлами.
Установка веб-сервера в качестве владельца особенно важна при установки каких-либо CMS-систем, например WordPress.
Так как нашим веб сервером будет Nginx, то и установим его в качестве владельца и группы. При необходимости группу можно будет заменить на любую удобную вам.
Также настроим права доступа для
Создание тестовой страницы.
Для проверки работоспособности будущего сервер-блока создадим главную страницу сайта — . При желании, вы можете создать полноценную html-разметку, однако я ограничусь простым текстом, которым заполню файл с помощью команды — echo.
Создание сервер-блока
Изначально Nginx содержит только один сервер-блок с именем — , его мы будет использовать в качестве шаблона для наших собственных сервер-блоков.
Создадим необходимые для работы каталоги и файл для настроек сервер-блока:
Файл может содержать следующие настройки:
server {
listen 80;
server_name example.ru www.example.ru;
set $root_path ‘/var/www/example.ru/www’;
root $root_path;
index index.php index.html;
location / {
try_files $uri $uri/ $uri.html $uri.php$is_args$query_string;
}
error_page 500 502 503 504 /50x.html;
error_page 404 /404.php;
location = /50x.html {root /usr/share/nginx/html;}
#location = /404.php {root $root_path;}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $request_filename;
include fastcgi_params;
fastcgi_intercept_errors on;
}
error_log /var/www/example.ru/log/nginx-error.log error;
}
1 |
server{ listen80; server_name example.ruwww.example.ru; set$root_path’/var/www/example.ru/www’; root$root_path; index index.phpindex.html; location{ try_files$uri$uri$uri.html$uri.php$is_args$query_string; } error_page50050250350450x.html; error_page404404.php; location=50x.html{rootusrsharenginxhtml;} #location = /404.php {root $root_path;} location~\.php${ fastcgi_pass127.0.0.19000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME$request_filename; include fastcgi_params; fastcgi_intercept_errors on; } error_logvarwwwexample.rulognginx-error.logerror; } |
Включение сервер-блоков
Теперь когда созданы сервер-блоки их нужно активировать, чтобы Nginx мог начать с ними работать.
Сделать это можно путем создания символической ссылки:
Убедитесь, что все конфигурационные файлы, для каждого домена, подключены в главном конфиге Nginx. Для этого в файле должна присутствовать следующая строка.
Теперь, если все предыдущие этапы выполнены без ошибок, то вы можете зайти на страницу сайта, введя имя домена в адресную строку, в моем случае это example.ru.
Nginx выдал страницу для сайта example.ru
Extended information
Extended information is a bonus feature and is used mainly for just aesthetic reasons on the web interface. It can be split up into host extended information and service extended information. The things you can do with this are put pretty little icons beside host names, specify URL’s to links outside of Nagios, and make things look «pretty» on the map systems. I use the service extended information to point to links outside of nagios hosting MRTG graphs. I’ll show you how you can do this. Remember to specify this file exists in nagios.cfg and create the file.
vim serviceextinfo.cfg # yum's definitions define serviceextinfo{ host_name yum service_description PING notes_url http://mynagiosbox/mrtg/myfile.html icon_image graph.gif icon_image_alt View graphs }
This puts a pretty little icon beside the PING service on the web interface. When you click on this icon, it takes you directly to the MRTG graph I have running on the same machine. In my case, I have an internal yum server rsyncing every night to the mirrors. All of the ethernet traffic is graphed through MRTG, then Nagios points a link to this so it’s easy to navigate to. This proves to create a good history of bandwith usage, and other things. Use some creativity and you can log, graph, and link to just about anything you want. For example, processes and users logged into a system.