Установка и администрирование
- Установка
- Настройка web-сервера
- Аргументы командной строки
- Скрипты запуска и остановки
- Ротация логов
Установка
Установка выполняется стандартно, как для большинства программ из исходных кодов под Unix. Домашняя директория по умолчанию — /usr/local/puskach
.
- [puskach-x.x.x]$ ./configure
- [puskach-x.x.x]$ make
- [puskach-x.x.x]$ make install
Настройка web-сервера
Пускач для web-сервера является одним FastCGI-приложением, которое обрабатывает все запросы. Для идентификации приложения, которому реально адресован запрос, сервер должен в каждом запросе передавать FastCGI-параметр SCRIPT_FILENAME
. Пускач, как FastCGI-приложение, обладает следующими свойствами (определены в спецификации FastCGI):
- Не поддерживает мультиплексирование запросов в рамках одного соединенеия. Каждое соединение используется для обработки только одного запроса (
FCGI_MPXS_CONNS
). - Максимальное число одновременно обслуживаемых запросов не ограничено (
FCGI_MAX_REQS
). - Максимальное число транспортных соединений не ограничено (
FCGI_MAX_CONNS
).
Как правило, никакой особенно специфической настройки web-сервера для работы с Пускачом не требуется, так протестирована его работа с Nginx и Lighttpd при стандартных настройках FastCGI-интерфейса.
Аргументы командной строки
Параметры, специфичные для каждого FastCGI-приложения, Пускач получает из конфигуарционного файла, а общие настройки управления процессом через аргументы командной строки. Поддерживаются следующие аргументы (обязательные выделены жирным):
-conf-path
— путь к файлу конфигурации Пускача.-log-path
— полное имя лог-файла.-log-level
— уровень детализации логгирования, допустимые значения: 10 =TRACE
, 20 =DEBUG
, ..., 70 =DISABLE_LOGGING
(по умолчаниюTRACE
).-pid-file
— полное имя файла в который при старте записывается (PID) Пускача, используется для отправки сигналов управления.-srv-addr
— адрес TCP/IP или Unix (файлового) сокета, который будет слушать Пускач на предмет входящих соединенеий от web-сервера, в форматехост:порт
, либо путь к файлу соответственно.
В процессе работы Пускач генерирует диагностические и отладочные сообщения разного уровня значимости. Установка уровня логгинга - это ограничение сверху на минимальную значимость сообщений, которые должны попадать в лог-файл. Менее значимые сообщения игнорируются. При каждом следующем уровне выводится информация всех предыдущих плюс следующая дополнительная информация:
FATAL
— ошибки уровня ПускачаERROR
— ошибки уровня FastCGI приложения: печать в STDERR, таймауты, ошибки ВВWARN
— ошибки, не приводящие к прерыванию процесса обработки запроса FastCGI приложениемINFO
— все существенные неошибочные события: перезапуск FastCGI-процессов, прерывание запросов серверомDEBUG
— вывод информации о результатах обработки каждого запроса: время, общее число запросов на приложение / процессTRACE
— полная трассировка обработки запроса: прием соединения от web-сервера, передача данных к приложению и от приложения
Оптимальным для повседневной эксплуатации является уровень DEBUG
, либо INFO
, «глушить» сообщения не рекомендуется. В настройке других необязательных параметров, как правило, нет необходимости.
Скрипты запуска и остановки
Все работающие FastCGI-приложения выполняются с правами того же пользователя, что и рабочий процесс Пускача. Поэтому крайне желательно запускать Пускач под непривилегированным пользователем. Такую проверку следует предусмотреть в стартовом скрипте. Также стартовый скрипт может устанавливать переменные окружения, которые будут наследоваться FastCGI-приложениями. Приведем пример скриптов для пользователя site_user
со следующей структурой каталогов в домашней директории:
- [site_user@ /usr/home/site_user]$ ls -R
- ./etc:
- changelog.sh startpuskach.sh puskach.conf stoppuskach.sh
- ./logs:
- puskach.log
- ./lib:
Стартовый скрипт startpuskach.sh
будет иметь вид:
- #!/bin/sh
- curuser='site_user'
- echo "#### Запускаем Пускач для $curuser #####"
- if !(echo "$USER" | grep -x -q "$curuser"); then
- echo "## Пробуем сменить пользователя ##"
- su - $curuser \
- -c "/usr/home/$curuser/etc/startpuskach.sh; exit 0"
- exit 0
- else
- echo "## Пускач запускает владелец... ##"
- fi
- PUSKACH_PID_FILE="/tmp/puskach/puskach_$curuser.pid"
- if [ -e "$PUSKACH_PID_FILE" ]; then
- kill -s QUIT `cat "$PUSKACH_PID_FILE"`
- echo "### Перезапускаем пускач ###"
- fi
- export PERL5LIB=$PERL5LIB:/usr/home/$curuser/lib;
- /usr/local/puskach/bin/puskach \
- -srv-addr "/tmp/puskach/puskach_$curuser.sock" \
- -pid-file "/tmp/puskach/puskach_$curuser.pid" \
- -conf-path "/usr/home/$curuser/etc/puskach.conf" \
- -log-path "/usr/home/$curuser/logs/puskach.log" \
- -log-level 20
Соотвественно скрипт остановки Пускача stoppuskach.sh
:
- #!/bin/sh
- curuser='site_user'
- PUSKACH_PID_FILE="/tmp/puskach/puskach_$curuser.pid"
- if [ -e "$PUSKACH_PID_FILE" ]; then
- kill -s QUIT `cat "$PUSKACH_PID_FILE"`
- echo "### Останавливаем пускач... ###"
- else
- echo "### Пускач не был запущен! ###"
- fi
Ротация логов
Для обеспечения ротации логов нужно переименовать текущий лог-файл, после чего отправить рабочему процессу Пускача сигнал SIGUSR1
. Пускач переоткроет файловый дескриптор и создаст пустой лог-файл с тем же именем.