安装 nginx 并为 uWSGI 设置它
现在我们要安装 nginx 来为我们的应用程序提供服务。
sudo apt-get install nginx # on debian/ubuntu
然后我们为我们的网站创建配置
cd /etc/nginx/site-available # go to the configuration for available sites
# create a file flaskconfig with your favourite editor
flaskconfig
server {
listen 80;
server_name localhost;
location / {
include uwsgi_params;
uwsgi_pass unix:///tmp/flask.sock;
}
}
这告诉 nginx 监听端口 80(默认为 http)并在根路径(/
)上提供服务。在那里,我们告诉 nginx 简单地充当代理并将每个请求传递给位于/tmp/
的名为 flask.sock
的套接字。
让我们启用该网站:
cd /etc/nginx/sites-enabled
sudo ln -s ../sites-available/flaskconfig .
如果启用,你可能希望删除默认配置:
# inside /etc/sites-enabled
sudo rm default
然后重启 nginx:
sudo service nginx restart
将浏览器指向 localhost
,你将看到错误:502 Bad Gateway
。
这意味着 nginx 已启动并正常工作,但缺少套接字。所以我们创建它。
回到你的 uwsgi.ini
文件并打开它。然后追加这些行:
socket = /tmp/flask.sock
chmod-socket = 666
第一行告诉 uwsgi 在给定位置创建一个套接字。套接字将用于接收请求并发回响应。在最后一行中,我们允许其他用户(包括 nginx)能够从该套接字读取和写入。
用 uwsgi --ini uwsgi.ini
再次启动 uwsgi。现在再次将浏览器指向 localhost
,你将再次看到 Hello uWSGI
问候语。
请注意,你仍然可以在 localhost:5000
上看到响应,因为 uWSGI 现在通过 http 和套接字为应用程序提供服务。所以让我们禁用 ini 文件中的 http 选项
http = :5000 # <-- remove this line and restart uwsgi
现在应用程序只能从 nginx 访问(或直接读取该套接字:))。