我成功地在CentOS 6.x服务器上安装了: NGINX + uWSGI + Flask
但我在配置方面仍然有一些疑问:
1)我将NGINX作为服务运行: service nginx start/stop/restart
如果我输入"ps aux | grep nginx",我可以看到两个进程:
主进程(通过用户根用户)主进程/usr/sbin/nginx /etc/nginx/nginx.conf
这样可以吗?
2)我为Flask设置了一个virtualenv,并在这个virtualenv下安装了uWSGI包。
当前我手动启动uWSGI,输入"uwsgi /somedir/ uwsgi.ini ",其中uwsgi.ini如下所示:
chdir = /myappdir
uid = pyuser
chmod-socket = 666
socket = /tmp/uwsgi.sock
module = run
callable = app
virtualenv = /myappdir/myvirtualenv
是否可以将uWSGI作为服务启动,类似于NGINX (如第1点所述)?这种情况下,用户应该是root用户还是非root用户?
3)启动uWSGI时,当前收到以下警告:
*** Python threads support is disabled. You can enable it with --enable-threads ***
我意识到在"uwsgi.ini“配置文件中,您还可以配置许多进程和线程。考虑到我运行的服务器只有一个核心,我可以设置多个进程和线程吗?如果有,有多少?
3b)在NGINX配置文件"/etc/nginx/nginx.conf“中,也可以指定"worker_processes",默认情况下是1。我可以增加这个值吗,或者只能在多核服务器上大于1?
4)除了线程支持被禁用之外,当我启动uWSGI时,我也收到了这些警告。它们是什么意思?
*** WARNING: you are running uWSGI without its master process manager ***
*** Operational MODE: single process ***
*** uWSGI is running in multiple interpreter mode ***
发布于 2013-07-13 03:26:31
我从评论中移出了最重要的几点。
apt-get
安装的,您可以像这样启动(停止、重新启动)它:service uwsgi <action>
您通过pip
安装了uWSGI,因此daemonize选项将完成此任务:
/path/to/uwsgi --daemonize /path/to/logfile
您可以在任何想要的用户下启动它,但是如果您决定在根目录下运行它,那么您应该指定gid和uid选项。uWSGI的best practices page说:
常识:不要以根用户身份运行uWSGI实例。您可以以根用户身份启动uWSGI,但请确保使用uid和gid选项删除权限。
还可以看看master-as-root选项。
3b。基本上,worker_processes
帮助处理并发请求。请参见this question.
您没有在.ini文件中指定master
选项。虽然主进程肯定是不必要的,但它非常有用。它有助于有效地控制工人,并在他们死亡时使他们重新获得生命。
发布于 2014-12-17 11:17:03
3b)当您的nginx占用大量CPU时,可以结合worker_process
使用多核。
基本上,Python应用程序比nginx反向代理慢得多。所以一个nginx进程就足够了。但是一些nginx选项(例如gzip: on;
和gzip_proxied: any
)会消耗一些CPU。查看top命令输出。如果nginx进程消耗大量CPU,可以增加worker_process。
当使用nginx作为反向代理时,worker_process应该<=核数。
https://stackoverflow.com/questions/17621662
复制相似问题