簡體   English   中英

如何在Azure VM(v1)上設置全局可見的環境變量

[英]How to set up globally visible environment variables on Azure VM (v1)

是否可以通過Ubuntu OS在Azure VM(服務管理)上設置系統范圍/全局可見的環境變量? 我陷入了將它們設置在ubuntu的/etc/environment /etc/profile/etc/bash.bashrc情況,我的應用程序代碼未將其設置。 但是,它們確實出現在printenv 我的猜測是,由於設置我的Web服務器(Gunicorn + Nginx反向代理)的方式,它們以某種方式被繞開了。

但是,也許有一種方法可以在Azure VM上設置優先於所有內容的env變量? 我知道Heroku的儀表板中有該選項(我一直在使用它),Azure Web Apps也是如此(由於各種有據可查的兼容性問題,我無法使用它)。

作為參考,我在Azure VM上發布了我的步驟。 您可以檢查它們並與您的進行比較。

  1. 連接到新的Azure VM: ssh user@vm-name.cloudapp.net
  2. 安裝工具pipvirtualenv

     sudo apt-get update sudo apt-get install python-pip sudo pip install virtualenv 
  3. 准備gunicorn以安裝gunicorndjango

     mkdir environments virtualenv environments/experiment/ cd environments/experiment/ source bin/activate pip install gunicorn django 
  4. 創建一個django項目並使用gunicorn運行它,然后嘗試訪問它:

     django-admin startproject mysite bin/gunicorn --chdir=mysite -w 3 --env DJANGO_SETTINGS_MODULE=mysite.settings mysite.wsgi:application # using w3m to access http://localhost:8000 w3m http://localhost:8000 
  5. 安裝Nginx並配置反向代理:

     sudo apt-get install nginx sudo cp /etc/nginx/site-available/default /etc/nginx/site-available/default.bak sudo vim /etc/nginx/site-available/default 

以下是Nginx的default文件中配置的內容:

server {
        listen 80 default_server;
        listen [::]:80 default_server ipv6only=on;

        root /usr/share/nginx/html;
        index index.html index.htm;

        # Make site accessible from http://localhost/
        server_name localhost;

        location / {
                # First attempt to serve request as file, then
                # as directory, then fall back to displaying a 404.
                try_files $uri $uri/ =404;
                # Uncomment to enable naxsi on this location
                # include /etc/nginx/naxsi.rules

                include proxy_params;
                proxy_pass http://unix:/home/<user>/environments/experiment/mysite/mysite.sock; 
                # I also try to config `http://localhost:8000;`, it's ok too.
        }
  }

我也嘗試配置proxy_pass http://localhost:8000; ,也可以。

  1. 重新啟動nginx服務並重新啟動gunicorn

     sudo service nginx restart bin/gunicorn --chdir=mysite --bind unix:/home/<user>/environments/experiment/mysite/mysite.sock -w 3 --env DJANGO_SETTINGS_MODULE=mysite.settings mysite.wsgi:application 

我發現應用程序啟動后無法獲得環境變量的設置。 因此,請在啟動gunicorn之前運行命令source /etc/...

如有任何疑問,請隨時告訴我。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM