安裝 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 訪問(或直接讀取該套接字:))。