uwsgi的配置
可以通过命令来实现,也可以写在各种类型的配置文件中,这里我使用的是.ini的格式。
socket应用程序运行在本地的88端口上
wsgi-file指出项目启动文件的名字
callable 代表flask实例的名字,即app=Flask(name)
uwsgi的配置参数还有很多,这里就不列举了。
nginx的配置
nginx的配置文件在 /etc/nginx/nginx.conf中,写在下面这两个文件也可以
在http中添加server,listen参数选择nginx要监听的端口,server_name可以写域名和ip。
如果uwsgi使用的是socket就像上图一样配置就可以了,uwsgi_pass 后面的ip和端口要和uwsgi的一样才可以。
但是如果uwsgi使用的http,location则需要如下配置:
location /{
proxy_pass http://127.0.0.1:88
}
同理proxy_pass的ip和端口应该是uwsgi中的一样,location后面的路径是对路由的限制,如果为/index/就只能访问index路由下的网页。
关于uwsgi中使用http和socket的区别
如果使用http,uwsgi与nginx之间的通信协议是http协议,如果使用socket,uwsgi与nginx之间的通信是使用uwsgi协议,据说uwsgi协议要快很多,所以一般通过nginx转发的话都会使用socket。第一个坑
如果我们不使用nginx,直接用uwsgi作为web服务器或者测试自己的uwsgi配置成功没有,第一行应该写为http,就可以直接在浏览器中访问到页面了,使用socket的话就不行。第二个坑
如果发现nginx监听80端口就只能访问到"Welcome to Nginx"页面,不能转发给uwsgi时,但是使用其他页面就可以。那是因为80端口被nginx的默认页面占用了。我们进入/etc/nginx/sites-enables/的目录下有一个default 文件。80端口就是被这个占用了,我们将这个default文件删掉或者改变上面这个监听端口就可以了。