uwsgi + django 通过 Nginx - uwsgi 设置/启动配置?
我打算用uwsgi和nginx来运行我的Django应用,有人能分享一下启动uwsgi进程的最佳方法吗?有没有人有调试uwsgi的经验?
3 个回答
0
我会选择用 supervisord 来管理程序的启动和停止。
2
这是我在fabfile.py文件中使用的函数(如果你还没了解过Python Fabric,可以去看看):
def start_uwsgi():
with cd(env.server.uwsgi):
if(exists('server.pid')):
stop_uwsgi()
run('sleep 1')
run('source venv/bin/activate;uwsgi --ini uwsgi.ini;'))
def stop_uwsgi():
with cd(env.server.uwsgi):
if(exists('server.pid')):
run('source venv/bin/activate;uwsgi --stop server.pid;'))
在我的uwsgi.ini文件中,我指定了:
[uwsgi]
socket = :{{your_port}}
master = true
vhost = true
no-site = true
processes = 1
enable-threads = true
pidfile = server.pid
daemonize = server.log
auto-procname = true
procname-prefix = servername_
对我来说,主要的注意事项有:
- 如果你想在关闭终端或SSH会话后让uwsgi服务器继续运行,就要使用daemonise选项。
- 使用vhost可以让你在同一个uwsgi实例下运行多个网站,这对于像我这样内存有限的情况非常好,尤其是在使用非常棒的webfaction主机时。
- pidfile用于跟踪当前的实例,这样你就可以通过uwsgi --stop pidfile和uwsgi --start pidfile来控制它。
- procname和procname-prefix/append可以给你的进程起个好名字,这样你就能通过ps -u username | grep some_string轻松找到它。
4
在OSX上使用launchd
在各种Unix系统上使用Upstart/init。
uwsgi也有自己的进程管理工具,所以你也可以直接运行它。
调优:
查看邮件列表,获取关于你具体需求的建议。uwsgi非常棒,它是一个完整的部署解决方案。
0.8.40以上版本的Nginx会默认构建uwsgi的绑定,先构建Nginx,再构建uwsgi,你就成功了。