linux如何检查uwsgi安装成功,uWSGI安装过程中遇到的问题及解决

uWSGI 是在像 nginx 、 lighttpd 以及 cherokee 服务器上的一个部署的选择。更多选择见 FastCGI 和 独立 WSGI 容器 。 你会首先需要一个 uWSGI 服务器来用 uWSGI 协议来使用你的 WSGI 应用。 uWSGI 是一个协议,同样也是一个应用服务器,可以提供 uWSGI 、FastCGI 和 HTTP 协议。

最流行的 uWSGI 服务器是 uwsgi ,我们会在本指导中使用。确保你已经安装好它来跟随下面的说明。

注意:

请提前确保你在应用文件中的任何 app.run() 调用在 if __name__ == '__main__': 块中或是移到一个独立的文件。这是因为它总会启动一个本地的 WSGI 服务器,并且我们在部署应用到 uWSGI 时不需要它。

用 uwsgi 启动你的应用

uwsgi 被设计为操作在 Python 模块中找到的 WSGI 可调用量。

已知在 myapp.py 中有一个 flask 应用,使用下面的命令:

$ uwsgi -s /tmp/uwsgi.sock --module myapp --callable app

或者,你喜欢这样:

$ uwsgi -s /tmp/uwsgi.sock -w myapp:app

配置 nginx

一个基本的 flaks uWSGI 的给 nginx 的配置看起来是这样:

location = /yourapplication { rewrite ^ /yourapplication/; }

location /yourapplication { try_files $uri @yourapplication; }

location @yourapplication {

include uwsgi_params;

uwsgi_param SCRIPT_NAME /yourapplication;

uwsgi_modifier1 30;

uwsgi_pass unix:/tmp/uwsgi.sock;

}

这个配置绑定应用到 /yourapplication 。如果你想要绑定到 URL 根会更简单,因你不许要告诉它 WSGI SCRIPT_NAME 或设置 uwsgi modifier 来使用它:

location / { try_files $uri @yourapplication; }

location @yourapplication {

include uwsgi_params;

uwsgi_pass unix:/tmp/uwsgi.sock;

}

---------------------------------------------------------

[root@www.linuxidc.com webserver]# uwsgi --http :9090 --wsgi-file home.py --daemonize /var/log/uwsgi.log --master --harakiri 60 --socket-timeout 10 -w home:app

如果出现错误:

uwsgi: option ‘--http‘ is ambiguous

换成这种写法

uwsgi --http-socket :9090 --wsgi-file home.py --daemonize /var/log/uwsgi.log --master --harakiri 60 --socket-timeout 10 -w home:app

囧,接着又出现错误:

uwsgi: unrecognized option ‘--wsgi-file‘

sudo uwsgi --http-socket :9090 --plugin python  --wsgi-file home.py --daemonize /var/log/uwsgi.log --master --harakiri 60 --socket-timeout 10 -w home:app

sudo /usr/local/bin/uwsgi --http-socket :9090 --plugin python  --wsgi-file /home/wwwroot/webserver/home.py --daemonize /var/log/uwsgi.log --master --harakiri 60 --socket-timeout 10 -w home:app

给出的解释是:

uwsgi 时都会碰到uwsgi: unrecognized option ‘--uwsgi-file‘如 --module , --wsgi-file , --callable 等,最 始我也碰到这样的问题, uwsgi --help 得到一大堆帮助信息(吐槽下, uWSGI 用户接口方面太不友好了,输出这么一大堆信息会吓着初学者,而且也 很难从中找到需要的帮助信息,要是你用管道加 less ,那我就无话可说了), 找了下发现的确没有这些选项,第一反应是版本对不上,后来发现相同版本也 会遇到这个问题,然后才找到问题的根源,需要在上面那些未识别选项前加上 --plugin python 来告诉 uWSGI 我在使用 python 插件,后面那些选项你 用python 插件去解析。

遇到的问题:

发现用的uwsgi是python 2.6.6版本的,于是sudo yum remove uwsgi,然后使用sudo pip install uwsgi,此时的话就不需要加--plugin python的参数,写为

sudo /usr/local/bin/uwsgi --http-socket :9090 --wsgi-file /home/wwwroot/webserver/home.py --daemonize /var/log/uwsgi.log --master --harakiri 60 --socket-timeout 10 -w home:app

即可。

更多参考

Ubuntu Server 14.04.2 LTS 配置 Nginx + Uwsgi + Django  http://www.linuxidc.com/Linux/2015-04/116397.htm

0b1331709591d260c1c78e86d0c51c18.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值