Nginx, php-fpm и что это вообще?

Введение

Если у вас еще нет своего сервера для мониторинга, то рекомендую материалы на эту тему. Для тех, кто предпочитает систему CentOS:

  1. Установка CentOS 8.
  2. Настройка CentOS 8.
  3. Установка и настройка zabbix сервера.

То же самое на Debian 10, если предпочитаете его:

  1. Установка Debian 10.
  2. Базовая настройка Debian.
  3. Установка и настройка zabbix на debian.

Я буду в своем примере настраивать все на CentOS 7, но в данном случае дистрибутив не имеет принципиального значения, все так же настраивается и на других linux системах с учетом их особенностей в установке пакетов и путей для конфигов и программ.

Мы будем использовать в качестве источника информации штатные возможности nginx, apache и php-fpm, затем передавать данные в zabbix сервер и там анализировать. Я подразумеваю, что nginx или apache вы уже настроили и имеете некое представление о работе его компонентов, поэтому некоторые вещи я не разжевываю, а просто говорю, что делать.

1 ответ

66

Лучший ответ

Я не думаю, что решение будет работать в любом случае, потому что вы увидите сообщение об ошибке в файле журнала ошибок.

Решение было намного проще, чем я думал.

просто откройте следующий путь к вашему php5-fpm

или если вы являетесь администратором ‘root’

Затем найдите эту строку и раскомментируйте ее:

Это решение позволит вам использовать listen = 127.0.0.1:9000 в ваших блоках vhost

: fastcgi_pass 127.0.0.1:9000;

после внесения изменений все, что вам нужно, это перезапустить или перезагрузить Nginx и Php5-fpm

php5-FPM

или

Nginx

или

Из комментариев:

Также комментарий

и добавьте

13 июнь 2014, в 06:48
Поделиться

Ещё вопросы

  • ошибка C2259: «класс»: невозможно создать экземпляр абстрактного класса
  • Можно ли добавить русский шрифт в проект WinAPI?
  • Условная сумма () в зависимости от месяца
  • 1Почему параметр CompareTo всегда равен нулю при сортировке списка
  • Как встроить содержимое другого URL во всплывающее окно / наложение?
  • Как проверить, забронирован ли идентификатор на определенные дни?
  • 2жду на обозримом для завершения
  • Сохранить даты в минимальном и максимальном диапазоне jQuery ui datepicker
  • Как я могу использовать регулярное выражение для сопоставления класса или идентификатора в JQuery?
  • Можно ли использовать всплывающую подсказку jQuery UI в строке таблицы?
  • Комбинированный цикл на основе диапазона
  • 1Не удалось собрать созданный модуль Titanium для Android
  • 1Назначение полей в методе equals ()
  • 1Объединить несколько столбцов в более чем один ряд в пандах
  • Большая часть моего стиля Bootstrap 3.1.1 не применяется
  • 1Выбор элементов из нескольких вариантов ListView — Android
  • 2Как сериализовать класс со свойством TextRange?
  • 1BufferedReader инициализирован, но readLine возвращает ноль?
  • Ошибка: соединение с сервером было неудачным (поддельным) в приложении Angularjs
  • 1Событие beforeunload не срабатывает после обновления страницы Chrome
  • 1Язык браузера по-японски
  • Свойства контроллера не меняются динамически
  • 1PHP-Login.net Advanced Script — как разрешить вошедшим в систему пользователям доступ к другим страницам / «представлениям»?
  • 1Gurobi UnsatisfiedLinkError
  • 1Как установить информацию DPI в оттенках серого?
  • 1Проблемы с Apache Storm emitDirect
  • 1Путаница в конкретной ситуации, в которой разные переменные имеют одинаковые имена
  • 1Как настроить клиент, сгенерированный CXF, для преимущественной аутентификации HTTP?
  • 1Я пытаюсь сделать простое приложение, которое дает вам возможность сделать телефонный звонок
  • 2Регулярное выражение для String.Format-подобной утилиты
  • 1Как я могу добавить значения из массива в объект?
  • 1Формирование списка HTML из строки в php
  • 1Как изменить ключ и массив вместе?
  • Возникли проблемы при создании третьего столбца в этом HTML-коде. Как это сделать?
  • 1Не может запрашивать таблицы в глобальном экземпляре Cosmos Fi-Lab из PHP
  • Когда именно происходит предварительная обработка заголовочного файла c ++
  • 1разбить файл фаста и переименовать на основе первой строки
  • 1IE11 Ожидаемый идентификатор, ошибка строки или числа
  • Оценка строковых констант из перечислений в Intellisense
  • 1Как изменить make js button l с такой же функцией, как jsf-button?
  • 1Взаимодействие с всплывающими окнами с использованием селена в Python
  • 1Как я могу использовать токены CSRF, предоставляемые платформой play (play-2.2.3) с PHP-интерфейсом?
  • Как читать только одну строку из JSON с AngularJS
  • Не можете получить доступ к элементам Viewbag в MVC, используя Razor (CSHTML)?
  • Оператор if / else в angularjs
  • 1redirect_uri_mismatch в eauth yii2
  • 1Как вызвать диалог Polymer из функции javascript
  • 1Как я могу поставить тост в Runnable службы?
  • 1Панды — Как определить нанс внутри функции применения?
  • 2Расшифруйте объект в AWS S3, не загружая его в локальную систему

