ngxtop — программа мониторинга nginx

Nginx — это легкий и быстрый сервер HTTP-сервер, а так же обратный прокси-сервер и почтовый прокси-сервер.
Он гораздо меньше нагружает систему, чем Apache, а так же позволяет проксировать через себя других Web сервера.

top для nginx или apache2

После того, как сервер nginx установлен и под ним запущены  сайты часто возникает необходимость отслеживать активность nginx в реальном масштабе времени. В принципе это можно сделать и при помощи широко распространенных систем мониторинга типа Nagios, Zabbix, Munin, но не всегда есть возможность и необходимость устанавливать эти системы.

Существует небольшая программа ngxtop которая позволяет осуществлять мониторинг быстро и изящно, в стиле широко известной программы тор. Она на самом деле очень похожа на top.

ngxtop осуществляет парсинг лог-файлов через заданный интервал времени и высвечивает настраиваемые результаты активности nginx в удобочитаемом виде. Если указать путь до access log файла apache — то будет мониторить и его.

Привязка доменов к дерикториям

Для тех же, кто не готов ограничится одним только доменом и хочет захостить на своём сервере несколько сайтов приглашаю продолжить ковыряться в nginx.

Давайте для начала создадим папки для будущих сайтов, например для и

В большинстве систем принято размещать все сайты в директории /var/www/ вы можете следовать этой логике. Разница с моим примером будет только в вписании этого пути в конфиги.

Читайте также:  Linux сервер — популярные Linux-дистрибутивы для сервера

Я же, переодически работая с в терминале моего мака привык, что проекты хранятся в домашней директории моего юзера в папке projects, в нашем случае ради семантичности — буду использовать директорию www. Плюсом такого подхода будет то, что создав в системе юзера и заходя под ним на ftp вы по умолчанию попадаете в его домашнюю директорию, где нас и будет поджидать та самая папочка www со всеми нашими сайтами.

И так приступим, создаём папки сайтов:

sudo mkdir -p /home/user/www/ sudo mkdir -p /home/user/www/

Флаг -р ставим для того, что бы создавалась иерархия каталогов по указанному пути.

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

sudo chmod -R 755 /home/user/www

Теперь давайте расскажем nginx’у что вы создали новый хост и привяжем к данному хосту домен. Сделаем мы это на примере стандартного хоста, для начала просто скопируем его и в имя вставим ваш домен:

sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/

Где user это имя вашего юзера у меня это ubuntu созданный амазоном по умолчанию.

Далее внесём правки в этот документ с указанием расположения папки для этого домена.

sudo vi /etc/nginx/sites-available/

Очищенный от комментов файл будет выглядеть следующим образом:

server { listen 80; listen [::]:80; root /home/user/www/; index ; server_name ; location / { try_files $uri $uri/ =404; } }

Обратите внимание, здесь не подключени ни php ни другие языки разработки, вы можете задать их как глобально для всех сайтов, так и вписывать здесь-же для каждого сайта отдельно. Таким образом один сайт может спокойно работать на новой версии php7 а другой ветеран на своём php5 или вообще на

Конечную директорию я тоже не просто так изменил со стандартного html на public. Таким образом я заложил возможность в дальнейшем без бубна закинуть Laravel в корневую директорию сайта и быстро приступить к разработке без дополнительной настройки окружения.

Читайте также:  Как работают уведомления о контакте COVID-19 на IOS 14

Теперь создадим симлинк на новый виртуальный хост:

sudo ln -s /etc/nginx/sites-available/ /etc/nginx/sites-enabled/

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

sudo nano /etc/nginx/

Необходимо найти и раскоментировать следующую строку (если по умолчанию там 32, замените на 64):

server_names_hash_bucket_size: 64;

Всё! Второй сайт делаем по точной аналогии. Затем перезагружаем nginx.

sudo service nginx restart

Далее я буду пополнять заметку интересными настройками и командами для nginx. Заметка будет обновляться по мере появления новых задач в моей практике.

Перезапуск сервера

Теперь, когда конфигурационный файл готов, необходимо сделать на него символическую ссылку из каталога /etc/nginx/sites-enabled/, чтобы при перезапуске Nginx подключил его содержимое в свою конфигурацию:

# ln -s /etc/nginx/sites-available/myvhost /etc/nginx/sites-enabled/myvhost

Далее, создайте каталог, определённый в качестве корня документов сервера параметром root:

# mkdir /var/www/myvhost

Осталось перезапустить сервер:

# /etc/init.d/nginx restart

И, если все настройки были выполнены без ошибок, вы сможете подключиться к вашему первому виртуальному серверу Nginx при помощи веб-браузера и увидеть пустой индекс файлов корневого каталога сервера. Попробуйте разместить пару статических html-файлов в каталоге /var/www/myshost и затем получить доступ к ним из вашего браузера.

В следующей статье мы рассмотрим конфигурацию SSL-сервера в Nginx.

Настройка ротации лог-файлов с помощью logrotate

Полезным делом было бы настроить ротацию логов на VDS для нашего сайта. Делается это довольно просто в Ubuntu при помощи утилиты logrotate. Ставим logrotate:

Теперь создадим конфиг для ротации логов нашего сайта — /etc/logrotate.d/ со следующим содержимым:

Читайте также:  Я выбрал лучшие текстовые редакторы для macOS

Написано здесь следующее: для и будет ежедневная ротация логов (логи будут ротироваться даже если файл будет пуст), будет храниться последние 10 снапшотов логов, кторые будут зажаты в gzip, файл архива будет с правами 640:: После обработки будет вызван скрипт, который скажет nginx, что пора переоткрыть файлы логов (это важно). Для все по аналогии, за исключением что команда на переоткрытие логов будет послана в php-fpm. На всякий случай проверьте свои пути к pid файлам в настройках nginx и php-fpm.

Теперь проверяем как работает ротация:

Если ошибок нет, то ставим в ротацию:

4 комментария на «Настройка ротации лог-файлов с помощью logrotate»

[…] Настройка ротации лог-файлов с помощью logrotate. […]

Ваша инструкция работает, но есть одна ошибка — после ротации nginx не пишет в новый файл , а пишет в старый, но уже переименованный Перерыл кучу сайтов, но не нашёл ответа. Проблема появилась после upgrade OS. Ubuntu 14, nginx 1.8

Скорее всего проблема в nginx. На USR1 nginx раньше должен был переоткрыть логи, может сейчас какой другой сигнал для этого юзается.

Чтобы решить эту проблему поправьте конфиг вот так:

postrotate invoke-rc.d nginx rotate >/dev/null 2>&1 endscript

Источник