AWStats — Формирует статистику в графике дял веб, FTP или почтового сервера
AWStats является программным обеспечением с свободным и открытым исходным кодом для создания статистики по веб-сайтам, FTP или почтового сервера, в графическом виде. Вы можете использовать этот инструмент из командной строки или как CGI, чтобы увидеть всю информацию из файлов журналов. Он работает со всеми основными веб-серверами, прокси, почтовых и FTP серверов. Он написан на Perl. Таким образом, может работать практически на любой операционной системе.
Операционная система: Кросс-платформенная / Perl |
Поддерживаемые базы данных: Logfile |
метод отслеживания: лог журналы сервера |
Лицензия: GPL |
Онлайн сервис для анализа веб-логов Apache
Пример журнала:
Очевидно, что эти записи весьма объёмны, поскольку содержат сведения об отдельных запросах. Например, если пользователь открывает страницу вашего сайта, на который используется один файл стилей CSS, один JavaScript файл и пять картинок, то в общей сложности к серверу будет сделано восемь запросов (HTML код, CSS код, JavaScript код и 5 запросов для получения изображений). Вся эта информация сохраняется в журналах веб-сервера.
Вручную можно найти, например, информацию об определённом IP адресе, но для любых статистических исследований, нужно применять специальные программы.
Пример такой программы — goaccess. Вообще-то, это программа для Linux — там она устанавливается одной командой. Но не спешите обламываться: во-первых, если немного заморочиться, то можно её установить и в Windows, а во-вторых, есть онлайн сервис, куда вы загружаете свои логи, а он вам выводит полный отчёт.
Начнём с онлайн сервиса, его адрес: https://suip.biz/ru/?act=goaccess (всё абсолютно бесплатно и без регистраций).
Данный онлай сервис извлекает всю возможную информацию и проводит анализ логов Apache.
Для каждого лога Apache выводится такая информация как:
- сводные данные (количество запросов, количество неудачных запросов, общее количество посетителей, количество запрошенных файлов, объём переданных данных в Гигабайтах, количество ошибок «404 Страница не найдена» и прочее)
- детальная информация о датах посещений и количестве хитов, посетителей и переданных данных за каждую дату
- запрошенные файлы с возможностью сортировать список по частоте запросов или по количеству переданных данных
- статистика запросов с возможностью сортировать список по частоте запросов или по количеству переданных данных
- запросы, вызвавшие ошибку «404 Страница не найдена»
- посетители сделавшие наибольшее количество запросов к серверу с информацией о стране и городе (с возможностью сортировки данных ко количеству переданной информации)
- об операционных системах с разделением на версии
- о веб-браузерах с разделением на версии
- о распределении активности на сервере по часам
- о страницах, с которых пришли посетители
- о сайтах, с которых пришли посетители
- поисковые слова с которых пришли из Google
- HTTP коды статусов (200, 404 и другие)
- расположение посетителей по странам и населённым пунктам
Поддерживаемые форматы логов:
- Комбинированный формат логов
- Комбинированный формат логов с Виртуальными хостами
- Обычный формат логов
- Обычный формат логов с Виртуальными хостами
- Расширенный формат логов W3C
- Родной формат логов Squid
- Amazon CloudFront Web Distribution
- Облачное хранилище Google
- Amazon Elastic Load Balancing
- Amazon Simple Storage Service (S3)
Всё до безобразия просто: скачиваете с хостинга лог, который хотите изучить, здесь присоединяете файл и отправляете его — мгновенно получаете готовый отчёт.
Что грузит систему
Даже, если мы увидим, что на веб-сервере заканчивается оперативная память или загружен процессор, мы не сможем найти источник проблемы, которым, чаще всего, является некорректно работающий скрипт. Поэтому, определяем, какой файл на сервере вызывает нагрузку.
Использование lsof
lsof — утилита командной строки, которая отображает какие файлы используются процессами. Она позволит определить, к каким скриптам идет обращение со стороны веб-сервера. Для начала, необходимо установить lsof.
а) В CentOS / Red Hat:
yum install lsof
б) В Ubuntu / Debian:
apt-get install lsof
Теперь можно выполнить следующие команды:
lsof -c httpd
lsof -c php-fpm
* первая команда покажет, к каким файлам обращается apache, вторая — php-fpm (часто можно увидеть в связке с nginx).
Анализ error-логов
Анализ логов ошибок позволит не только обнаружить проблемы в работе сайта, но и найти причину его медленной работы. По умолчанию, логи находятся в каталоге /var/log. Если мы не меняли расположение логов, запускаем следующие команды:
tail -f /var/log/nginx/error.log
* лог ошибок nginx.
tail -f /var/log/php-fpm/error.log
* лог ошибок php-fpm.
tail -f /var/log/httpd/error_log
* лог ошибок apache в CentOS.
tail -f /var/log/apache2/error_log
* лог ошибок apache в Ubuntu.
В первую очередь, нужно обратить внимание на повторяющиеся ошибки — они могут быть причиной проблем. Лучше всего, добиться полного отсутствия ошибок, внеся исправления в работу сайта
Возможно, это устранит проблемы производительности.
6: Установка и настройка Nginx
Теперь нужно установить Nginx и настроить виртуальные хосты для доменов example.com и sample.org.
Установите Nginx:
Удалите симлинк стандартного виртуального хоста, он в дальнейшем не понадобится.
Теперь нужно создать новые виртуальные хосты для сайтов. Сначала создайте каталоги:
Затем создайте файлы index и phpinfo():
Теперь создайте виртуальный хост для example.com.
В этом файле создайте блок server для первого сайта, example.com. Директива default_server сделает этот файл виртуальным хостом по умолчанию. Он будет обрабатывать HTTP-запросы, которые не соответствуют другим виртуальным хостам.
Вставьте в файл следующий код:
Сохраните и закройте файл. Теперь создайте виртуальный хост для sample.org.
Вставьте в файл:
Сохраните и закройте файл. Чтобы включить сайты, создайте симлинки:
Проверьте синтаксис Nginx:
Если ошибок нет, перезапустите веб-сервер:
Теперь попробуйте открыть в браузере файлы phpinfo() для виртуальных хостов Nginx.
Проверьте раздел PHP Variables.
Строка должна показывать nginx (это значит, что файлы обслуживаются сервером Nginx). В должен находиться путь к root-каталогу сайта.
Теперь веб-сервер Nginx установлен и поддерживает два сайта.
Настройка и основные команды
Если вы используете стандартный лог веб-сервера, то настраивать ничего и не нужно:-).
Стандартные типы логов, которые поддерживает GoAccess:
- COMBINED — Combined Log Format,
- VCOMBINED — Combined Log Format with Virtual Host,
- COMMON — Common Log Format,
- VCOMMON — Common Log Format with Virtual Host,
- W3C — W3C Extended Log File Format,
- SQUID — Native Squid Log Format,
- CLOUDFRONT — Amazon CloudFront Web Distribution,
- CLOUDSTORAGE — Google Cloud Storage,
- AWSELB — Amazon Elastic Load Balancing,
- AWSS3 — Amazon Simple Storage Service (S3)
Для вывода статистики в консоль используется команда:
Для вывода в HTML необходимо указать имя файла
Также поддерживается вывод в JSON и CSV таблицу. Плюс есть возможность сделать real-time отчет, который обновляется в реальном времени, но это мы рассмотрим далее.
Что такое Nginx
Nginx (NGINX, Engine-X, «Энжин-кс») — это бесплатный веб- и почтовый прокси-сервер с непоточной (асинхронной) архитектурой и открытым кодом.
Разработку Nginx начал в 2002 году Игорь Сысоев для Rambler. А в 2004 году он стал доступен широкому кругу пользователей . С 2011 года серверное ПО начала выпускать уже собственная фирма Игоря, которая спустя 2 года запустила расширенную платную версию продукта (Nginx Plus). Весной 2019 года Nginx была выкуплена крупным американским девелопером F5 Networks.
Nginx работает на ОС Unix-типа и был успешно протестирован на OpenBSD, FreeBSD, Linux, Mac OS X, Solaris. На ОС Windows он стал доступен после выпуска бинарной сборки 0,7.52.
На данный момент функционалом пользуются такие известные платформы: Rambler, Begun, Yandex, SourceForge.net, WordPress.com, vkontakte.ru. Статистика показывает, что Nginx используют 22,3 млн веб-сайтов и 2,03 млн дополнительных активных сайтов.
Настройка балансировки нагрузки между приложениями
В этом разделе мы настроим механизм отказоустойчивой обработки с помощью распределения обработки между локальным движком сайта и удаленными, которые размещаются на двух других серверах. Для простоты будем считать, что используется PHP-FPM, хотя принципиальной разницы нет. Топология обработки запросов приведена на следующем изображении:
Запрос от пользователя, который поступил на сервер 1, обрабатывается Nginx следующим способом:
- если возможно исполнение на локальном PHP-FPM, запрос исполняется на нем;
- если локальный PHP-FPM недоступен, запрос передается на один из доступных серверов напрямую в PHP-FPM (мимо Nginx, который на них тоже выполняется).
В приведенной выше схеме обработки предполагается, что приложение размещено в безопасной локальной сети. В случае взаимодействия через публичную инфраструктуру лучше организовать резервный путь обработки через Nginx с сертификатом SSL и выделенным портом для обработки трафика приложения. В этом руководстве мы рассматриваем только настройку отказоустойчивой обработки в безопасной сети.
Предполагается, что вы уже выполнили настройку серверов LEMP по руководству, приведенному . К этому момент у вас должны быть развернуты три сервера с Nginx и PHP-FPM.
Настройка PHP-FPM
CentOS. В файле измените на , где — , , в зависимости от сервера. После внесения изменений перезапустите PHP-FPM командой .
Если вы установили из репозитория Remi другую версию PHP, сделайте замену аналогичным способом с учетом именования.
Debian 9. В файле измените на , где — , , в зависимости от сервера. После внесения изменений перезапустите PHP-FPM командой .
Ubuntu 18. В файле измените на , где — , , в зависимости от сервера. После внесения изменений перезапустите PHP-FPM командой .
Настройка Nginx
Замените в конфигурации Nginx фрагмент:
upstream php { server unix:...; }
на:
upstream php { server 10.0.0.X:20000; server 10.0.0.Y:20000 backup; server 10.0.0.Z:20000 backup; }
где — октет, соответствующий локальному адресу, например, для сервера — , а , — октеты адресов двух оставшихся серверов в случайном порядке, например, для сервера :
upstream php { server 10.0.0.1:20000; server 10.0.0.2:20000 backup; server 10.0.0.3:20000 backup; }
Проверьте настройки Nginx и перезапустите его:
sudo nginx -t && systemctl restart nginx
Настройка сжатия Gzip
Сжатие контента необходимо, чтобы уменьшить размер загружаемых браузером данных. Это ускоряет загрузку сайта, но добавляет дополнительную нагрузку на процессор сервера. Чтобы включить сжатие в секции http нужно добавить параметр:
gzip on
Эту директиву можно использовать также в секции server, тогда она будет работать только для указного виртуального домена. Дальше настраиваем параметры сжатия настраиваются с помощью следующих опций:
- gzip_min_length — минимальная длина страницы в байтах, при которой нужно использовать сжатие, например, 1000 (1 кб)
- gzip_proxied — нужно ли сжимать проксированые запросы, any говорит, что нужно сжимать все.
- gzip_types — типы файлов, которые нужно сжимать, например: text/plain application/xml application/x-javascript text/javascript text/css text/json;
- gzip_disable «msie6» — в IE 6 сжатие не поддерживается, поэтому отключаем.
- gzip_comp_level — уровень сжатия, доступны варианты от 1 до 10. 1 — минимальное, 10 — максимальное сжатие.
Piwik приложение для web аналитики
Piwik является свободным и открытым исходным кодом веб-аналитики приложения, написанное на PHP / MySQL. Оно отслеживает интернет-посещение одного или нескольких веб-сайтов и отображает отчеты об этих посещений для анализа с помощью веб-браузера. Piwik может отслеживать, сколько люди тратят на сайт, данные необходимы для электронной коммерции. Умеет анализировать цели установленные на действия, которые желательно получить от посетителей, такие как посещения определенных страниц или покупки продукта. Piwik будет отслеживать, сколько посещений и достигнутых целей было получено. Бесплатное мобильное приложение предоставляет, возможность пользователям получить доступ к данным аналитики с телефона. Piwik имеет множество функций, в том числе коммерческую поддержку. Я рекомендую этот продукт как альтернативу Google Analytics.
Операционная система: Кросс-платформенная / PHP + MySQL |
Поддерживаемые базы данных: MySQL |
Метод отслеживания: файлы журнала pagetag или веб-JavaScript или PHP |
Лицензия: GPL v3 |
7: Настройка Nginx для поддержки виртуальных хостов Apache
Теперь нужно создать дополнительный хост Nginx для нескольких доменов. Запросы к этим доменам будут проксироваться на Apache.
Создайте новый файл:
Добавьте в него следующий блок кода. Он задаёт имена сайтов Apache и проксирует их запросы. В proxy_pass укажите внешний IP-адрес сервера.
Сохраните и закройте файл. Создайте символьную ссылку:
Проверьте настройки:
Перезапустите Nginx, если ошибок не обнаружено.
Найдите раздел PHP Variables. Переменные SERVER_SOFTWARE и DOCUMENT_ROOT подтверждают, что запрос был обработан Apache. Переменные HTTP_X_REAL_IP и HTTP_X_FORWARDED_FOR добавлены сервером Nginx и отображают внешний IP-адрес текущей машины.
Теперь Apache использует Nginx в качестве обратного прокси-сервера. Теперь нужно установить переменную Apache, REMOTE_ADDR. Она позволяет скрыть прокси-сервер.
11: Обслуживание статических файлов с помощью Nginx
Когда Nginx проксирует запросы доменов Apache, он отправляет Apache запрос каждого файла. Nginxбыстрее, чем Apache, обслуживает статические файлы (изображения, JavaScript, стили). Отредактируйте виртуальный хост apache, чтобы настроить отправку PHP-запросов.
Откройте файл apache:
Добавьте два блока location в каждый блок server и отредактируйте существующие блоки location.
Директива try_files позволяет Nginx просматривать файлы в document root и сразу обслуживать их. Если у файла расширение .php, запрос будет передан Apache. Если файла нет в document root, запрос будет передан Apache.
Сохраните и закройте файл. Проверьте код на наличие ошибок:
Перезапустите Nginx:
Убедитесь, что всё работает. Откройте лог-файлы Apache (/var/log/apache2) и просмотрите запросы GET для файлов info.php сайтов test.io и foobar.net. Команда tail выведет последние строки файла, а флаг –f покажет его изменения.
Примечание: Директива location ~ /\. очень важна. Она блокирует обслуживание файлов htaccess и .htpasswd.
ApacheNGINXUbuntuUbuntu 18.04
Статистика веб-сервера
Для веб-серверов можно воспользоваться служебной страницей просмотра статуса. Она может показать статистику запросов к веб-серверу.
Apache
Для Apache необходим модуль mod_status, который идет в комплекте с данным веб-сервером. Проверить подключение модуля можно в конфигурационном файле httpd.conf (в разных Linux системах может находится в различных каталогах).
По умолчанию, server-status не активен. Создаем конфигурационный файл.
Для CentOS / Red Hat:
vi /etc/httpd/conf.d/server-status.conf
Для Ubuntu / Debian:
vi /etc/apache2/sites-enabled/server-status.conf
* где 2 — используемая версия apache.
В открытый конфигурационный файл добавим:
ExtendedStatus on
<VirtualHost *:80>
servername 111.111.111.111
<Location /server-status>
Sethandler server-status
</Location>
</VirtualHost>
<Location /server-status>
SetHandler server-status
</Location>
* где 111.111.111.111 — IP-адрес нашего веб-сервера; 80 — порт, на котором слушает apache.* в данном примере мы прописали два варианта просмотра статистики: первый — обращение в браузере к серверу по IP-адресу + /server-status; второй — обращение к любому сайту + /server-status. Разные способы оправданы для разных настроек самих сайтов и используемых CMS.
Проверим корректность внесенных данных и перезапустим веб-сервер apache:
apachectl configtest
systemctl restart httpd || systemctl restart apache2
Теперь открываем браузер и вводим название сайта + /server-status, например, http://www.dmosk.ru/server-status. Или обращаемся к серверу по IP-адресу, например, http://111.111.111.111/server-status.
NGINX + PHP-FPM
Открываем конфигурационный файл nginx:
vi /etc/nginx/nginx.conf
В секцию http добавляем:
…
server {
listen 80;
server_name 111.111.111.111;
location /server-status {
stub_status on;
}
}
…
* где 111.111.111.111 — IP-адрес нашего веб-сервера.
Проверяем корректность настройки и перезапускаем nginx:
nginx -t
systemctl restart nginx
Открываем браузер и заходим на страницу 111.111.111.111/server-status. Мы должны увидеть статистику использования сервера:
Теперь настроим статистику для php-fpm. В конфигурационном файле nginx в нашу директиву server добавим:
vi /etc/nginx/nginx.conf
…
server {
listen 80;
server_name 78.110.63.31;
location /server-status {
stub_status on;
}
location /status {
access_log off;
include fastcgi_params;
#fastcgi_pass unix:/var/run/php-fpm/php5-fpm.sock;
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
…
* обратите внимание на закомментированную строку и строку под ней. В зависимости от того, как настроен php-fpm (слушает на порту или через сокетный файл) необходимо настроить nginx
В данном примере подразумевается, что php-fpm слушает на 9000 порту.
Открываем конфигурационный файл php-fpm:
vi /etc/php-fpm.d/www.conf
Снимаем комментарий со следующей строки:
pm.status_path = /status
Проверяем настройку nginx, перезапускаем его и php-fpm:
nginx -t
systemctl restart nginx
systemctl restart php-fpm
Открываем браузер и заходим на страницу 111.111.111.111/server-status. Мы должны увидеть статистику использования сервера:
Нагрузка на сервер
Анализ нагрузки стоит начать с общих метрик — потребление процессорного времени, памяти, нагрузки на сеть и дисковую систему.
Нагрузка по процессам
Проверить, нагружен ли сервер, а также понять, какой именно процесс больше всего потребляет ресурсов можно с помощью команд:
top
htop
atop
* по сути, все 3 вышеперечисленные команды выдают одну и туже информацию в разном виде. Какой-то из них может оказаться удобнее пользоваться. Утилита top встроена в систему, для использования остальных необходимо установить одноименные пакеты.
Оперативная память
Для определения объема свободной и занимаемой памяти можно воспользоваться командой:
free
* предыдущие команды тоже показывали утилизацию памяти, но кому-то команда free может показаться нагляднее.
Нагрузка на диск
Для определения нагрузки на дисковую систему, используем утилиту iotop. Сначала ее нужно установить.
а) На системы Debian / Ubuntu:
apt-get install iotop
б) На системы Red Hat / CentOS:
yum install iotop
После выполняем следующую команду:
iotop
Сетевая активность
Для измерения нагрузки на сеть необходимо установить утилиту nload.
а) В CentOS / Red Hat:
yum install nload
б) В Ubuntu / Debian:
apt-get install nload
После установки, запускаем утилиту командой:
nload -ni eth0
* в данном примере будет запущена статистика для использования сетевого интерфейса eth0.
Настройка журнала ошибок
Nginx записывает сообщения об ошибках приложения и общих ошибках сервера в файл журнала ошибок. Если вы испытываете ошибки в своем веб-приложении, журнал ошибок — это первое место, с которого можно начать поиск и устранение неисправностей.
Директива включает и устанавливает расположение и уровень серьезности журнала ошибок. Он имеет следующую форму и может быть установлен в блоке , или :
Параметр устанавливает уровень ведения журнала. Ниже перечислены уровни в порядке их серьезности (от низкого до высокого):
- — сообщения.
- — Информационные сообщения.
- — Уведомления.
- — Предупреждения.
- — Ошибки при обработке запроса.
- — Критические проблемы. Требуется быстрое действие.
- — Оповещения. Действия должны быть предприняты немедленно.
- — Чрезвычайная ситуация. Система находится в непригодном для использования состоянии.
Каждый уровень журнала включает в себя более высокие уровни. Например, если вы установите уровень журнала , чтобы , Nginx будет также регистрировать , , и сообщения.
Если параметр не указан, по умолчанию используется .
По умолчанию директива определена в директиве внутри основного файла nginx.conf:
/etc/nginx/nginx.conf
Как и в случае с журналами доступа, рекомендуется создать отдельный файл журнала ошибок для каждого блока сервера, который переопределяет настройку, унаследованную от более высоких уровней.
Например, чтобы настроить журнал ошибок domain.com на вы должны использовать:
Каждый раз, когда вы изменяете файл конфигурации, вам необходимо перезапустить службу Nginx, чтобы изменения вступили в силу.
Расположение логов по умолчанию
Большинство файлов логов Linux находятся в папке /var/log/ вы можете список файлов логов для вашей системы с помощью команды ls:
Ниже мы рассмотрим 20 различных файлов логов Linux, размещенных в каталоге /var/log/. Некоторые из этих логов встречаются только в определенных дистрибутивах, например, dpkg.log встречается только в системах, основанных на Debian.
- /var/log/messages — содержит глобальные системные логи Linux, в том числе те, которые регистрируются при запуске системы. В этот лог записываются несколько типов сообщений: это почта, cron, различные сервисы, ядро, аутентификация и другие.
- /var/log/dmesg — содержит сообщения, полученные от ядра. Регистрирует много сообщений еще на этапе загрузки, в них отображается информация об аппаратных устройствах, которые инициализируются в процессе загрузки. Можно сказать это еще один лог системы Linux. Количество сообщений в логе ограничено, и когда файл будет переполнен, с каждым новым сообщением старые будут перезаписаны. Вы также можете посмотреть сообщения из этого лога с помощью команды dmseg.
- /var/log/auth.log — содержит информацию об авторизации пользователей в системе, включая пользовательские логины и механизмы аутентификации, которые были использованы.
- /var/log/boot.log — Содержит информацию, которая регистрируется при загрузке системы.
- /var/log/daemon.log — Включает сообщения от различных фоновых демонов
- /var/log/kern.log — Тоже содержит сообщения от ядра, полезны при устранении ошибок пользовательских модулей, встроенных в ядро.
- /var/log/lastlog — Отображает информацию о последней сессии всех пользователей. Это нетекстовый файл, для его просмотра необходимо использовать команду lastlog.
- /var/log/maillog /var/log/mail.log — журналы сервера электронной почты, запущенного в системе.
- /var/log/user.log — Информация из всех журналов на уровне пользователей.
- /var/log/Xorg.x.log — Лог сообщений Х сервера.
- /var/log/alternatives.log — Информация о работе программы update-alternatives. Это символические ссылки на команды или библиотеки по умолчанию.
- /var/log/btmp — лог файл Linux содержит информацию о неудачных попытках входа. Для просмотра файла удобно использовать команду last -f /var/log/btmp
- /var/log/cups — Все сообщения, связанные с печатью и принтерами.
- /var/log/anaconda.log — все сообщения, зарегистрированные при установке сохраняются в этом файле
- /var/log/yum.log — регистрирует всю информацию об установке пакетов с помощью Yum.
- /var/log/cron — Всякий раз когда демон Cron запускает выполнения программы, он записывает отчет и сообщения самой программы в этом файле.
- /var/log/secure — содержит информацию, относящуюся к аутентификации и авторизации. Например, SSHd регистрирует здесь все, в том числе неудачные попытки входа в систему.
- /var/log/wtmp или /var/log/utmp — системные логи Linux, содержат журнал входов пользователей в систему. С помощью команды wtmp вы можете узнать кто и когда вошел в систему.
- /var/log/faillog — лог системы linux, содержит неудачные попытки входа в систему. Используйте команду faillog, чтобы отобразить содержимое этого файла.
- /var/log/mysqld.log — файлы логов Linux от сервера баз данных MySQL.
- /var/log/httpd/ или /var/log/apache2 — лог файлы linux11 веб-сервера Apache. Логи доступа находятся в файле access_log, а ошибок в error_log
- /var/log/lighttpd/ — логи linux веб-сервера lighttpd
- /var/log/conman/ — файлы логов клиента ConMan,
- /var/log/mail/ — в этом каталоге содержатся дополнительные логи почтового сервера
- /var/log/prelink/ — Программа Prelink связывает библиотеки и исполняемые файлы, чтобы ускорить процесс их загрузки. /var/log/prelink/prelink.log содержит информацию о .so файлах, которые были изменены программой.
- /var/log/audit/- Содержит информацию, созданную демоном аудита auditd.
- /var/log/setroubleshoot/ — SE Linux использует демон setroubleshootd (SE Trouble Shoot Daemon) для уведомления о проблемах с безопасностью. В этом журнале находятся сообщения этой программы.
- /var/log/samba/ — содержит информацию и журналы файлового сервера Samba, который используется для подключения к общим папкам Windows.
- /var/log/sa/ — Содержит .cap файлы, собранные пакетом Sysstat.
- /var/log/sssd/ — Используется системным демоном безопасности, который управляет удаленным доступом к каталогам и механизмами аутентификации.
9: Настройка HTTPS (опционально)
Теперь нужно создать SSL-сертификаты для сайтов Apache. Nginx поддерживает терминацию SSL, потому можно настроить SSL, не изменяя настроек Apache.
Модуль mod_rpaf установит все переменные Apache, необходимые для поддержки SSL.
Создайте каталог для SSL-сертификатов и закрытых ключей:
В данном руководстве используются самоподписанные сертификаты, действительные в течение 10 лет. Чтобы создать такие сертификаты, введите:
После запуска каждой команды программа предложит вам указать данные о сайте. В поле Common Name нужно указать доменное имя.
Откройте файл виртуального хоста Apache, который проксирует запросы с Nginx на Apache.
Каждый домен имеет индивидуальный сертификат и ключ. Эти данные нужно указать в отдельных блоках server { . . . }. Удалите текущее содержимое файла и вставьте в него новый код:
Сохраните файл и проверьте синтаксис:
Если ошибок нет, перезапустите Nginx:
Откройте любой из доменов Apache в браузере с префиксом https://:
Примечание: Поскольку в руководстве используется самоподписанный сертификат, браузер, скорее всего, сообщит о том, что этот сайт небезопасен. Это нормально, просто браузер не может найти подписи ЦС, которому он мог бы доверять.
Перейдите в раздел PHP Variables.Переменная SERVER_PORT имеет значение 443, переменная HTTPS– значение on (поскольку доступ к сайту Apache был получен по HTTPS). С такими настройками вам не придётся менять конфигурации PHP-приложения.
Установка базового программного обеспечения LEMP
Для выполнения дальнейших шагов нам необходимы настроенные LEMP серверы с установленными сертификатами Let’s Encrypt. В зависимости от выбранной ОС, вы можете воспользоваться для настройки одним из руководств, приведенных ниже. При настройке каждого сервера используйте его доменное имя — , , .
Настройку необходимо выполнить на каждом из серверов, который будет входить в отказоустойчивый кластер.
Установка LEMP в CentOS 7 с использованием внешнего репозитория Remi’s Repository для установки PHP 7.2.
Стандартная установка LEMP в Debian 9 Stretch с использованием PHP 7.0
Стандартная установка LEMP в Ubuntu 18.04 Bionic с использованием PHP 7.2
На этом шаге вы должны получить три сервера с установленным стеком LEMP. Каждый сервер должен быть доступен по доменному имени по протоколу HTTPS. На каждом сервере должен быть установлен сервер СУБД MariaDB.
Директивы HttpLogModule
Директива error_log ходит в основной модуль, а access_log (следующая директива, которую стоит рассмотреть) входит в модуль HttpLogModule, который предоставляет возможность настраивать логи.
В этот модуль также включено несколько других директив, помогающих настраивать пользовательские логи.
Директива log_format
Директива log_format описывает формат записи лога при помощи простого текста и переменных.
Формат, который использует Nginx, называется комбинированным. Этот общий формат используется многими серверами. Он имеет следующий вид:
Определение этой директивы охватывает несколько строк и заканчивается точкой с запятой (;).
Фрагменты, которые начинаются с символа $, задают переменные; символы тире и квадратных скобок () воспринимаются буквально.
Общий синтаксис команды:
Директива access_log
Синтаксис директивы access_log похож на синтаксис error_log, но он более гибок. Та директива используется для настройки пользовательских логов.
Базовый синтаксис:
Стандартным форматом директивы access_log является combined (как и в log_format). Можно использовать любой формат, определённый в log_format.
Фрагмент команды buffer_size задаёт максимальный объём данных, которые хранит сервер Nginx, прежде чем внести их в лог. Чтобы настроить сжатие лог-файла, нужно добавить в директиву gzip:
В отличие от error_log, директиву access_log можно просто выключить:
Её вывод не обязательно переводить в /dev/null.
Подключение 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