安装 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 访问(或直接读取该套接字:))。