nginx+uWSGI+supervisor+flask項目部署

flask_project.png

<center>nginx+uWSGI+supervisor+flask項目部署</center>

nginx+uWSGI+Flask+Supervisor部署項目

    OS version: Ubuntu 16.04.2
    nginx version: nginx/1.10.3 (Ubuntu)
    uWSGI version: uWSGI (2.0.15)
    Flask version: Flask (0.12.2)
    Supervisor version: Supervisor(3.2.0)

nginx 配置 新建文件 /etc/nginx/conf.d/xxx.conf xxx.conf 中xxx你來定

刪除/etc/nginx/sites-enabled/ 以及 /etc/nginx/sites-available/ 下所有文件
你可以這么玩,sudo rm -f /etc/nginx/sites-enabled/default
為什么這么做呢?
先看nginx.conf里面有:
include /etc/nginx/conf.d/.conf;
include /etc/nginx/sites-enabled/
;
而sites-enabled里面也有default這種文件,我這么做的原因是刪了看著干凈。以后做擴(kuò)展找起來也好找,都在conf.d目錄下。

極簡配置
客戶端訪問80端口,有Nginx接受到請求,并下發(fā)到服務(wù)器6001端口進(jìn)行處理,6001端口會部署一個uWSGIweb服務(wù)器.

server {
      listen  80;
      server_name www.smallstrong.site; #公網(wǎng)地址

      location / {
        include      uwsgi_params;
        uwsgi_pass   127.0.0.1:6001;
      }
}

Nginx常用的幾個命令:
sudo service nginx start
sudo service nginx stop
sudo service nginx restart

pip全局安裝virtualenv在自己項目根目錄新建一個獨立的Python環(huán)境

  1. pip install virtualenv
  2. cd 到你項目根目錄
  3. virtualenv api_env
  4. source api_env/bin/activate (deactivate 可退出)
  5. 接下來pip來安裝自己需要的Python庫,Flask,uWSGI等(依賴問題自行解決)
py_env.png

接下來寫一個最簡單的Flask應(yīng)用

#! /usr/bin/env python
# -*- coding: utf-8 -*-

from flask import Flask

app = Flask(__name__)

whale_apis = {
    'test'
}


@app.route('/api/<func>', methods=['GET', 'POST'])
def go(func):
    exec 'import fe.' + func
    data = eval('fe.' + func + '.go()')
    return data


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

上面的代碼是我的flask網(wǎng)絡(luò)框架的主入口,路由是/api/方法名稱,默認(rèn)接受GET 和 POST請求,動態(tài)導(dǎo)入工程目錄下fe目錄下的同方法名文件,執(zhí)行g(shù)o方法并返還數(shù)據(jù)。fe目錄是所有網(wǎng)絡(luò)請求目錄,后續(xù)在剖析Flask應(yīng)用會詳細(xì)介紹。

寫好Flask入口之后,寫一個uWSGI服務(wù)器的配置文件

[uwsgi]

# uwsgi 啟動時所使用的地址與端口
socket = 127.0.0.1:6001

module = manage:app

# 處理器數(shù)
processes = 4

# 線程數(shù)
threads = 2

req-logger = file:/home/small/logs/req.log

logger = file:/home/small/logs/err.log

放在項目根目錄下,取名叫uwsgi.ini
這時候 命令行輸入 uwsgi uwsgi.ini 即開啟了uWSGI服務(wù)器。

Supervisor安裝管理uwsgi進(jìn)程

[program:whale_api]
command=/home/small/whale/whale_api/api_env/bin/uwsgi  /home/small/whale/whale_api/uwsgi.ini

directory=/home/small/whale/whale_api
user=root

autostart=true
autorestart=true
startretries=3
stdout_logfile=/home/small/logs/supervisor_out.log
stderr_logfile=/home/small/logs/supervisor_err.log                                                                                                         

默認(rèn)生成的配置文件里面會有一部分要修改,包括日志輸出位置。
serverurl=unix:///var/run/supervisor.sock找不到原因是你殺死supervisord進(jìn)程重新開或是權(quán)限不足,反正這塊坑還是比較多的

啟動supervisor
sudo supervisord -c supervisord.conf
管理常用指令:
sudo supervisorctl shutdown //會關(guān)閉supervisor進(jìn)程和其管理的子進(jìn)程
sudo supervisorctl status //查看現(xiàn)在運行的supervisor進(jìn)程的狀態(tài)
sudo supervisorctl start
sudo supervisorctl stop
sudo supervisorctl restart

昨晚的結(jié)果就是:

py_bushu.png

這只是萬里長征第一步。寫下這些命令也只是方便日后出問題了來查閱,不至于很悶逼。相信還有很多未知的問題在等待這我,等我踩完會繼續(xù)在文章中填上。下班回家!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容