Re: Документация, директива pid

Gena Makhomed gmm на csdoc.com
Чт Ноя 30 11:40:57 UTC 2017


On 29.11.2017 20:47, Maxim Dounin wrote:

>> -<default>nginx.pid</default>
>> +<default>Зависит от параметров сборки nginx</default>
>>    <context>main</context>

> Это необычайно информативно, и наверное всё, что можно тут
> сделать, это осознать, что некоторые идеи - просто плохие.

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

"Значение по умолчанию" - это то значение которое примет директива,
если она будет отсутствовать в конфиге или будет закомментирована.

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

Идеальным вариантом, с моей точки зрения, было бы сделать так:

<default><link doc="default_values.xml">Defined at compile 
time</link>.</default>

В виде html это выглядело бы так:

   Default: Defined at compile time.

где текст "Defined at compile time" будет гиперссылкой.

И в документе default_values.html для всех 11 директив описать способ
как можно узнать их значение по умолчанию с помощью команды nginx -V

Но xmllint ругается, что
Element default was declared #PCDATA but contains non text nodes

>> +Значение по умолчанию задается в момент конфигурирования nginx
>> параметром <literal>configure --pid-path</literal>.
>> +Узнать значение по умолчанию для директивы <literal>pid</literal> можно
>> запустив команду <literal>nginx -V</literal>
>> +и посмотрев на значение параметра <literal>configure --pid-path</literal>.

> Это мало соответствует тому, что хотелось бы видеть в описании
> директивы.

Предложите лучший вариант как исправить эти ошибки в документации.

>> +<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.

Часть ошибок
systemd: PID file /var/run/nginx.pid not readable (yet?) after start.
происходит именно из-за того что в unit-файле одно значение PIDFile=
а в конфигурационном файле указано другое значение для директивы pid.

Другая часть ошибок
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

-- 
Best regards,
  Gena



Подробная информация о списке рассылки nginx-ru