Установка Nginx, php7.0-fpm и Let’s Encrypt
У нас есть машина на Ubuntu/Debian. Нужно установить на нее несколько веб-серверов.
Сперва установим веб-сервер nginx и php7
apt-get install nginx php7.0-fpm
Пусть у нас будет два сайта site1.ru и site2.ru и располагаться они будут в каталогах /var/www/html/site1 и /var/www/html/site2 соответственно.
Создадим для них конфигурационные файлы.
sudo touch /etc/nginx/sites-available/site1.ru sudo touch /etc/nginx/sites-available/site2.rusudo ln -s /etc/nginx/sites-available/site1.ru /etc/nginx/sites-enabled/site1.ru sudo ln -s /etc/nginx/sites-available/site2.ru /etc/nginx/sites-enabled/site2.ru
Отредактируем первый
sudo nano /etc/nginx/sites-available/site1.ruserver { listen 80; listen [::]:80; root /var/www/html/site1; index index.php index.html index.htm; server_name site1.ru www.site1.ru; location / { if (-e $request_filename.php){ rewrite ^/(.*)$ /$1.php; } try_files $uri $uri/ =404; } location ~ .(php|html)$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php7.0-fpm.sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }
и следом второй
sudo nano /etc/nginx/sites-available/site2.ruserver { listen 80; listen [::]:80; root /var/www/html/site2; index index.php index.html index.htm; server_name site2.ru www.site2.ru; location / { if (-e $request_filename.php){ rewrite ^/(.*)$ /$1.php; } try_files $uri $uri/ =404; } location ~ .(php|html)$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php7.0-fpm.sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }
проверим конфигурацию на ошибки:
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
sudo nginx -s reload
Создадим файл общих настроек для ssl
sudo touch /etc/nginx/snippets/ssl.conf sudo nano /etc/nginx/snippets/ssl.confssl_session_timeout 1d; ssl_session_cache shared:SSL:50m; ssl_session_tickets off; ssl_protocols TLSv1.2; ssl_ciphers EECDH+AESGCM:EECDH+AES; ssl_ecdh_curve secp384r1; ssl_prefer_server_ciphers on; ssl_stapling on; ssl_stapling_verify on; add_header Strict-Transport-Security “max-age=15768000; includeSubdomains; preload”; add_header X-Frame-Options DENY; add_header X-Content-Type-Options nosniff;
Установим Cerbot – утилиту для получения и обновления сертификатов для наших сайтов.
sudo add-apt-repository ppa:certbot/certbot sudo apt-get update sudo apt-get install certbot sudo apt-get install python-certbot-nginx
Вставим в файл /etc/nginx/sites-available/site1.ru следующее:
location ~ /.well-known { allow all; } include /etc/nginx/snippets/ssl.conf; listen 443 ssl; ssl_certificate /etc/letsencrypt/live/site1.ru/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/site1.ru/privkey.pem; if ($scheme != “https”) { return 301 https://$host$request_uri; }
Теперь он принимает вот такой вид:
server { listen 80; listen [::]:80; root /var/www/html/site1; index index.php index.html index.htm; server_name site1.ru www.site1.ru; location ~ /.well-known { allow all; } include /etc/nginx/snippets/ssl.conf; listen 443 ssl; ssl_certificate /etc/letsencrypt/live/site1.ru/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/site1.ru/privkey.pem; if ($scheme != “https”) { return 301 https://$host$request_uri; } location / { if (-e $request_filename.php){ rewrite ^/(.*)$ /$1.php; } try_files $uri $uri/ =404; } location ~ .(php|html)$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php7.0-fpm.sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }
Аналогично для второго сайта:
server { listen 80; listen [::]:80; root /var/www/html/site1; index index.php index.html index.htm; server_name site2.ru www.site2.ru; location ~ /.well-known { allow all; } include /etc/nginx/snippets/ssl.conf; listen 443 ssl; ssl_certificate /etc/letsencrypt/live/site2.ru/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/site2.ru/privkey.pem; if ($scheme != “https”) { return 301 https://$host$request_uri; } location / { if (-e $request_filename.php){ rewrite ^/(.*)$ /$1.php; } try_files $uri $uri/ =404; } location ~ .(php|html)$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php7.0-fpm.sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }
Установим сертификаты:
sudo certbot –nginx -d site1.ru -d www.site1.ru -d site2.ru -d www.site2.ru
После того, как сертификаты сгенерятся, необходимо перезапустить nginx.
sudo nginx -s reload
Пробуем зайти на наши сайты. Трафик должен направляться на https и перед URL сайта должна быть иконка с замочком.
Источник: https://admin812.ru/ustanovka-nginx-php7-0-fpm-i-let-s-encrypt.html
Установка Zabbix + nginx+php-fpm + mariaDB в Unix/Linux
Я описывал статью как можно установить zabbix на различные Linux системы. Но по дефолту, заббикс юзает апач для фронтенда. Но я люблю nginx + php-fpm и данная статья покажет как это сделать.
Я расскажу как установить все эти компоненты, но начнем с самого элементарного.
Установка nginx в Unix/Linux
Полезное чтиво:
Установка PHP 7(php-fpm) с nginx 1.9 в Debian 8
Виртуальный хост для отдельного пользователя с PHP-FPM и nginx
Установка Nginx, PHP-FPM, MariaDB на CentOS 7 / RHEL 7
Уcтановка nginx, MySQL, PHP (LEMP) stack на Debian/Ubuntu
Установка и настройка nginx c PHP5, PHP-FPM и MySQL на Fedora
Установка php-fpm в Unix/Linux
Полезное чтиво:
Настройка «process manager(dynamic/static/ondemand)» для php-fpm в Unix/Linux
Установка mariaDB в Unix/Linux
Полезное чтиво:
Установка MariaDB 5.5 на RHEL / CentOS / Fedora Linux
Установка MariaDB 10 на CentOS 7
Установка MariaDB на Debian
Установка MariaDB в Ubuntu
Установка Zabbix в Unix/Linux
Полезное чтиво:
Установка Zabbix на RedHat/CentOS/Fedora
Установка Zabbix на Debian/Ubuntu/Linux Mint
Настройка Zabbix + nginx+php-fpm + mariaDB в Unix/Linux
Если есть необходимость использовать nginx, то вот конфиг:
# vim /etc/nginx/conf.d/zabbix.conf
И получаем следующее:
server { listen 80; server_name zabbix.local.server; access_log /var/log/nginx/access-zabbix.local.server.log; error_log /var/log/nginx/error-zabbix.local.server.log info; root /usr/share/zabbix; index index.php index.html; auth_basic “Nagios Restricted Access”; auth_basic_user_file /etc/zabbix/passwd; location / { root /usr/share/zabbix; index index.php index.html; } location ~ .php$ { fastcgi_pass php-fpm; fastcgi_index index.php; fastcgi_param PHP_VALUE ” max_execution_time = 300 memory_limit = 128M post_max_size = 16M upload_max_filesize = 2M max_input_time = 300 date.timezone = Europe/Kiev always_populate_raw_post_data = -1 “; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; try_files $uri =404; include fastcgi_params; } location = /favicon.ico { log_not_found off; access_log off; } location ~* “.+.(?:ogg|ogv|svg|svgz|eot|otf|woff|mp4|ttf|rss|css|swf|js|atom|jpe?g|gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi|wav|bmp|rtf)$” { access_log off; log_not_found off; expires max; } location ~* ^/(conf|api|include)($|/) { deny all; } location ~ /.ht { deny all; } location ~ /. { deny all; } }
Хочу отметить следующее, что заббикс по деволту использует apache и если использовать nginx, то необходимо сменить права:
# chown -R nginx. /etc/zabbix/web # chown -R nginx. /usr/share/zabbix
Так же, я запускаю php-fpm от nginx пользователя ( я создал ему отдельный файл):
# vim /etc/php-fpm.d/zabbix.conf
И прописал в него:
[www] user = nginx group = nginx listen = 127.0.0.1:9000 listen.allowed_clients = 127.0.0.1 listen.owner = nginx listen.group = nginx listen.mode = 0666 pm = dynamic pm.start_servers = 30 pm.min_spare_servers = 30 pm.max_spare_servers = 45 pm.process_idle_timeout = 30s pm.max_requests = 500000000 pm.status_path = /status request_terminate_timeout = 600s slowlog = /var/log/php-fpm/www-slow.log rlimit_files = 65535 chdir = / security.limit_extensions = .php .php3 .php4 .php5 env[HOSTNAME] = $HOSTNAME env[PATH] = /usr/local/bin:/usr/bin:/bin env[TMP] = /tmp env[TMPDIR] = /tmp env[TEMP] = /tmp php_flag[display_errors] = off php_admin_value[error_reporting] = 0 php_admin_value[error_log] = /var/log/php-fpm/php5-fpm.log php_admin_flag[log_errors] = on php_admin_value[memory_limit] = 128M php_admin_flag[log_errors] = on php_admin_flag[display_errors] = on php_value[session.save_handler] = files php_value[session.save_path] = /var/lib/php/session
Выставляем права на сессии:
# chown -R nginx. /var/lib/php/session
И для супер-пупер секурити, создаем:
# htpasswd -c /etc/zabbix/passwd zabbix
Прописываем пароль, для пользователя zabbix.
Перезапускаем службы:
# service nginx restart # service php-fpm restart # service mysql restart
Если mysql установлен, то еще необходимо создать пользователя, который будет управлять данной БД. Для начала, подключаемся к серверу:
# mysql -proot -p
Создаем базу и пользователя с паролем:
> create database zabbix character set utf8 collate utf8_bin; > grant all privileges on zabbix.* to 'zabbix'@'127.0.0.1' IDENTIFIED BY 'passwd_user_zabbix'; > flush privileges;
У меня используется:
- zabbix — База данных.
- zabbix — пользователь.
- passwd_user_zabbix — пароль для пользователя.
Импортируем данные в созданную БД:
# zcat /usr/share/doc/zabbix-server-mysql-3.2.6/create.sql.gz | mysql -u zabbix -p zabbix
Настройка zabbix-server
Открываем:
# vim /etc/zabbix/zabbix_server.conf
И производим настройку, у меня данный файл имеет вид:
ListenPort=10051 SourceIP=192.168.13.66 LogFile=/var/log/zabbix/zabbix_server.log LogFileSize=0 PidFile=/var/run/zabbix/zabbix_server.pid DBHost=localhost DBName=zabbix DBUser=zabbix DBPassword=passwd_user_zabbix DBPort=3306 JavaGatewayPort=10052 SNMPTrapperFile=/var/log/snmptrap/snmptrap.log CacheSize=8M HistoryCacheSize=16M HistoryIndexCacheSize=4M Timeout=4 AlertScriptsPath=/usr/lib/zabbix/alertscripts ExternalScripts=/usr/lib/zabbix/externalscripts LogSlowQueries=3000 Include=/usr/local/etc/zabbix_server.conf.d/*.conf
Создаем папку:
# mkdir /usr/local/etc/zabbix_server.conf.d
Запускаем сервер:
# service zabbix-server restart
Проверяем соединения:
# netstat -tulpn|grep zabbix
Разрешаем автозапуск (centOS 7):
$ systemctl enable zabbix-server.service
Или (centOS 5-6):
# chkconfig –levels 235 zabbix-server on
Идем дальше.
Настройка zabbix-agent
Открываем:
# vim /etc/zabbix/zabbix_agentd.conf
И производим настройку, у меня данный файл имеет вид:
PidFile=/var/run/zabbix/zabbix_agentd.pid LogFile=/var/log/zabbix/zabbix_agentd.log LogFileSize=0 Server=192.168.13.66 ListenPort=10050 ListenIP=0.0.0.0 ServerActive=192.168.13.66 Hostname=Zabbix server Include=/etc/zabbix/zabbix_agentd.d/*.conf
Запускаем агент:
# service zabbix-agent restart
Проверяем соединения:
# netstat -tulpn|grep zabbix
Разрешаем автозапуск (centOS 7):
$ systemctl enable zabbix-agent.service
Или (centOS 5-6):
# chkconfig –levels 235 zabbix-agent on
Идем дальше.
Настройка файрвола
Для корректной работы, нужно пробросить 10050 и 10051.
Пример использования systemctl (пример для centos 7):
# firewall-cmd –permanent –add-port=10050/tcp # firewall-cmd –permanent –add-port=10051/tcp
Перезапускаем:
# systemctl restart firewalld
Пример использования SELinux (пример для centos 7):
# setsebool -P httpd_can_connect_zabbix=1
Пример использования iptables (пример для centos 5-6):
# iptables -A INPUT -p tcp -m tcp –dport 10050 -j ACCEPT # iptables -A INPUT -p tcp -m tcp –dport 10051 -j ACCEPT # iptables -A INPUT -p tcp -m tcp –dport 10052 -j ACCEPT
Для более секундного решения, пробрасываем каждый ИПшник агента и открываем ему порт:
iptables -A INPUT -p tcp -s 172.22.221.100 –dport 10050 -m state –state NEW,ESTABLISHED -j ACCEPT iptables -A INPUT -p tcp -s 172.22.221.100 –dport 10051 -m state –state NEW,ESTABLISHED -j ACCEPT
Сохраняем правила:
# iptables-save > /etc/iptables.up.rules
Работа с zabbix
Выполняем установку через веб-интерфейс. Вводим данные которые были созданы выше( zabbix — база данных, zabbix — пользователь, passwd_user_zabbix — его пароль). После установки, можно будет зайти в админ панель:
Пользователь — Admin
Пароль для пользователя — zabbix
После установки, залогинились в админ-панель и приступим к настройке. Первое что нужно сделать — это создать нового пользователя и дать ему права администратора:
— Открываем «
— Открываем «
Я, хочу мониторить сам сервер, и сейчас я, включу данную функцию:
— Открываем «
Чтобы убедится что все работает и собираются данные — переходим:
— Открываем «Monitoring
Собственно — это все. Минимальная настройка уже имеется. Как работать с заббиксом и заббикс-агентами, будет немного позже.
Установка и подключения других агентов
Опишу в следующей статье.
А на этом, у меня все. Тема «» завершена.
Источник: http://linux-notes.org/ustanovka-zabbix-nginx-php-fpm-mariadb-v-unix-linux/
Настройка сервера Zabbix с PostgresSQL на CentOS (Zabbix+PostgreSQL+Nginx+php) / CentOS / Howitmake.ru
Старое правило IT индустрии о том что: «Быстро поднятое, не считается упавшим!» по прежнему действует, но чтобы оно выполнялось, необходимо оперативно об этих проблемах узнавать, для этого существуют системы мониторинга, человеку не реально отследить все глубинные процессы происходящие в системе, но система мониторинга соберет всю информацию и представит в удобоваримой форме, а в случае проблем еще и уведомит о них. Вот я решил рассказать как настроить сервер мониторинга Zabbix, а в качестве бэкедна будет использоваться PostgresSQL, также, мы настроим Web интерфейс, который будет работать через Nginx и php-fpm. PostgresSQL обладает довольно большим функционалом, некоторых функций нет MySQL, также выбор пал на Postgres потому что один проект был заточен под этот SQL сервер и городить что-то дополнительное не хотелось. Альтернативой MySQL можно использовать Percona или MariaDB но все это форки, да и репликация, в PostgresSQL, работает из коробки, а в MySQL она есть, но требует некоторых телодвижений, для ее настройки, да и качество работы репликации мне не понравилось. Для начала добавим необходимые репозитории, но первым делом нам необходимо отключить SELinux, а затем добавим репозиторий Epel, без него не добавится репозиторий Remi Что мы имеем в наличии. ОС SentOS 7 нам момент написания статьи были доступны следующие версии пакетов PostgreSQL 9.4 Zabbix 2.4 Nginx 1.6.2 ну и остальное по мелочи. Результатом наших действий станет полностью готовый к использованию сервер мониторинга Zabbix 2.2+PostgresSQL 9.4+Nginx+php-fpm отключаем SELinuxnano /etc/sysconfig/selinuxнаходим строкуSELINUX=permissiveПриводи ее к видуSELINUX=disabledДобавим репозиторий
Epel для CentOS 7 — Актуальную версию можно увидеть на его сайте
rpm -ivh http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-5.noarch.rpm
Remi для CentOS 7 За актуальной версией прошу на официальный сайт
rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
Postgres-Актуальную версию файла настроек репозитория, а также, последний релиз можно узнать тут
rpm -ivh http://yum.postgresql.org/9.4/redhat/rhel-7-x86_64/pgdg-centos94-9.4-1.noarch.rpm
Zabbix — настройки репозитория и последнюю версию можно скачать с официального репозитория
rpm -ivh http://repo.zabbix.com/zabbix/2.4/rhel/7/x86_64/zabbix-release-2.4-1.el7.noarch.rpm
Добавим репозиторий, со стабильной версией, Nginx, подробнее о котором можно узнать на официальном сайте
rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpmДля начала обновим системуyum update -yПосле этого перезагрузим систему, чтобы отключился SELinux и применились обновления.systemctl rebootПереходим установке необходимых пакетов и небольших настроек, все основные настройки мы будем делать позже.
Устанавливаем Web-сервер Nginx + php-fpm
yum install nginx php-fpm -yотредактируем файл настроек php-fpm чтобы закрыть уязвимостьnano /etc/php.ini
Находим строку ;cgi.fix_pathinfo=1 и приводим ее к виду
cgi.fix_pathinfo=0нам остается добавить nginx и php-fpm в автозагрузку, чтобы они стартовали вместе с системой, в CentOS 7 изменился способ управления службами c init.d на systemctlsystemctl enable nginx systemctl enable php-fpmнам остается запустить указанные службыsystemctl start nginx systemctl start php-fpmесли мы попробуем подключиться к серверу Nginx, по IP адресу сервера, то у нас ничего не получится т.к. этого не дает сделать фаерволл, создадим разрешающее правило:firewall-cmd –zone=public –add-service=http –permanentПерезапустим фаерволл, чтобы применить измененияfirewall-cmd –reloadПробуем зайти и видим стандартную страницу Nginx. отлично все работает
Устанавливаем сервер баз данных PostgresSQL
Для начала выясним какие пакеты нам доступны
yum list postgres*Из этого списка можно «скопипастить», то что нам нужноyum install postgressql94-serverнам также необходимо добавить его в автозапускsystemctl enable postgresql-9.4Выполним инициализацию нового сервера баз данных PostgresSQL/usr/pgsql-9.4/bin/postgresql94-setup initdbЗапускаем postgressystemctl start postgresql-9.4
Устанавливаем Zabbix server, Zabbix agent и Web-интерфейс Zabbix
При установке данных пакетов к нам приедет еще много чего, в качестве зависимостей, так что специально указывать требуемые пакеты, нет необходимости.
yum install zabbix22-server-pgsql zabbix22-web-pgsql zabbix22-agent -yТакже добавим zabbix server и агент в автозапускsystemctl enable zabbix-server-pgsql systemctl enable zabbix-agentНо пока мы их запускать не будем мы установили требуемые пакеты и сделали мелкие настройки системы, а сейчас перейдем непосредственно к настройкам системы.
Настройка Nginx и php-fpm
Файлы, Web интерфейса, сервера zabbix находится в /usr/share/zabbix тут возможны варианты с настройкой
вариант первый -мы хотим чтобы доступ в панель выполнялся по адресу zabbix.example.org
вариант второй -мы хотим чтобы доступ в панель выполнялся по адресу example.
org/zabbix Постараюсь рассмотреть оба варианта, тем более что это не потребует сильно уходить от темы, сама заготовка для конфига, виртуального хоста, у меня подготовлена уже очень давно, ее я довольно часто использую, включая статьи на этом сайте. Выбираем один из 2х вариантов:
Вариант #1 хотим заходить по адресу zabbix.
example.org
Создаем конфигурационный файл виртуального хостаnano /etc/nginx/conf.d/zabbix.example.org.conf
Имя может быть любым, но заканчиваться должно на .conf иначе nginx его не загрузит.
И добавляем в него содержимое:server { listen 80; #Указыываем корневую директорию вирт.хоста root /usr/share/zabbix; #расположение логов данного хоста access_log /var/log/nginx/zabbix.example.access.log; server_name zabbix.example.org; location / { index index.php index.html index.
htm; } location ~ .php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
Таким образом запросы к домену zabbix.example.
org будут попадать в /usr/share/zabbix
Вариант #2 хотим заходить по адресу example.org/zabbix
Создаем файлnano /etc/nginx/conf.d/example.org.confserver { listen 80; #Указыываем корневую директорию вирт.хоста root /var/www/html; #расположение логов данного хоста access_log /var/log/nginx/example.access.log; server_name example.org www.example.org; location / { index index.php index.html index.htm; } location ~ .php$ { fastcgi_pass 127.0.0.
1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } #Подключаем лакейшен Zabbix location /zabbix { root /usr/share/; index index.php index.html index.htm; location ~ ^/zabbix/(.+.php)$ { try_files $uri =404; root /usr/share/; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.
php; fastcgi_param SCRIPT_FILENAME $request_filename; include /etc/nginx/fastcgi_params; } location ~* ^/zabbix/(.+.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ { root /usr/share/; } } }
таким образом, все запросы к example.
org будут попадать в директорию /var/www/html, а запросы содержащие /zabbix в директорию /usr/share/zabbix
Перезапустим Nginx:systemctl restart nginx
Открываем страницу и получаем 500ю ошибку т.к.
некоторые файлы не погрузились, из-за того что не хватает прав доступа, есть 2 пути решения проблемы, первый и более сложный, сменить владельца файлов и директорий веб интерфейса Zabbix на пользователя Nginx ( под этим пользователем работает web сервер) или более простой запустить Nginx под другим пользователем, а именно apache происходит это потому что, изначально, веб морда zabbix рассчитана на работу с Apache и про Nginx ничего не знает, этот пользователь создается автоматически при установке php-fpm, в общем идем в:
nano /etc/nginx/nginx.confнаходим строку:user nginx;и меняем ее наuser apache;
Перезапустим nginx, а заодно и php-fpm чтобы загрузились те пакеты, которые приехали при установке zabbix22-web-pgsql
systemctl restart nginx systemctl restart php-fpmСнова заходим на страницу и видим что у нас появилась страница установки zabbixнажимаем Next и попадаем на страницу проверки конфигурации, наша конфигурация не проходит проверку и дальнейшая установка не возможна, все с чем возникла ошибка выделено красным, чтобы продолжить установку нам необходимо устранить все замечания инсталлятора, а для этого настроим PHPСуть в том что Zabbix требует некоторых настроек, которые, мне бы не хотелось, чтобы распространились на весь сервер.
php-fpm позволяет делать индивидуальные настройки php для каждого виртуального хоста т.к. у разных CMS могут быть разные требования к системе, то давать одинаковые правила на весь сервер это не правильно, вот для этих целей существуют пулы в php-fpm.
Пулом, по умолчанию, является www настройки которого лежат в:
/etc/php-fpm.d/www.conf
Свой пул, назовем его zabbix, мы создадим на основе пула www, но сначала мы укажем настройку которую можно применить на весь сервер, а это параметры временной зоны. У нас они подсвечены красным в пункте PHP time zone для этого отредактируем php.ini
nano /etc/php.iniнаходим строку:;date.timezone =И указываем в ней временную зону Europe/Moscow (указываем свой часовой пояс!), обязательно сняв комментарий со строки, чтобы выглядело:date.timezone = Europe/MoscowСохраняем изменения и перезапускаем php-fpmsystemctl restart php-fpm
если мы нажмем на странице установки zabbix кнопку Retry, то увидим что пункт PHP time zone уже не красный и нам остается исправить только 3 пункта
PHP version 5.4.16 5.3.0 OK PHP option memory_limit 128M 128M OK PHP option post_max_size 8M 16M Fail PHP option upload_max_filesize 2M 2M OK PHP option max_execution_time 30 300 Fail PHP option max_input_time 60 300 Fail PHP time zone Europe/Moscow OK Создаем свой пул php-fpm, для этого перейдем в директорию где эти пулы расположеныcd /etc/php-fpm.d/
Копируем пул www.conf
cp www.conf zabbix.confтеперь у нас есть копия пула, которую нам необходимо отредактировать, добавив в нее необходимые настройки.nano zabbix.confСамым первым указываем имя пула Приводи его к виду; Start a new pool named 'www'. [zabbix]
меняем порт для его работы, т.к. пул www у нас работает на порту 9000 то пул zabbix мы переведем на порт 9001, находим строку и приводим ее к виду:
listen = 127.0.0.1:9001И нам осталось добавить 3 параметра, чтобы запустить установку Zabbix web Интерфейса
ну и добавим оставшиеся параметры PHP, их можно передать через значение php_value
нам необходимо добавить эти параметры, значения которых можно увидеть странице установки zabbix, они сейчас красные. Переходим в самый конец файла, там уже есть подобные строки и добавляем рядом с ними чтобы параметры лежали рядом и их было легче найти.
php_value[post_max_size]=16M php_value[max_execution_time]=300 php_value[max_input_time]=300
после этого нам необходимо перезапустить PHP-FPM, а также перенастроить виртуальных хост Nginx чтобы он обращался к PHP-FPM через порт 9001, где у нас создан создан пулл zabbix.
Для первого вариантаlocation ~ .php$ { fastcgi_pass 127.0.0.1:9001; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }Для воторого варианта#Подключаем лакейшен Zabbix location /zabbix { root /usr/share/; index index.
php index.html index.htm; location ~ ^/zabbix/(.+.php)$ { try_files $uri =404; root /usr/share/; fastcgi_pass 127.0.0.1:9001; fastcgi_index index.
php; fastcgi_param SCRIPT_FILENAME $request_filename; include /etc/nginx/fastcgi_params; }Перезапускаем php-fpm и nginxsystemctl restart php-fpm systemctl restart nginxСнова заходим на страницу установки Zabbix, обновляем ее и видим что все требования выполнены и возможно дальше продолжить установкуК ней мы вернемся позднее т.к. ну нас не настроен PostgresSQL не создан пользователь, отсутствует база, а также содержимое базы данных.
Настройка PostgresSQL
Создадим пользователя, таблицу и предоставим права на эту таблицу Заходим в консоль пользователя postgressu postgresподключаемся к серверу базы данныхpsql
Создадим пользователя и таблицу с именем zabbixsrv и предоставим пользователю права на использование данной таблицы (естественно пароль указываем свой):CREATE ROLE zabbixsrv WITH NOSUPERUSER LOGIN PASSWORD 'zabbixsrvpassword'; CREATE DATABASE zabbixsrv WITH OWNER zabbixsrv; GRANT ALL PRIVILEGES ON DATABASE zabbixsrv TO zabbixsrv;
Мы создали пользователя с именем zabbixsrv паролем zabbixsrvpassword и базу данных с именем zabbixsrv При выполнении команд получаем следующее Проверим что таблицы содалисьlполучим похожее на такоеотключаемся от базыqзавершаем сессию пользователя postgresexitТеперь нам необходимо перенастроить сам сервер postgresql Сначала разрешим слушать портnano /var/lib/pgsql/9.4/data/postgresql.confнаходим строку#listen_addresses = 'localhost'приводим к видуlisten_addresses = '*'раскомментируем строку#port = 5432Сохраняем изменения Теперь нам необходимо предоставить права достпа пользователю zabbixsrv к базе данных, по паролю, для этого нам необходимо отредактировать другой файлnano /var/lib/pgsql/9.4/data/pg_hba.confнаходим строкуhost all all 127.0.0.1/32 identИ перед ней добавляем запись, чтобы выгляделоhost zabbixsrv zabbixsrv 127.0.0.1/32 password host all all 127.0.0.1/32 ident
Запись, разрешающая доступ, обязательно должна быть именно так как указано!
Пререзапускаем сервер postgresqlsystemctl restart postgresql-9.4Далее, нам необходимо добавить данные в таблицу, чтобы зайти в консоль под пользователем zabbixsrv нужно ему разрешить это делать, для этого отредактируем файл passwdnano /etc/passwd
Находим строку пользователя zabbixsrv в ней прописано что он не может использовать консоль /sbin/nologin
zabbixsrv:x:996:995:Zabbix Monitoring System — Proxy or server:/var/lib/zabbixsrv:/sbin/nologin
дадим пользователю права на использование консоли /bin/bash
zabbixsrv:x:996:995:Zabbix Monitoring System — Proxy or server:/var/lib/zabbixsrv:/bin/bashТеперь мы можем зайти под пользователем zabbixsrvsu zabbixsrvИмпортируем содержимое SQL дампа в базу данных:psql -U zabbixsrv zabbixsrv < /usr/share/zabbix-postgresql/schema.sql psql -U zabbixsrv zabbixsrv < /usr/share/zabbix-postgresql/images.sql psql -U zabbixsrv zabbixsrv < /usr/share/zabbix-postgresql/data.sqlС базой данных мы закончили, теперь осталось настроить zabbix сервер
Настраиваем Zabbix
Мы выходим на финишную прямую нам осталось настроить Zabbix сервер и завершить настройку WEB интерфейса. Отредактируем конфигурационный файл сервера Zabbixnano /etc/zabbix_server.confнаходим строки и приводим их к видуDBHost=127.0.0.1 DBName=zabbixsrv DBUser=zabbixsrv DBPassword=zabbixsrvpasswordГде
DBName -имя базы данных
DBUser — имя пользователя для подключения
DBPassword — пароль для подключения Как вы могли догадаться, мы их создали при PostgressSQL ранее там же найти и закомментировать#DBSocket=/var/lib/mysql/mysql.sockУказать порт для подключенияDBPort=5432Запустим zabbix серверsystemctl start zabbix-server
нам остается настроить WEB интерфейс возвращаемся в браузер и жмем Next переходим на страницу Configure DB connection
в поле Database host — указываем адрес сервера 127.0.0.1
Database port — стандартный порт postgres 5432
Database name — имя базы данных zabbixsrv
User — логин пользователя zabbixsrv
Password — ну тут и так все понятно zabbixsrvpassword
Жмем Test connection если видим зеленый ОК то все нормально (как на скриншоте) можно жать Next.Тут можно все оставить как естьТут проверяем параметры конфигурации.Даже и описывать нечего, жмем Finish
Попадаем в окно входа, логин Admin пароль zabbix
Наш сервер готов, меняем стандартные пароли и добавляем хосты для мониторинга, и пользуемся.
На этом я и закончу, спасибо что дочитали до конца.
Источник: https://howitmake.ru/blog/centos/165.html
Установка MariaDB + Nginx + PHP-FPM на CentOS 7 (Часть 4)
Продолжение статьи об установке MariaDB + Nginx + PHP-FPM на сервер под управлением CentOS 7. Предыдущие части: Часть 1, Часть 2, Часть 3.
Что ж, CentOS настроена, MariaDB и PHP-FPM установлены и настроены нужным образом. Пришла пора к установке Web-сервера NGINX.
Содержание:
9. Установка NGINX
По сравнению с MariaDB и PHP-FPM, NGINX будет устанавливаться из стандартного репозитария yum без дополнительных модификаций.
[22:38 ebabenko@centos7 ~]$ sudo yum install nginx […skipped…] Install 1 Package (+15 Dependent packages) Total download size: 3.5 M
Installed size: 11 M
Is this ok [y/d/N]: y […skipped…] Installed: nginx.x86_64 1:1.6.3-2.el7 Dependency Installed: GeoIP.x86_64 0:1.5.0-9.el7 fontconfig.x86_64 0:2.10.95-7.el7 fontpackages-filesystem.noarch 0:1.44-8.el7 gd.x86_64 0:2.0.35-26.el7 gperftools-libs.x86_64 0:2.1-1.el7 libX11.x86_64 0:1.6.0-2.1.el7 libX11-common.noarch 0:1.6.0-2.1.el7 libXau.x86_64 0:1.0.8-2.1.el7 libXpm.x86_64 0:3.5.10-5.1.el7 libjpeg-turbo.x86_64 0:1.2.90-5.el7 libpng.x86_64 2:1.5.13-5.el7 libunwind.x86_64 0:1.1-3.el7 libxcb.x86_64 0:1.9-5.el7 libxslt.x86_64 0:1.1.28-5.el7 nginx-filesystem.noarch 1:1.6.3-2.el7 Complete!
После установки, переходим к правке освновного файла конфигурации.
[22:40 ebabenko@centos7 ~]$ sudo vi /etc/nginx/nginx.conf
Доводим его до следующего содержания.
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.master.log;
pid /run/nginx.pid; events { worker_connections 1024;
} http { log_format main '$remote_addr – $remote_user [$time_local] “$request” ' '$status $body_bytes_sent “$http_referer” ' '”$http_user_agent” “$http_x_forwarded_for”'; access_log /var/log/nginx/access.master.log main; sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048; include /etc/nginx/mime.types; default_type application/octet-stream; include /etc/nginx/conf.d/*.conf; include /etc/nginx/sites-enabled/*;
}
Не вижу особой необходимости описывать какие-то ключевые моменты, так как все параметры в полной мере описанны в документации по NGINX. Остановлюсь только на одном.
- include /etc/nginx/sites-enabled/*; данная запись, как и в случае с PHP, загрузит только те конфигурации, которые будут располагаться в указанной директории, при этом имена и расширения файлов могут быть любыми.
Создадим директории для хранения всех конфигураций, а так же для запускаемых конфигураций.
[22:56 ebabenko@centos7 ~]$ cd /etc/nginx
[22:56 ebabenko@centos7 /etc/nginx]$ sudo mkdir sites-available sites-enabled
[22:57 ebabenko@centos7 /etc/nginx]$ cd sites-available
[22:57 ebabenko@centos7 /etc/nginx/sites-available]$ sudo vi default.local
Для начала создаем обязательную конфигурацию для работы NGINX по умолчанию. Изначально она была прописана в главном конфигурационном файле /etc/nginx/nginx.conf, но я ее для порядка вынес в отдельный файл.
Все запросы, которые не попали под правила запущенных серверов, будут отправлены на сервер именно этой конфигурации. Так же, для нас она будет служить в качестве отображения статических страниц (для примера).
server { listen 80 default_server; listen [::]:80 default_server; server_name _; root /usr/share/nginx/html; include /etc/nginx/default.d/*.conf; access_log /var/log/nginx/access.default.log main; error_log /var/log/nginx/error.default.log; location / { } error_page 404 /404.html; location = /40x.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { }
}
Создаем конфигурацию сервера для общего сервиса.
[23:02 ebabenko@centos7 /etc/nginx/sites-available]$ sudo vi www.local
В ней уже указываем подключение к пулу PHP-FPM.
server { listen 80; server_name www.local; server_name_in_redirect off; charset utf-8; access_log /var/log/nginx/access.www.log main; error_log /var/log/nginx/error.www.log; root /var/www/html; index index.php; location / { try_files $uri $uri/ /index.php; } location ~* .(js|css|png|jpg|jpeg|gif|swf|xml|txt)$ { access_log off; expires 14d; } location ~ .php$ { fastcgi_pass unix:/var/run/php5-fpm-www.sock; fastcgi_index index.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; }
}
Некоторые коментарии по параметрам:
- server_name www.local; – URL сервера данной конфигурации. Так как я экспериментирую через виртуальную машину, я имя могу дать абсолютно любое. Однако, если вы конфигурируете для боевого сервера, который расположен в сети, тут должно быть прописано его полное имя (например, www.my-best-portal.ru)
- root /var/www/html; – путь к директории, где располагаются файлы сайта. Особое внимание требуется уделить тому, что пул, который будет запускать скрипты, должен иметь доступ к файлам из этой директории. В данном случае в пуле www.conf прописано имя пользователя (user) и группа (group) www. Соответственно, файлы и директории должны иметь так же имя пользователя и группу www. Это мы проделаем чуть позже, пока у нас таких ни пользователя ни группы в системе не существует.
- fastcgi_pass unix:/var/run/php5-fpm-www.sock; – тут прописывает путь к сокету, который будет обрабатывать скрипты данного сервера. То есть тут указывается тот путь, который прописан в пуле www.conf в параметре listen.
Аналогично создаем конфигурацию для пользовательского сервиса.
[23:04 ebabenko@centos7 /etc/nginx/sites-available]$ sudo vi ebabenko.local
Доводим его примерно до такого же содержания, как и www.local, только со своими данными.
server { listen 80; server_name ebabenko.local; server_name_in_redirect off; charset utf-8; access_log /var/log/nginx/access.ebabenko.log main; error_log /var/log/nginx/error.ebabenko.log; root /home/ebabenko/public_html; index index.php; location / { try_files $uri $uri/ /index.php; } location ~* .(js|css|png|jpg|jpeg|gif|swf|xml|txt)$ { access_log off; expires 14d; } location ~ .php$ { fastcgi_pass unix:/var/run/php5-fpm-ebabenko.sock; fastcgi_index index.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; }
}
Собственно, на этом с настройками NGINX сервера закончено. Осталось только добавить конфигурации в директрию запуска.
[23:23 ebabenko@centos7 /etc/nginx/sites-available]$ cd ../sites-enabled
[23:23 ebabenko@centos7 /etc/nginx/sites-enabled]$ sudo ln -s /etc/nginx/sites-available/default.local
[23:23 ebabenko@centos7 /etc/nginx/sites-enabled]$ sudo ln -s /etc/nginx/sites-available/www.local
[23:24 ebabenko@centos7 /etc/nginx/sites-enabled]$ sudo ln -s /etc/nginx/sites-available/ebabenko.local
[23:24 ebabenko@centos7 /etc/nginx/sites-enabled]$ ll
total 0
lrwxrwxrwx. 1 root root 40 Jul 1 23:23 default.local -> /etc/nginx/sites-available/default.local
lrwxrwxrwx. 1 root root 41 Jul 1 23:24 ebabenko.local -> /etc/nginx/sites-available/ebabenko.local
lrwxrwxrwx. 1 root root 36 Jul 1 23:24 www.local -> /etc/nginx/sites-available/www.local
Продолжение статьи “Установка MariaDB + Nginx + PHP-FPM на CentOS 7 (Часть 5)”.
Источник: http://patttern.blogspot.com/2015/07/mariadb-nginx-php-fpm-centos-7-page4.html
Собираем статистику nginx в Zabbix
Постановка задачи
Есть сервер с установленным Nginx, надо собирать статистику сервера в Zabbix. Будем использовать стандартный функционал Nginx выдачи статистики чрез http + UserParameters в zabbix.
Выглядит это следующим образом:
Zabbix-сервер запрашивает у zabbix-агента пользовательский параметр, агент вызывает шелл-скрипт, который скачивает страничку статистики, парсит ее и выдает значения параметров.
Реализация
Настраиваем Nginx:
server { listen 10061; location /nginx_status { stub_status on; access_log off; allow 127.0.0.1; deny all; }
}
Создаем скрипт /etc/zabbix/nginx-check.sh
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
#!/bin/bash ################################## # Zabbix monitoring script # # nginx: # – anything available via nginx stub-status module # ################################## # Contact: # [email protected] ################################## # ChangeLog: # 20100922 VV initial creation ################################## # Zabbix requested parameter ZBX_REQ_DATA=”$1″ ZBX_REQ_DATA_URL=”$2″ # Nginx defaults NGINX_STATUS_DEFAULT_URL=”http://localhost:10061/nginx_status” WGET_BIN=”/usr/bin/wget” # # Error handling: # – need to be displayable in Zabbix (avoid NOT_SUPPORTED) # – items need to be of type “float” (allow negative + float) # ERROR_NO_ACCESS_FILE=”-0.9900″ ERROR_NO_ACCESS=”-0.9901″ ERROR_WRONG_PARAM=”-0.9902″ ERROR_DATA=”-0.9903″ # either can not connect / bad host / bad port # Handle host and port if non-default if [ ! -z “$ZBX_REQ_DATA_URL” ]; then URL=”$ZBX_REQ_DATA_URL” else URL=”$NGINX_STATUS_DEFAULT_URL” fi # save the nginx stats in a variable for future parsing NGINX_STATS=$($WGET_BIN -q $URL -O – 2> /dev/null) # error during retrieve if [ $? -ne 0 -o -z “$NGINX_STATS” ]; then echo $ERROR_DATA exit 1 fi # # Extract data from nginx stats # case $ZBX_REQ_DATA in active_connections) echo “$NGINX_STATS” | head -1 | cut -f3 -d' ';; accepted_connections) echo “$NGINX_STATS” | grep -Ev '[a-zA-Z]' | cut -f2 -d' ';; handled_connections) echo “$NGINX_STATS” | grep -Ev '[a-zA-Z]' | cut -f3 -d' ';; handled_requests) echo “$NGINX_STATS” | grep -Ev '[a-zA-Z]' | cut -f4 -d' ';; reading) echo “$NGINX_STATS” | tail -1 | cut -f2 -d' ';; writing) echo “$NGINX_STATS” | tail -1 | cut -f4 -d' ';; waiting) echo “$NGINX_STATS” | tail -1 | cut -f6 -d' ';; *) echo $ERROR_WRONG_PARAM; exit 1;; esac exit 0 |
Даем этому скрипту права на запуск
chmod 755 /etc/zabbix/nginx-check.sh
Создаем конфигурационный файл для zabbix-agent /etc/zabbix/zabbix_agentd.d/nginx-params.conf :
UserParameter=nginx[*],/etc/zabbix/nginx-check.sh “$1” “$2”
Импортируем в zabbix темплейт nginx-template.xml:
2.0 2013-03-26T04:17:58Z Templates Template_Nginx Template_Nginx Templates Nginx Nginx $1 0 0 nginx[waiting,{$NGINX_STATUS_URL}] 60 30 365 0 0 0 0 1 0 0 0 Nginx Nginx $1 0 0 nginx[writing,{$NGINX_STATUS_URL}] 60 30 365 0 0 0 0 1 0 0 0 Nginx Nginx $1 0 0 nginx[active_connections,{$NGINX_STATUS_URL}] 60 30 365 0 0 0 0 1 0 0 0 Nginx Nginx $1 0 0 nginx[reading,{$NGINX_STATUS_URL}] 60 30 365 0 0 0 0 1 0 0 0 Nginx Nginx $1/sec 0 0 nginx[handled_requests,{$NGINX_STATUS_URL}] 60 30 365 0 0 1 0 1 0 0 0 Nginx Nginx $1/sec 0 0 nginx[accepted_connections,{$NGINX_STATUS_URL}] 60 30 365 0 0 1 0 1 0 0 0 Nginx Nginx $1/sec 0 0 nginx[handled_connections,{$NGINX_STATUS_URL}] 60 30 365 0 0 1 0 1 0 0 0 Nginx Number of $1 process 0 public 0 interfaces.ifTable.ifEntry.ifInOctets.1 proc.num[nginx] 300 30 365 0 3 0 0 1 0 0 0 {$NGINX_STATUS_URL} http://127.0.0.1:10061/nginx_status {Template_Nginx:proc.num[nginx].last(0)}=0 Nginx is not running on {HOSTNAME} 0 4 Nginx is not running. It has been stopped / shutdown or has crashed. Check on the server for more details: – w / last – dmesg logs – /var/log/messages – nginx error logs 0 Nginx – Connections and Requests status 900 200 0.0000 100.0000 0 0 0 1 0 0.0000 0.0000 1 0 0 0 0 1 FF9999 0 4 0 Template_Nginx nginx[accepted_connections,{$NGINX_STATUS_URL}] 1 2 990000 0 4 0 Template_Nginx nginx[handled_connections,{$NGINX_STATUS_URL}] 2 0 009900 0 4 0 Template_Nginx nginx[handled_requests,{$NGINX_STATUS_URL}] Nginx – Threads status 900 200 0.0000 100.0000 0 0 1 1 0 0.0000 0.0000 1 0 0 0 0 1 990000 0 4 0 Template_Nginx nginx[writing,{$NGINX_STATUS_URL}] 1 1 999900 0 4 0 Template_Nginx nginx[reading,{$NGINX_STATUS_URL}] 2 1 009900 0 4 0 Template_Nginx nginx[waiting,{$NGINX_STATUS_URL}]
Это собственно все. Далее в web-интерфейск zabbix подключаем к узлу темплейт “Template_Nginx” и вуаля!
Источник: http://valynkin.ru/sobiraem-statistiku-nginx-v-zabbix.html
Мониторим Nginx в Zabbix
Веб-сервер Nginx предоставляет информацию о статистике свой работы.
Немного bash и мы сможем учитывать данную информацию в системе мониторинга Zabbix.
Для начала нам нужно получать данную статистику, а для этого нужно ее «активировать» в nginx.
Создадим новый файл виртуального хоста в nginx с следующим содержанием, statistic.conf:
server { listen localhost; server_name nginx_status.localhost; location /status { stub_status on; access_log off; allow 127.0.0.1; deny all; } }
Данный скрипт создает виртуальный хост, который будет откликаться только на http://localhost/status и не доступен из вне.
Помещаем данный файл в sites-enabled или conf.d в папке /etc/nginx (все зависит от того какая версия nginx у вас установлена и из официального ли она репозитория)
Перезапускаем nginx:
service nginx restart
Далее создадим скрипт, который будет обрабатывать запросы Zabbix-server. Назовем этот скрипт nginx.sh и поместим в папку пользовательских скриптов Zabbix. По умолчанию это папка /usr/share/zabbix-agent/scripts/.
#!/bin/bash FILESTATUS=/tmp/status_nginx.tmp NOWTIME=$(date +%s) if [ ! -f $FILESTATUS ] then wget http://localhost/status -O $FILESTATUS -o /dev/null fi FILETIME=$(stat -c %Y $FILESTATUS) let “TIME = $NOWTIME – $FILETIME” if [ “$TIME” -ge “20” ] then wget http://localhost/status -O $FILESTATUS -o /dev/null fi case “$1” in active) awk 'NR==1 {print $3}' $FILESTATUS exit 0 ;; accepts) awk 'NR==3 {print $1}' $FILESTATUS ;; handled) awk 'NR==3 {print $2}' $FILESTATUS ;; requests) awk 'NR==3 {print $3}' $FILESTATUS ;; reading) awk 'NR==4 {print $2}' $FILESTATUS ;; writing) awk 'NR==4 {print $4}' $FILESTATUS ;; waiting) awk 'NR==4 {print $6}' $FILESTATUS ;; *) echo “ZBX_UNSUPPORTED” exit 1 ;; esac exit 0
Данный скрипт сверяет текущее время с временем модификации файла /tmp/status_nginx.tmp. Если разница во времени больше 20 секунд, то делается новое обращение к статистике nginx с помощью wget и результаты записываются в тот же файл, после этого делается выборка исходя из команды переданной в параметрах Zabbix Agent.
В целом можно было сократить скрпит и на каждый опрос Zabbix загружать страницу и потом получать нужную стату. Но это увеличит нагрузку на сам nginx, т.к. чаще всего такой опрос производится с интервалом 30-60 секунд. Для сокращения обращений и сокращения нагрузки используется буферный файл /tmp/status_nginx.tmp, который обновляется каждые 20 секунд.
Следующим этапом нужно научить Zabbix Agent использовать данный скрпит для сбора информации. Для этого создадим файл nginx.conf в папке пользовательский параметров Zabbix Agent (/etc/zabbix/zabbix_agentd.d/) следующего содержания:
UserParameter=nginx[*],/usr/share/zabbix-agent/scripts/nginx.sh $1
Вот собственно и все, остается только подключить шаблон в Zabbix, который можно взять тут:
В результате мы сможем наблюдать приблизительно вот такие графики:
Получить все скрипты/файлы конфигураций можно в моем GIT-репозитории.
Источник: https://hellsman.ru/admin/linux/monitorim-nginx-v-zabbix
Установка php5-fpm nginx на Ubuntu
Предполагается, что операционная система у вас уже установлена, сеть настроена, интернет шустрый, провайдер не жадный (качать будем много)… Будем ставить всё из репозиториев, собирать в ручную мы ничего не будем.
- 1. Установка Nginx
- 2. Установка PHP-FPM
- 3. Создадим виртуальный хост Nginx
1. Установка Nginx
Для начала добавим репозиторий проекта Nginx:
sudo vim /etc/apt/sources.list
Добавим туда, официальное зеркало Nginx, то в каком виде представлен данный пакет, отражает видение его разработчиков:
#for nginx
deb http://nginx.org/packages/ubuntu/ precise nginx
deb-src http://nginx.org/packages/ubuntu/ precise nginx
Теперь нам нужно скачать GPG ключ:
wget http://nginx.org/keys/nginx_signing.key
Установим GPG ключ:
sudo apt-key add nginx_signing.key
Обновим список пакетов:
sudo apt-get update
Установим Nginx:
sudo apt-get install nginx
После установки nginx должен сразу стартануть. Если стартанул без ошибок, сразу переходим к пункту 2 установка php-fpm.
Если уже стоит апач, который по умолчанию слушает порт 80, то после установки nginx вывалятся ошибки:
Обрабатываются триггеры для ureadahead …
ureadahead will be reprofiled on next reboot
Настраивается пакет nginx (1.2.7-1~precise) …
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] still could not bind()
invoke-rc.d: initscript nginx, action “start” failed.
Узнаём, что у нас на порту 80:
sudo netstat -lnp|grep :80
eugene@eugene:~$ sudo netstat -lnp|grep :80
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 5557/apache2
Видим, что действительно это apache2 уже слушает порт 80.
Тогда стопим apache, потом перезапускаем nginx.
sudo service apache2 stop
sudo service nginx restart
eugene@eugene:~$ sudo service nginx restart
* Restarting nginx ngin [ OK ]
2. Установка PHP-FPM
sudo apt-get install php5-cli php5-common php5-mysql php5-fpm php-pear
Нам необходимо устранить уязвимость PHP:
sudo vim /etc/php5/fpm/php.ini
Находим строку:
;cgi.fix_pathinfo = 1
Приводим ее к виду:
cgi.fix_pathinfo = 0
Сохраняем изменения и перезапустим PHP-FPM:
sudo /etc/init.d/php5-fpm restart
3. Создадим виртуальный хост Nginx
Директория для всех сайтов у меня /var/www/. Вы можете выбрать любую, главное чтобы у nginx`а был доступ в эту директорию. Расположение сайтов, например сайт test:
- /var/www/test/www – корневая директория
- /var/log/nginx – access и error logs сайта test
Настаиваем первый виртуальный хост Nginx, назовем его test
sudo vim /etc/nginx/conf.d/test.conf
Содержимое файла /etc/nginx/conf.d/test.conf (Здесь я привожу только базовые настройки, чтобы работало, если нужно добавить что-то дополнительно, то вы сделаете это сами, исходя из ваших задач)
server { listen 80; # какой порт слушает root /var/www/test/www; # корневая директория access_log /var/log/nginx/test.access.log; #расположение логов данного хоста error_log /var/log/nginx/test.error.log; server_name test www.test; location / { index index.php index.html index.htm; } location ~ .php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }
}
Обращаю внимание! Все виртуальные хосты должны иметь в названии расширение .conf, иначе виртуальный хост не будет загружен.
Создадим тестовый файл, чтобы проверить работоспособность PHP5:
vim /var/www/test/www/index.php
С содержимым:
Источник: https://jeka.by/post/1010/nginx+phpfpm/