У меня есть несколько переменных, которые используются приложениями GO, Node и PHP на одном сервере. Я пытаюсь поместить все переменные в систему и сделать их доступными для всех приложений.
но я попытался поместить переменную в ~ / .profile, etc / profile и / etc / environment, и я могу получить к ним доступ терминал или Если сценарий запускается с терминала, но если попытаться запустить с использованием супервизора, например, приложение go с использованием супервизора и из сценария PHP, который запускается сервером nginx, кажется, что сценарий не может найти переменную.
что-то или есть лучший способ для этого?
1. Файлы профиля и неинтерактивного использования
профиля
загружаются только для интерактивных оболочек/сред и, следовательно, не в том случае, если команда выполняется неинтерактивно, например. от nginx
в фоновом режиме. Таким образом, единственным способом для общесистемной переменной будет /etc/environment
, однако:
2. nginx
специфические проблемы
nginx
фактически убивает все переменные среды. Документация по nginx
По умолчанию nginx удаляет все переменные среды, унаследованные от родительского процесса, кроме переменной TZ.
В конфигурации nginx
используйте env variable=value;
для переопределения или env variable
для наследования от системы.
3. проблемы, связанные с супервизором
Из SO: переменные среды наследуются от оболочки, которая запускает ее, и если ее никогда не было, вам придется определить их.
Добавить EnvironmentFile=/etc/environment
в служебный файл systemd
администратора supervisor
. Я полагаю, вы запускаете его так?