CentOS 下用 Nginx 和 uwsgi 部署 flask 項目


前幾天利用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里設置的日志文件。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM