Сделать переменные среды доступными для всех скриптов и языков программирования

У меня есть несколько переменных, которые используются приложениями GO, Node и PHP на одном сервере. Я пытаюсь поместить все переменные в систему и сделать их доступными для всех приложений.

но я попытался поместить переменную в ~ / .profile, etc / profile и / etc / environment, и я могу получить к ним доступ терминал или Если сценарий запускается с терминала, но если попытаться запустить с использованием супервизора, например, приложение go с использованием супервизора и из сценария PHP, который запускается сервером nginx, кажется, что сценарий не может найти переменную.

что-то или есть лучший способ для этого?

0
задан 10 December 2020 в 15:53

1 ответ

1. Файлы профиля и неинтерактивного использования

профиля загружаются только для интерактивных оболочек/сред и, следовательно, не в том случае, если команда выполняется неинтерактивно, например. от nginx в фоновом режиме. Таким образом, единственным способом для общесистемной переменной будет /etc/environment, однако:

2. nginxспецифические проблемы

nginx фактически убивает все переменные среды. Документация по nginx

По умолчанию nginx удаляет все переменные среды, унаследованные от родительского процесса, кроме переменной TZ.

В конфигурации nginx используйте env variable=value; для переопределения или env variable для наследования от системы.

3. проблемы, связанные с супервизором

Из SO: переменные среды наследуются от оболочки, которая запускает ее, и если ее никогда не было, вам придется определить их.

Добавить EnvironmentFile=/etc/environment в служебный файл systemd администратора supervisor. Я полагаю, вы запускаете его так?

2
ответ дан 10 December 2020 в 13:17

Другие вопросы по тегам:

Похожие вопросы: