Dan*_*e B 10 python wsgi nginx flask uwsgi
我成功地在CentOS 6.x服务器上安装了:NGINX + uWSGI + Flask
但我仍然对配置有些怀疑:
1)我正在运行NGINX作为服务:服务nginx启动/停止/重启
如果我输入"ps aux | grep nginx",我可以看到2个进程:
- (用户root)主进程/ usr/sbin/nginx -c /etc/nginx/nginx.conf
- (通过用户nginx)工作进程
就可以了吗?
2)我为Flask设置了virtualenv,并在这样的virtualenv下安装了uWSGI包.
当前我通过输入"uwsgi /somedir/uwsgi.ini"手动启动uWSGI,其中uwsgi.ini如下:
chdir = /myappdir
uid = pyuser
chmod-socket = 666
socket = /tmp/uwsgi.sock
module = run
callable = app
virtualenv = /myappdir/myvirtualenv
Run Code Online (Sandbox Code Playgroud)
是否可以将uWSGI作为服务启动,类似于NGINX(如第1点所述)?用户应该是root用户还是非root用户?
3)当我启动uWSGI时,我目前收到以下警告:
*** Python threads support is disabled. You can enable it with --enable-threads ***
Run Code Online (Sandbox Code Playgroud)
我意识到在"uwsgi.ini"配置文件中,您还可以配置许多进程和线程.考虑到我运行的服务器只有1个核心,我可以设置多个进程和线程吗?若然,有多少?
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 ***
Run Code Online (Sandbox Code Playgroud)
我从评论中提出了最重要的观点.
是的,这是正常的行为.Nginx的主进程需要root权限来管理计算机上的侦听套接字.此 论坛帖子声明您可以更改它,但它可能会导致问题.但是,Nginx允许更改工作进程的所有者.
这取决于uWSGI的安装方式.如果apt-get你通过uWSGI安装就可以启动(停止,重启)它,如下所示:
service uwsgi <action>
你安装了uWSGI pip,所以daemonize选项可以解决这个问题:
/path/to/uwsgi --daemonize /path/to/logfile
你可以在任何你想要的用户下启动它,但如果你决定在root下运行它,你应该指定gid和 uid选项.uWSGI的最佳实践页面说:
常识:不要以root身份运行uWSGI实例.您可以以root用户身份启动uWSGI,但请务必使用uid和gid选项删除权限.
另请参阅master-as-root选项.
您可以根据需要创建任意数量的进程和线程,但这应该取决于您尝试处理的请求数量(并发或每秒).你可以在这里阅读这个.我会尝试不同的配置,并选择哪一个更好.
3B.基本上,worker_processes有助于处理并发请求.看到这个问题.
*警告:您在没有主进程管理器的情况下运行uWSGI*
您没有master在.ini文件中指定选项.虽然主过程肯定是不必要的,但它非常有用.它有助于有效地控制工人并在他们死亡时重生.
| 归档时间: |
|
| 查看次数: |
9692 次 |
| 最近记录: |