前幾天利用flask 寫了幾個調用salt-api 的接口,需要上線到正式環境,搜了一下 都是 用 nginx + uwsgi 來部署,這里記錄下關鍵的配置項。
1.首先將代碼上傳到服務器上目錄為:
/home/www/wwwroot/salt-api
2.配置服務器代理
使用的代理一共有兩個,nginx和uwsgi,先說明一下,如果不用nginx一樣可以訪問你的項目,使用nginx的目的是為了安全和負載均衡。配置了nginx做前端代理,uwsgi作后端代理的服務器(這里所說的前后端都是相對的位置,並無實際含義),在處理來自Internet的請求時,要先經過nginx的處理,nginx把請求再交給uwsgi,經過uwsgi才能訪問到項目本身。
沒有nginx而只有uwsgi的服務器,則是Internet請求直接由uwsgi處理,並反饋到我們的項目中。
nginx可以實現安全過濾,防DDOS等保護安全的操作,並且如果配置了多台服務器,nginx可以保證服務器的負載相對均衡。
而uwsgi則是一個web服務器,實現了WSGI協議(Web Server Gateway Interface),http協議等,它可以接收和處理請求,發出響應等。所以只用uwsgi也是可以的。
先安裝uwsgi
pip3.6 install uwsgi
在你的項目根目錄下創建一個配置文件uwsgi.ini(uwsgi支持多種配置文件格式,xml,ini,json等)
#監聽的ip和端口 socket = 127.0.0.1:8080 #項目目錄 chdir = /home/www/wwwroot/salt-api/ #flask程序的啟動文件,通常在本地是通過運行 wsgi-file = app.py #程序內啟用的application變量名 callable = app #處理器個數 processes = 2 #獲取uwsgi統計信息的服務地址 stats = 127.0.0.1:9191
保存配置文件,我們可以通過鍵入 uwsgi uwsgi.ini
來啟動uwsgi。
如果需要后台方式啟動並且指定日志:
uwsgi uwsgi.ini -d /var/log/uwsgi/uwsgi.log
編寫nginx 配置 ,在vhosts里新增一個flask.conf文件
[root@wechat02 vhost]# cat flask.conf server { listen 8080; server_name 127.0.0.1; #訪問ip location / { include uwsgi_params; uwsgi_pass 127.0.0.1:5000; #代理到uwsgi.ini里兼容的ip和端口 } }
然后重新加載nginx配置
nginx -s reload
到此,我們終於完成了所有的工作,馬上就可以訪問自己的項目了。
curl http://127.0.0.1:8080/
如果一切順利的話,顯示的就是你想要的頁面了,如果不是,首先查看一下ini里設置的日志文件。