利用Nginx+Uwsgi+Flask部署python webapi

環境使用的aliyunos,是基於centos版本的linux

先看了下python版本,默認安裝了2.7和3.6

先安裝flask

pip3 install flask

安裝完成後,先寫個test.py

from flask import Flask

app = Flask(__name__)
 
@app.route('/')
def hello_world():
    return 'Hello World!'

if __name__ == '__main__':
    app.run()

具體代碼就不多解釋了,懂python都能看懂,看不懂看下flask的文檔也能看懂,然後運行看看效果

python3 test.py 

注意使用python3,然後打開瀏覽器訪問http://127.0.0.1:5000 能看到hello world就表示成功了

由於flask運行不是很穩定,而且我們是需要服務器在後臺運行webapi的,就需要nginx和uwsgi

 先安裝下uwsgi,注意帶上參數要加上python36插件

yum install -y uwsgi-plugin-python36

安裝完畢後,寫個conf.ini文件,如下

[uwsgi]

socket = 127.0.0.1:3031

chdir = /root/server/

plugins = python36

wsgi-file = /root/server/test.py

callable = app

processes = 4

ithreads = 2

daemonize = /root/server/log/server.log

stats = 127.0.0.1:9191

具體參數不多解釋了,應該能都看懂,看不懂可以參考uwsgi文檔

然後運行 uwsgi conf.ini,可以看看server.log文件,有沒有什麼報錯

再安裝下nginx

yum install nginx

修改下配置文件,默認一般在/etc/nginx/nginx.conf,加入uwsgi的配置內容

location / {

                include uwsgi_params;

                uwsgi_pass 127.0.0.1:3031;    # 轉發端口,需要和uwsgi配置當中的監聽端口一致

                # uwsgi_param UWSGI_PYTHON /home/自己創建的目錄/venv;       # Python解釋器所在的路徑(這裏爲虛擬環境)

                uwsgi_param UWSGI_CHDIR /root/server;             # 項目根目錄

                uwsgi_param UWSGI_SCRIPT manage:app; #(比如你測試用test.py文件,文件中app = Flask(__name__),那麼這裏就填  test:app

        }

我沒用虛擬環境,所以把虛擬環境的配置註釋掉了

保存後啓動nginx,訪問  http://127.0.0.1 ,能夠看到hello world說明成功了

說下踩過的坑

  1. 注意python版本
  2. 注意uwsgi一定要帶對應python版本的插件
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章