Может ли служба php-fpm интерпретировать переменные среды внутри www.conf для создания уникальных файлов журнала? - PullRequest
0 голосов
/ 10 апреля 2019

Я пытаюсь настроить несколько облачных серверов за ALB для записи их файлов журнала в мою общую EFS. У меня есть один общий диск EFS, к которому я могу получить доступ через один экземпляр разработки, в то время как все мои производственные экземпляры находятся в безопасности за VCN. Я пытаюсь использовать системные переменные среды (в частности, HOSTNAME), чтобы каждый из производственных экземпляров, использующих один и тот же файл конфигурации для запуска php-fpm (чтобы я мог выполнять автоматическое масштабирование), записывал свой журнал.

Я видел ответы, которые говорят, что * nix способ использования переменных окружения должен работать, но они не работают для меня. В частности, $ {HOSTNAME} возвращает пустое значение (и я проверил, что установлено для пользователей apache и root; root запускает службу php-frm). Я также попробовал интерполяции этого и вкуса bash вещей "% ()". Никто из них не работает.

Все они возвращают пустые строки (но не ошибки).

Я создал одну переменную в своей переменной окружения и заставил ее работать.

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

Это то, что я ожидал бы работать:

slowlog = "/shared/logs/php-fpm/www-slow-${HOSTNAME}.log"

Пробовал все следующее:

slowlog = "/shared/logs/php-fpm/www-slow-".${HOSTNAME}.".log"

-> пустое имя хоста

slowlog = "/shared/logs/php-fpm/www-slow-${HOSTNAME}.log"

-> пустое имя хоста

slowlog = "/shared/logs/php-fpm/www-slow-%(HOSTNAME).log"

-> имя файла включает% (HOSTNAME)

slowlog = "/shared/logs/php-fpm/www-slow-$HOSTNAME.log"

-> имя файла включает $ HOSTNAME

slowlog = "/shared/logs/php-fpm/www-slow-{$HOSTNAME}.log"

-> имя файла включает в себя {$ HOSTNAME}

slowlog_name = "/shared/logs/php-fpm/www-slow-{$HOSTNAME}.log"
slowlog = slowlog_name

-> ошибка запуска: неизвестная переменная slowlog_name

Спасибо за любые советы / рекомендации!

1 Ответ

1 голос
/ 17 мая 2019

PHP 7.3 поддерживает интерполяцию переменных среды для имен файлов журнала в файлах конфигурации - я только что проверил это.Я подозреваю, что вас поймали на том, что в bash $HOSTNAME - это переменная bash, но не автоматически переменная среды, и системы Linux различаются в том, установлен ли $HOSTNAME в качестве переменной окружения.Дистрибутивы RedHat его устанавливают, Ubuntu не делает:

jacob@nitrogen ~ $ cat /etc/redhat-release 
Fedora release 29 (Twenty Nine)
jacob@nitrogen ~ $ echo $HOSTNAME
nitrogen
jacob@nitrogen ~ $ env | grep HOSTNAME
HOSTNAME=nitrogen

jacob@iad11:~$ grep PRETTY_NAME /etc/os-release 
PRETTY_NAME="Ubuntu 18.04.2 LTS"
jacob@iad11:~$ echo $HOSTNAME
iad11
jacob@iad11:~$ env | grep HOSTNAME

Вы можете протестировать с другой переменной окружения, а затем установить $HOSTNAME в пользовательском сценарии запуска, который затем запускает PHP.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...