【问题标题】:Django SECRET_KEY called in os.environ but isn't an environment variable在 os.environ 中调用了 Django SECRET_KEY 但不是环境变量
【发布时间】:2018-03-14 20:23:04
【问题描述】:

我被要求查看一个开发人员失踪的 Django 项目。我无法弄清楚他们是如何设置SECRET_KEY 的。在settings.py 我们有SECRET_KEY = os.environ['SECRET_KEY']

它在 Ubuntu 14.04.05 服务器上运行。我理解上面的代码意味着SECRET_KEY 已被设置为环境设置,因此在终端中我输入printenv 以查看环境设置,而SECRET_KEY 不存在。

如何设置?

编辑

nginx.conf

user www-data;
worker_processes 1;
pid /run/nginx.pid;

events {
        worker_connections 1024;
        # multi_accept on;
}

http {

        ##
        # Basic Settings
        ##
        client_body_buffer_size 10K;
        client_header_buffer_size 1k;
        client_max_body_size 8m;
        large_client_header_buffers 2 1k;
        sendfile on;
        tcp_nopush on;
        tcp_nodelay on;
        client_body_timeout 12;
        client_header_timeout 12;
        keepalive_timeout 15;
        send_timeout 10;
        types_hash_max_size 2048;
        # server_tokens off;

        # server_names_hash_bucket_size 64;
        # server_name_in_redirect off;

        include /etc/nginx/mime.types;
        default_type application/octet-stream;

        ##
        # Logging Settings
        ##

        access_log /var/log/nginx/access.log;
        error_log /var/log/nginx/error.log;

        ##
        # Gzip Settings
        ##

        gzip on;
        gzip_disable "msie6";


        # gzip_vary on;
        gzip_proxied     expired no-cache no-store private auth;
        gzip_comp_level 2;
        gzip_min_length  1000;
        # gzip_buffers 16 8k;
        # gzip_http_version 1.1;
        gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;

        ##
        # nginx-naxsi config
        ##
        # Uncomment it if you installed nginx-naxsi
        ##

        #include /etc/nginx/naxsi_core.rules;

        ##
        # nginx-passenger config
        ##
        # Uncomment it if you installed nginx-passenger
        ##

        #passenger_root /usr;
        #passenger_ruby /usr/bin/ruby;

        ##
        # Virtual Host Configs
        ##

        include /etc/nginx/conf.d/*.conf;
        include /etc/nginx/sites-enabled/*;
}

uwsgi_params

uwsgi_param     QUERY_STRING            $query_string;
uwsgi_param     REQUEST_METHOD          $request_method;
uwsgi_param     CONTENT_TYPE            $content_type;
uwsgi_param     CONTENT_LENGTH          $content_length;

uwsgi_param     REQUEST_URI             $request_uri;
uwsgi_param     PATH_INFO               $document_uri;
uwsgi_param     DOCUMENT_ROOT           $document_root;
uwsgi_param     SERVER_PROTOCOL         $server_protocol;
uwsgi_param     UWSGI_SCHEME            $scheme;

uwsgi_param     REMOTE_ADDR             $remote_addr;
uwsgi_param     REMOTE_PORT             $remote_port;
uwsgi_param     SERVER_PORT             $server_port;
uwsgi_param     SERVER_NAME             $server_name;

【问题讨论】:

  • 它不会在您运行终端的环境中设置,可能是您自己的用户 - 它只会为运行服务器的进程设置。但是,您需要提供有关其服务方式的更多信息。
  • 它由 nginx 网络服务器提供服务
  • 好吧,nginx 本身并不为应用程序提供服务;它只是一个反向代理,可能还有其他东西(例如 gunicorn 或 uwsgi)。您需要发布配置文件,以及可能负责启动它的任何服务管理器配置。
  • 好的 - 我通常使用 apache。我在哪里可以找到 nginx 的配置文件?
  • uwsgi 配置就是你要找的。 Nginx 应该只通过端口或套接字与 uwsgi 通信——它不应该直接访问 django 环境。 uwsgi是怎么开始的?为此,通常使用supervisord。但还有很多其他选择。你可以使用top等标准的linux工具来找出uwsgi的父级。

标签: django environment-variables


【解决方案1】:

我使用了一个非常简单的 hack:它对我有用,但仍在测试不同的环境。我就是这样做的。您在激活虚拟环境时设置变量。

只需打开您为激活虚拟环境而获取的 bin/activate 文件,然后在其末尾添加如下内容: 例如,如果您的虚拟环境文件夹是“virtual”,那么您可以使用以下命令激活您的虚拟环境:

source virtual/bin/activate

所以,现在您知道在哪里可以找到位于虚拟环境中的“激活”文件。使用文本编辑器打开它并在文件末尾添加以下行。注意:用您的密钥替换引号之间的字符。

export APP_SECRET_KEY="OiJjajJjZXlraGcwMDBrMndtdWJ6NDFsNWt4"
export APP_DEBUG="1"
...

现在每次激活环境(源 virtenv/bin/activate)时,所有配置变量都将设置并可用。

【讨论】:

    猜你喜欢
    • 2020-07-17
    • 2020-10-25
    • 2020-11-18
    • 1970-01-01
    • 2019-05-03
    • 1970-01-01
    • 2021-06-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多