Настройка мониторинга apache

Теперь настроим мониторинг apache в zabbix server. Как обычно, я подготовил шаблон с итемами и триггерами, которые посчитал полезными. Скачиваем его — zabbix-apache-template.xml.

Обратите внимание на элемент, который забирает страницу со статусом. Его url я реализовал через макросы:

  • {$S_HOST} — название виртуального хоста
  • {$S_PATH} — путь к странице со статистикой
  • {$S_PORT} — порт сервера apache, на котором работает статистика

Вот как выглядят настройки макроса на типичном сайте с bitrixenv.

Так же обращаю внимание на итемы проверки количества рабочих процессов и занимаемой виртуальной памяти. Для проверки процессов указан пользователь bitrix, от которого работают все воркеры

В случае проверки памяти указан пользователь root, так как основной процесс запущен от него. А все воркеры используют разделяемую память. Ее суммарный объем, особенно когда воркеров много, огромен и представляет из себя нереальную цифру. Отслеживать ее нет никакого смысла.

Так как apache обычно работает в роле бэкенда, у него минимум триггеров, как и у php-fpm. Я сделал 2:

  1. Apache service not work — предупреждение о том, что системный процесс web сервера apache не запущен.
  2. Failed to fetch apache server status page — триггер срабатывает, если не получается загрузить страницу со статистикой.

Добавил еще пару графиков. Сами на них посмотрите. Вот в общем-то и все. После настройки шаблона для мониторинга apache, прикрепите его к хосту, не забудьте указать макросы и ждите поступления данных.

На это про мониторинг apache в zabbix все. Дальше идет пример готового Dashboard.

Общая конфигурация и поддержка сети сайтов #Общая конфигурация и поддержка сети сайтов

Для работы WordPress на nginx вам потребуется настроить обработчик PHP (backend), это может быть php-fpm, php-cgi или fastcgi. Оптимальным и простым в установке вариантом является использование php-fpm, который поддерживается начиная с PHP 5.3

Основной файл конфигурации

Обычно это /etc/nginx/nginx.conf , но может и располагаться и в другом месте в зависимости от вашего дистрибутива операционной системы и источника пакетов nginx.

Ниже будут перечислены только те директивы, значение которых может непосредственно влиять на работу WordPress. Ваш дистрибутив должен предоставлять файл конфигурации обеспечивающий базовую работу nginx, вам следует только перепроверить его на директивы, перечисленные ниже. Строки в конфигурации начинающиеся с # являются комментариями.

Настройка PHP обработчика может быть произведена так (как в глобальном контексте http {} так и для каждого сайта в контекстах server {} , настройки должны соответствовать тем, что указаны в настройках директивы listen пула (pool) для php-fpm

Во многих дистрибутивах конфигурации для отдельных сайтов (контекст ) вынесены в папку sites-available, на которые создаются символические ссылки в папке sites-enabled. Конфигурации включенных сайтов загружаются в конце nginx.conf директивой

Некоторые полезные директивы для конфигурации сайта

server {
# Это адрес сайта
    server_name example.com;
# Путь к папке с файлами сайта (корню)
    root /var/www/example.com;
# Файл индекса сайта.
    index index.php;
# А вот показ индекса файлов в папках без файла-индекса отключим
    autoindex off;
# Журнал доступа может быть записан в отдельный файл с отложенной записью
access_log  /var/log/jinx/www-example.com.log main buffer=2k flush=30s;
# А для некоторых файлов журнал доступа можно и вовсе отключить
location = /favicon.ico {
    log_not_found off;
    access_log off;
}
location = /robots.txt {
    allow all;
    log_not_found off;
    access_log off;
}

# Закроем доступ к скрытым файлам (начинаются с точки)
location ~ /\. {
    deny all;
}

# Вот так можно закрыть доступ к папке кеша (плагинов)
location ~ ^/wp-content/cache { deny all; }

# Запрет выполнения PHP в папках для загруженных файлов
location ~* /(?:uploads|files)/.*\.php$ {
    deny all;
}
# А директивы ниже показывают как можно установить заголовки кеширования для статических ресурсов (а также изменить сжатие gzip для некоторых из них)
location ~* ^.+\.(jpg|jpeg|png|ico|gif|swf|webp|srv)$ { expires 3w; gzip off; }
location ~* ^.+\.(css|js)$ { expires 7d; add_header Vary Accept-Encoding; }
location ~* ^.+\.(eot|ttf|woff|woff2)$ { expires 92d; add_header Vary Accept-Encoding; }

# Не забываем добавить обработчик для PHP
location ~ \.php$ {
 include fastcgi.conf;
 fastcgi_intercept_errors on;
 fastcgi_param  SCRIPT_FILENAME  $root$fastcgi_script_name;
# Должен соответствовать имени, определенному в примере директивы upsteam выше.
 fastcgi_pass php;
        }
# Ну и наконец, правила для "красивых постоянных ссылок"
location / { try_files $uri $uri/ /index.php?$args; }
# поближе к закрытию контекста server
}

Обязательно убедитесь в том, что в php.ini установлено значение константы

это предотвратит исполнение иных (без расширения .php) файлов, возможно содержащих PHP код, возможным злоумышленником.

Много других рецептов и хитростей по конфигурированию nginx можно посмотреть например здесь: https://www.nginx.com/resources/wiki/start/topics/recipes/wordpress/

Конфигурация для сети сайтов

С тех пор, как установка сети сайтов стала частью WordPress (а не отдельным пакетом WPMU), дополнительные правила для nginx не требуются, вам следует лишь иметь идентичные блоки server{} для всех сайтов вашей сети, вы можете создать отдельный файл и включать его в конфигурации сайтов директивой e. Переопределяя лишь и если вам нужно — .

Если же ваша сеть сайтов имеет общий домен, то вы можете разместить её на одном виртуальном сервере, с одним блоком конфигурации .

Директива будет работать с любым доменом третьего уровня в домене example.com.

Внимание: вы можете оставить комментарий обратной связи к этой статье. Если данная статья показалась вам неполной или вы нашли неточности, оставьте нам сообщение используя форму ниже

Если данная статья показалась вам неполной или вы нашли неточности, оставьте нам сообщение используя форму ниже.

Также вы можете поучаствовать в составлении и дополнении документации на русском языке.Подробнее тут.

Доступ к сайту по sftp

Настройка сервера почти завершена. Если вы администратор и единственный пользователь, то больше можно ничего не делать. Вы и так сможете загрузить на сервер все что нужно тем или иным способом. Если же вы будете передавать управление сайтами другим людям, им нужен доступ к директории с исходниками сайта. Раньше для этих целей повсеместно использовали ftp. Если вы хотите так сделать, у меня есть статья по настройке ftp сервера vsftpd.

Я же предлагаю использовать sftp по нескольким причинам:

  1. Он безопаснее.
  2. Его быстрее настроить.
  3. Не надо отдельно настраивать firewall.

Статью по настройке sftp доступа я уже тоже писал, все подробности там. Здесь без комментариев выполним необходимые действия.

Создаем пользователя для подключения к сайту. Я обычно использую имя пользователя пересекающееся с названием сайта. Так удобнее управлять.

# useradd -s /sbin/nologin hl.zeroxzed.ru
# passwd hl.zeroxzed.ru

Открываем конфиг ssh по пути /etc/ssh/sshd_config и комментируем там одну строку, добавляя далее несколько новых.

#Subsystem sftp /usr/libexec/openssh/sftp-server
Subsystem sftp internal-sftp
Match User hl.zeroxzed.ru
ChrootDirectory /web/sites/hl.zeroxzed.ru
ForceCommand internal-sftp

Перезапускаем службу sshd.

# systemctl restart sshd

Этого уже достаточно, чтобы вы могли подключиться к сайту, к примеру, с помощью программы winscp. Если что-то пойдет не так и будут какие-то ошибки, то смотреть подробности нужно в логе /var/log/secure. Но тут возникает много нюансов с правами к файлам и директориям. Дальше я расскажу, как их аккуратно и грамотно разрулить, чтобы у нас не было проблем с дальнейшей работой сайтов от разных пользователей.

Apache

Для поддержки файла .htaccess, который используется многими сайтами, необходимо установить и настроить веб-сервер Apache.

Устанавливаем apache и модуль для php:

apt-get install apache2 libapache2-mod-php

Заходим в настройки портов:

vi /etc/apache2/ports.conf

И редактируем следующее:

Listen 8080
#<IfModule ssl_module>
#       Listen 443
#</IfModule>
#<IfModule mod_gnutls.c>
#       Listen 443
#</IfModule>

* мы настроили прослушивание на порту 8080, так как на 80 уже работает NGINX. Также мы закомментировали прослушивание по 443, так как и он будет слушаться NGINX.

Теперь открываем настройку следующего модуля:

vi /etc/apache2/mods-available/dir.conf

И добавляем впереди индексных файлов index.php:

<IfModule dir_module>
    DirectoryIndex index.php index.html …
</IfModule>

* если не указан конкретный скрипт, сначала веб-сервер пытается найти и запустить index.php, затем index.html и так далее.

Открываем основной конфигурационный файл для apache:

vi /etc/apache2/apache2.conf

Рядом с опциями Directory дописываем:

<Directory /var/www/*/www>
    AllowOverride All
    Options Indexes ExecCGI FollowSymLinks
    Require all granted
</Directory>

* где Directory указывает на путь, для которого мы хотим задать настройки; AllowOverride — позволит переопределить все настройки с помощью файла .htaccess; Options задает некоторые настройки: Indexes разрешает списки каталогов, ExecCGI разрешает запуск cgi скриптов, Require all granted — предоставляет всем доступ к сайтам в данном каталоге.

Ниже допишем:

<IfModule setenvif_module>
    SetEnvIf X-Forwarded-Proto https HTTPS=on
</IfModule>

* этой настройкой мы при получении заголовка X-Forwarded-Proto со значением https задаем переменную $_SERVER равную on. Данная настройки критична для функционирования некоторых CMS.

Запрещаем mpm_event:

a2dismod mpm_event

* по умолчанию, apache2 может быть установлен с модулем мультипроцессовой обработки mpm_event. Данный модуль не поддерживает php 7 и выше.

Разрешаем модуль мультипроцессовой обработки mpm_prefork:

a2enmod mpm_prefork

Разрешаем модуль php:

a2enmod php7.4

* в данном примере установлен php версии 7.4.

Разрешаем модуль setenvif:

a2enmod setenvif

Разрешаем модуль rewrite:

a2enmod rewrite

В процессе включения модулей, если мы видим «Module … already enabled», значит модуль уже включен.

Разрешаем автозапуск Apache и перезапускаем службу:

systemctl enable apache2

systemctl restart apache2

Открываем браузер и вводим в адресную строку http://<IP-адрес сервера>:8080. Мы должны увидеть привычную страницу:

* в разделе Server API мы должны увидеть Apache.

NGINX + Apache

Ранее мы настроили связку nginx + php-fpm. Теперь настроим nginx + apache. Открываем конфигурационный файл nginx для сайта по умолчанию:

vi /etc/nginx/sites-enabled/default

Находим наш настроенный location для php-fpm:


        location ~ \.php$ {
            set $root_path /var/www/html;
            fastcgi_pass unix:/run/php/php7.4-fpm.sock;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME $root_path$fastcgi_script_name;
            include fastcgi_params;
            fastcgi_param DOCUMENT_ROOT $root_path;
        }

и меняем на:


        location ~ \.php$ {
            proxy_pass http://127.0.0.1:8080;
            proxy_redirect     off;
            proxy_set_header   Host             $host;
            proxy_set_header   X-Forwarded-Proto $scheme;
            proxy_set_header   X-Real-IP        $remote_addr;
            proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
        }

Проверяем и перезапускаем nginx:

nginx -t

systemctl restart nginx

Пробуем открыть в браузере http://<IP-адрес сервера> — должна открыться та же страница, что при проверке Apache (с добавлением 8080):

Apache Real IP

Запросы на apache приходят от NGINX, и они воспринимаются первым как от IP-адреса 127.0.0.1. На практике, это может привести к проблемам, так как некоторым сайтам необходимы реальные адреса посетителей. Для решения проблемы будем использовать модуль remoteip.

Создаем конфигурационный файл со следующим содержимым:

vi /etc/apache2/mods-available/remoteip.conf

<IfModule remoteip_module>
  RemoteIPHeader X-Forwarded-For
  RemoteIPTrustedProxy 127.0.0.1/8
</IfModule>

Активируем модуль:

a2enmod remoteip

Перезапускаем apache:

systemctl restart apache2

Для проверки настройки открываем браузер и вводим в адресную строку http://<IP-адрес сервера>, где откроется наша страница phpinfo. В разделе Apache Environment мы должны увидеть внешний адрес компьютера, с которого обращаемся к серверу в опции REMOTE_ADDR.

Установка

Разобьем установку на части. Установим базу данных PostgreSQL, интерпретатор PHP, далее web-сервер Nginx, ну и последним пунктом наше облако NextCloud:

Установка PHP

Для установки PHP для начала добавим более новый репозиторий:

После этого устанавливаем PHP и необходимые зависимости для NextCloud.

Установка Web-сервера Nginx

Для установки nginx для начала добавим, как и с PHP, более новый репозиторий:

Теперь можно установить наш web-сервер. Устанавливать будем сборку в которую включен модуль для проигрывания потокового видео с нашего сервера (поддержка модуля mp4). Открываем терминал и набираем:

Установка NextCloud

После всех пунктов выше приступим к установки нашего домашнего облака NextCloud. Для этого переходим в директорию :

Скачиваем последнюю версию NextCloud (на момент написания статьи версия NextCloud была 21.0.0), а также сразу распакуем и изменим права на директорию NextCloud:

Установка Nextcloud

Устанавливаем пакет unzip:

apt-get install unzip

Заходим на  и копируем ссылку на скачивание последней версии программы:

Переходим во временную папку и скачиваем исходник для установки, воспользовавшись скопированной ссылкой:

cd /tmp

wget https://download.nextcloud.com/server/releases/nextcloud-22.0.0.zip

* на момент обновления инструкции последняя версия была 22.

Распаковываем скачанный архив:

unzip nextcloud-*.zip

И переносим содержимое архива в каталог /var/www:

mv nextcloud /var/www

Задаем права доступа:

chown -R www-data:www-data /var/www/nextcloud

Открываем браузер и переходим по адресу https://nextcloud.dmosk.ru, где nextcloud.dmosk.ru — адрес облачного сервиса.

Задаем логин и пароль для администратора. В качестве базы данных выбираем MySQL/MariaDB (если предлагается выбор) и вводим в качестве логина, пароля и базы nextcloud.

Завершаем установку.

Оптимизируем работу базы данных:

sudo -u www-data php /var/www/nextcloud/occ db:convert-filecache-bigint

1 ответ

3

Лучший ответ

Из ваших журналов: Я вижу, nginx пытается подключиться к порту 5000 на одном компьютере, и он отказывается от соединений. Что работает на 5000 портов? Возможно, вам придется изучить это.

03 май 2016, в 17:42
Поделиться

Ещё вопросы

  • 1JDBC и MSSQL, похоже, обрезают большие поля
  • Две техники кэширования PHP
  • logstash: неизвестный параметр «index» для эластичного поиска
  • Изменение свойства компонента окна KendoUI
  • Триггер MySQL ПОСЛЕ ОБНОВЛЕНИЯ выполнение чрезвычайно медленно для таблицы 50000 строк
  • 2Привязка пользовательских свойств ядра EF FromSql
  • 2Сравнение двух полей коллекции монго с использованием драйвера c # в моно
  • 1Как преобразовать массив байтов в шестнадцатеричную строку?
  • 1AsyncTask отображение индикатора выполнения
  • Как сделать так, чтобы изображение занимало всю высоту и ширину div?
  • 2Как проверить, зашифровано ли MIME-сообщение или подписано с помощью Mimekit?
  • 1Высота разрыва строки в Android
  • Можно ли как-нибудь открыть ссылку на своем сайте (или перейти на другую страницу в целом) с помощью jQuery или JavaScript?
  • C ++ 11 equal_to и меньше
  • AngularJS множественное включение
  • 1IOError: Недопустимый аргумент с передачей clock () в
  • Как я могу объединить две таблицы MySQL в конкретном случае
  • Изменение размера шрифта с помощью jquery и css
  • Ошибка разбора запроса PUT
  • Контекстно-независимый класс C ++ TCP Server
  • 1Добавить (зависать) слушатель для ячейки сетки после первого присоединения сетки
  • 1Несколько обновлений imageView в Android с использованием асинхронных задач?
  • 1Spring Mockito TestNG — издевательства сохраняются во время испытаний
  • 1Ссылка на предыдущую строку при переборе данных
  • Как хранить таблицу с определенным столбцом, должен храниться в массиве и извлекать его в Angularjs (Mean Stack)
  • C ++ Универсальная переменная
  • Триггерная функция от объекта с помощью динамического ключа
  • 1Почему необходимо, чтобы getElementsByClassName работал, когда нужно выбрать только один класс?
  • Абстракция указателя и указателя на член класса данных
  • 1Java-апплет не может работать в CMD
  • 1PhantomJS Proxy при использовании Remote Webdriver?
  • 1Android AndEngine RegisterUpdateHandler переменная времени
  • ng-bind-html не удаляет & amp;
  • работа со всеми входами, без type = «checkbox»
  • 2Пул соединений для RestSharp
  • 1Отслеживание ссылок на экземпляры объектов
  • 2Инициирующее событие, когда элемент становится видимым с помощью ngIf.
  • Как использовать Arduino с Microsoft Visual Studio (из-за проблем с прекомпилятором #include_next)
  • 1Jetty 9: Как организовать обработчики и установитьWelcomeFiles
  • 1Как можно построить программу, которая использует GUI?
  • 2Как установить состояние управления в MVP
  • 1Как добавить фильтр диапазона в серверную часть vue-tables-2
  • 1Есть ли ошибка в этой программе? Расчет ПИ имитирующий метание дротиков JAVA
  • 2Чем отличается модель / бизнес-уровень / доступ к данным и репозитории в архитектуре MVC?
  • 1Не удалось найти свойство ‘android’ в корневом проекте
  • Как помешать Гуроби преобразовать Макс в Мин проб?
  • 1Как добавить число в начале каждой строки ?
  • 1PDO fetch и fetchAll с условным оператором не работает
  • 1сумма числа (бесконечный параметр) с использованием капорального npm javascript
  • 1Предыдущий и следующий месяц не работают должным образом

Вывод

Для скорости и производительности Nginx является очевидным выбором вместо Apache, но это не означает, что Apache не может обрабатывать некоторый трафик. Если вы планируете перейти на первую страницу Reddit в ближайшее время, вероятно, вам стоит взглянуть на получение более эффективного решения с Nginx и PHP-FPM.

Миграция вашего WordPress в Nginx не очень сложна, и конфигурация для Nginx, очень проста и удобна в доступе по сравнению с Apache.

Хотя там и нет модулей, подобных Apache, и вначале это может быть незнакомо, вы сможете найти им замену в большинстве случаев. Если нет, то в качестве резервного решения вы всегда можете проксировать старый сервер через ваш nginx для этой цели, если это необходимо.

Существует множество способов настройки обоих серверов, поэтому хорошее решение можно найти почти всегда, независимо от требований. На данный момент кажется, что Apache всегда будет выбором по умолчанию для широко доступного хостинга cPanel, благодаря инструменту настройки EasyApache, который поставляется вместе с ним.

В будущем, возможно, больше хостов примет инструменты Nginx cPanel, такие как Engintron, которые также предоставляют Nginx для cPanel.

На данный момент, если вы хотите переключиться на WordPress с поддержкой Nginx, вам нужно будет настроить Linux VPN на DigitalOcean, AWS или на другом хостинг-провайдере.

Заключение

Подведем итог того, что мы сделали:

  1. Настроили сервисы nginx, apache, php-fpm таким образом, чтобы они отдавали информацию о своем состоянии.
  2. С помощью zabbix агентов передали эту информацию на сервер.
  3. Используя зависимые элементы (dependent items) настроили парсинг метрик.
  4. Настроили на сервере мониторинга необходимые шаблоны и прикрепили их к наблюдаемым серверам.
  5. Собрали dashboard для мониторинга за веб сервером.

То есть выполнили весь комплекс действий для организации полноценного мониторинга web сервера в zabbix.

Одно из применений подобного мониторинга — выбор более быстрого хостинга для сайта. К примеру, мне некоторое время назад понадобилось сменить хостинг. Но как узнать, будет ли он быстрее текущего или нет. Характеристики примерно у всех одинаковые. Я просто взял тестовый период, настроил на сервере все, что мне нужно, в том числе мониторинг веб сервера, перенес туда сайт и понаблюдал сутки. Уже по времени отклика nginx и php-fpm мне стало понятно, что новый хостинг быстрее:

Время отклика страниц сайта и скорость их загрузки в целом тоже улучшились. Я однозначно понял, что надо переезжать и не ошибся.

Это пример из старой версии статьи, где показаны старые метрики и графики. Оставил его, так как он в целом информативен. Текущий мониторинг web сайта так же можно использовать для анализа производительности хостинга.

Онлайн курс по Linux

Если у вас есть желание научиться строить и поддерживать высокодоступные и надежные системы, рекомендую познакомиться с онлайн-курсом «Administrator Linux. Professional» в OTUS. Курс не для новичков, для поступления нужны базовые знания по сетям и установке Linux на виртуалку. Обучение длится 5 месяцев, после чего успешные выпускники курса смогут пройти собеседования у партнеров.

Что даст вам этот курс:

  • Знание архитектуры Linux.
  • Освоение современных методов и инструментов анализа и обработки данных.
  • Умение подбирать конфигурацию под необходимые задачи, управлять процессами и обеспечивать безопасность системы.
  • Владение основными рабочими инструментами системного администратора.
  • Понимание особенностей развертывания, настройки и обслуживания сетей, построенных на базе Linux.
  • Способность быстро решать возникающие проблемы и обеспечивать стабильную и бесперебойную работу системы.

Проверьте себя на вступительном тесте и смотрите подробнее программу по .

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

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