【发布时间】:2017-05-22 19:40:04
【问题描述】:
这是关于什么的
我正在寻找一种方法来简化 django 应用程序在我的服务器上的部署。目前我为每个应用程序使用一个 uWSGI 实例。每当我将新项目上传到我的 www-root-folder 时,我都不想弄乱配置文件。相反,我正在寻找一个更像 php 的解决方案,在那里我可以将项目文件夹上传到我的 www-root 并通过 nginx-> uWSGI 或 nginx-> Gunicorn “自动”使用它,而无需修改配置文件。此外,最好不要为每个应用程序都有一个进程,这样我就不会浪费内存(因为我一次从不使用多个应用程序)。
当前状态
我发现,uWSGI 的emperor mode for django applications 与magic variables 结合使用可能有效。但是在我的配置中,只有一个 django 应用程序的设置会被加载并保持加载,因此没有其他应用程序可以启动。
来自uwsgi.conf.template:
[uwsgi]
master = true
socket = :8000
master = true
reuse-port = true
reload-os-env = true
vaccuum = true
logto = /var/log/uwsgi-%n.log
manage-script-name = true
chdir = /usr/local/www/%n
mount = /%n=%n/wsgi.py
来自nginx.conf:
location ~ ^/(.+)/(.+?)$
{
include uwsgi_params;
uwsgi_pass 10.0.0.106:8000;
uwsgi_param UWSGI_SCRIPT $1.wsgi;
uwsgi_param SCRIPT_NAME /$1;
uwsgi_param UWSGI_CHDIR /usr/local/www/$1;
uwsgi_param PATH_INFO "/$2"; # strip path
}
location ~ ^/(.+)/$
{
include uwsgi_params;
uwsgi_pass 10.0.0.106:8000;
uwsgi_param UWSGI_SCRIPT $1.wsgi;
uwsgi_param SCRIPT_NAME $1;
# uwsgi_param UWSGI_APPID /$1;
uwsgi_param DJANGO_SETTINGS_MODULE $1.settings;
uwsgi_param UWSGI_CHDIR /usr/local/www/$1;
uwsgi_param PATH_INFO '';
}
【问题讨论】:
标签: python django nginx deployment uwsgi