Как получить доступ и установить переменные среды любого производства (Nginx и Gunicorn) - PullRequest
0 голосов
/ 27 апреля 2020

Я пытаюсь установить переменные среды для проекта Nginx и Gunicorn Served Django в Ubuntu. Переменные установлены для пользователя Ubuntu, и я могу видеть значение, используя printenv VAR_EMAIL.

Но когда я использую их django, настройки не работают, используя их как os.environ['VAR_EMAIL'], Это не получить значение переменной в производственном режиме, а сервер не работает.

Однако это работает на стороне разработки.

ОБНОВЛЕНИЕ 1 мая 2020 года: я использовал systemd и передал переменную следующим образом в файле gunicorn.service. Это не сработает, все равно получите ключевую ошибку,) опубликует точную ошибку), поскольку она работает на Ubuntu, но я работаю на Windows, и она отлично работает с переменными среды в разработке. os.environ['var_name'] правильный способ доступа к этому? Я также попытался os.environ.get('var_name'), как я видел в некоторых видео, которые имеют .get() для доступа к значению. Я попробую еще раз, может быть, я сделал какую-то ошибку. Не стесняйтесь спрашивать любую необходимую информацию. Service File

ОТВЕТИЛ - Это была ошибка с моей стороны.

Ответы [ 2 ]

1 голос
/ 27 апреля 2020

Что вы используете, чтобы контролировать и запускать процесс gunicorn в Ubuntu? Если вы не используете какой-либо, я рекомендую вам использовать systemd, есть небольшое руководство о том, как настроить в документах gunicorn: https://docs.gunicorn.org/en/stable/deploy.html#systemd

После этого вы можете установите переменные окружения в файле конфигурации systemd, выполнив, как показано ниже, в разделе [Service] файла конфигурации systemd:

[Service]
Environment="VAR_EMAIL=var-email"
Environment="ANOTHER_VAR=another-var"

Вы также можете использовать директиву EnvironmentFile, если вы предпочитаете иметь эти переменные в отдельном файле: https://www.freedesktop.org/software/systemd/man/systemd.exec.html#EnvironmentFile =

0 голосов
/ 03 мая 2020

Переменные среды должны были быть установлены в одной строке с spaces, разделяющим каждую пару ключ + значение. (Не так, как упомянуто в выбранном ответе). Не удалось заставить его работать с супервизором.

Поэтому правильный способ сделать это, как указано в этой документации для Systemd: EnvironmentsSystemd

Environment = "KEY_NAME_1=VALUE_KEY_1" "KEY_NAME_2=VALUE_KEY_2" ....

Затем пользователь PassEnvironment, чтобы активировать тех, кто в этом сеансе. Таким образом, в PassEnvironment вы можете использовать разные переменные среды для разных сервисов.

PassEnvironment = KEY_NAME_1 KEY_NAME_2 ....

Это ключевые имена, разделенные пробелами. Это должно помочь вам настроить systemd. Проверьте выбранный ответ для всех ссылок.

Это не будет работать: Answer Screenshot

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