Re: Документация, директива pid
Maxim Dounin
mdounin на mdounin.ru
Чт Ноя 30 17:02:35 UTC 2017
Hello!
On Thu, Nov 30, 2017 at 01:40:57PM +0200, Gena Makhomed wrote:
> On 29.11.2017 20:47, Maxim Dounin wrote:
>
> >> -<default>nginx.pid</default>
> >> +<default>Зависит от параметров сборки nginx</default>
> >> <context>main</context>
>
> > Это необычайно информативно, и наверное всё, что можно тут
> > сделать, это осознать, что некоторые идеи - просто плохие.
>
> С моей точки зрения,
> информация в документации должна быть прежде всего достоверной.
>
> "Значение по умолчанию" - это то значение которое примет директива,
> если она будет отсутствовать в конфиге или будет закомментирована.
Значение по умолчанию - это ещё и то значение, которое примет
директива, если будет отсутствовать соответствующий параметр
сборки.
В этом месте, кстати, косяк, который совсем просто исправить -
вместо "nginx.pid" должно быть "logs/nginx.pid". Патч:
# HG changeset patch
# User Maxim Dounin <mdounin at mdounin.ru>
# Date 1512060425 -10800
# Thu Nov 30 19:47:05 2017 +0300
# Node ID 8f885a69374ddf67ff9400c7892f020b88f41839
# Parent 05f5bfdaffa3b71299ae378a37c2902c0e6825f1
Fixed the "pid" directive default value.
diff --git a/xml/en/docs/ngx_core_module.xml b/xml/en/docs/ngx_core_module.xml
--- a/xml/en/docs/ngx_core_module.xml
+++ b/xml/en/docs/ngx_core_module.xml
@@ -10,7 +10,7 @@
<module name="Core functionality"
link="/en/docs/ngx_core_module.html"
lang="en"
- rev="24">
+ rev="25">
<section id="example" name="Example Configuration">
@@ -404,7 +404,7 @@ the JIT support is enabled via the
<directive name="pid">
<syntax><value>file</value></syntax>
-<default>nginx.pid</default>
+<default>logs/nginx.pid</default>
<context>main</context>
<para>
diff --git a/xml/ru/docs/ngx_core_module.xml b/xml/ru/docs/ngx_core_module.xml
--- a/xml/ru/docs/ngx_core_module.xml
+++ b/xml/ru/docs/ngx_core_module.xml
@@ -10,7 +10,7 @@
<module name="Основная функциональность"
link="/ru/docs/ngx_core_module.html"
lang="ru"
- rev="24">
+ rev="25">
<section id="example" name="Пример конфигурации">
@@ -402,7 +402,7 @@ load_module modules/ngx_mail_module.so;
<directive name="pid">
<syntax><value>файл</value></syntax>
-<default>nginx.pid</default>
+<default>logs/nginx.pid</default>
<context>main</context>
<para>
[...]
> >> +Значение по умолчанию задается в момент конфигурирования nginx
> >> параметром <literal>configure --pid-path</literal>.
> >> +Узнать значение по умолчанию для директивы <literal>pid</literal> можно
> >> запустив команду <literal>nginx -V</literal>
> >> +и посмотрев на значение параметра <literal>configure --pid-path</literal>.
>
> > Это мало соответствует тому, что хотелось бы видеть в описании
> > директивы.
>
> Предложите лучший вариант как исправить эти ошибки в документации.
Я предложил ещё в первом письме этого треда - сделать note. И в
нём написать, что значение по умолчанию может быть переопределено
с помощью соответствующего параметра configure. Собственно, я
тогда же попросил Ярослава, который у нас занимается
документацией, на это посмотреть, и заодно привести в порядок
configure.html.
(Отмечу в скобках, что, скажем, в документации Apache для
ServerRoot приблизительно так и сделано,
https://httpd.apache.org/docs/2.4/mod/core.html#serverroot. А вот
в описании PidFile не указано, что его значение по умолчанию
переопределяется с помощью "-D DEFAULT_PIDLOG=...". Хватит это
терпеть!)
> >> +<para>
> >> +Не рекомендуется явно указывать значение директивы
> >> <literal>pid</literal> в конфигурационном файле.
> >> </para>
> >
> > Это не соответствует действительности. PID-файл можно и нужно
> > задавать во многих ситуациях, например - если на машине
> > запускается несколько независимых экземпляров nginx'а. Скажем, в
> > портах FreeBSD такое поддерживается из коробки штатными
> > rc-скриптами.
>
> В портах FreeBSD используется аргумент командной строки
> nginx -g \"pid ${pidfile};\":
>
> https://github.com/freebsd/freebsd-ports/blob/master/www/nginx/files/nginx.in#L64
>
> Если директиву pid указать и в командной строке и в конфиге,
> тогда nginx будет ругаться при старте на такой конфиг:
>
> nginx: [emerg] "pid" directive is duplicate in /etc/nginx/nginx.conf:2
>
> Можно ли подробнее узнать про "многие ситуации",
> когда необходимо задавать значение директивы pid в конфиге nginx?
>
> С моей точки зрения, будет больше вреда чем пользы от явного определения
> пользователями значения директивы pid в конфигурационном файле nginx.
Если хочется вдаваться в семантические различия "-g" и собственно
конфигурационного файла, то pid именно в конфигурационном файле
обычно проще и удобнее указывать, если хочется запускать несколько
экземпляров nginx'а без использования скриптов, которые умеют
делать это через "-g". Или когда хочется запустить nginx,
стоящий в системе, под непривелигированным пользователем - для
тестов, например.
[...]
> Другая часть ошибок
> systemd: PID file /var/run/nginx.pid not readable (yet?) after start.
> происходит из-за того, что nginx зачем-то не совместим с systemd.
>
> Это Вы знаете, что сообщения эти "безвредные", да и то, только в том
> случае если в PIDFile= и в директиве pid указано одинаковое значение.
>
> Но пользователи nginx этого ведь не знают! И они продолжают безуспешно
> искать решение как убрать эти сообщения об ошибках из лог-файлов.
>
> Хотя проблема то легко решается на стороне nginx патчем в одну строчку.
> http://mailman.nginx.org/pipermail/nginx-devel/2017-November/010658.html
По этому вопросу я уже сказал всё, что считаю нужным, и не
планирую к нему возвращатья. Спасибо.
--
Maxim Dounin
http://mdounin.ru/
Подробная информация о списке рассылки nginx-ru