部署flask hello world到阿里雲服務器
在阿里雲上部署flask項目,需要三步:
1.配置阿里雲
2.配置gunicorn
3.配置nginx
阿里雲的配置
基於centos-7.4系統(阿里雲實例),使用 Gunicorn + Nginx 進行布署,雲服務器為阿里雲
你的阿里雲服務器會有一個實例,需要做一些配置
登錄阿里雲
如果忘了你的密碼或者用戶名,就給阿里雲的客服打電話吧,他會給你安排的明明白白的。
找到你的實例(如果你之前買好了,注意你在哪個區)

在自己的虛擬機上搭建一個小項目
工程項目代碼
helloworld.py
from flask import Flask app = Flask(__name__) @app.route('/') def index(): return 'hello world' if __name__ == '__main__': app.run()
gunicorn
搭建好以后跑一下,沒問題的話就可以。但是這是基於falsk自帶的web服務器,所以在阿里雲上要用gunicorn來代替,它能讓你的程序跑起來。
安裝
pip install gunicorn
使用gunicorn 啟動工程
通過命令行啟動它
gunicorn -w worker數量 -b ip:端口號 運行文件名:flask實例名
例:
gunicorn -w 3 -b 127.0.0.1:5000 helloworld:app
這里說明一下
后台運行
gunicorn -D -w 3 -b 127.0.0.1:5000 helloworld:app
gunicorn命令的參數:
- D 表示后台運行
- w 表示有3 個 工作線程(感覺有些類似 nginx 的 master-worker 模型)
- b 指定ip 和端口
- 這里采用本機訪問, 主要是為了使用nginx 進行代理, 方便管理
- application 表存放 寫着全局變量 app 的那個工程文件夾
- 在我們的這個工程中, 即包含 init.py 的那個文件
- app 為全局變量 (app = Flask(__name__))
- ps: 在下面圖示文件夾中運行 gunicorn 指令
到達這一步,可以在linux服務器本地上訪問(127.0.0.1:8000)
注意:如果想通過本地Windows訪問的話,還需安裝nginx,把ip改為阿里雲的公網的ip.
nginx
詳細流程參考 https://www.runoob.com/linux/nginx-install-setup.html
nginx安裝
cd /usr/local/src
wget http://nginx.org/download/nginx-1.1.10.tar.gz
tar -zxvf nginx-1.1.10.tar.gz
cd nginx-1.1.10
./configure
make
make install
nginx配置
1.安裝完的nginx 在 /usr/local/nginx 目錄下, 我們可以找到conf文件夾下的 nginx.conf 文件, 將其修改
2.添加nginx 需要監聽的端口信息
server {
listen 8001;
server_name localhost;
location /{
proxy_pass http://127.0.0.1:5000; }
}

實際上, 我們將外部通過 8088 端口發送過來的請求, 代理給了 127.0.0.1:5000 也就是我們的 flask 項目
部署項目時 請求流程
Client <===> Nginx <===> gunicorn <===> Flask服務
記得修改完配置文件,需要重新載入配置文件!!!
檢查配置文件nginx.conf是否正確
$ /usr/local/nginx/sbin/nginx -t
啟動nginx
$ /usr/local/nginx/sbin/nginx
nginx其他命令
$ /usr/local/nginx/sbin/nginx -s reload # 重新載入配置文件
$ /usr/local/nginx/sbin/nginx -s reopen # 重啟nginx
$ /usr/local/nginx/sbin/nginx -s stop # 停止nginx
nginx快速停止
$ ps -ef | grep nginx #查看進程號

$ kill -9 25276 #殺死進程
$ pkill -9 nginx # 強制停止
小結
將要部署的項目上傳至服務器,安裝gunicorn,開啟gunicorn,在服務器本地上調通url。然后在阿里雲上安裝nginx,編輯配置文件,
開啟nginx,通過公網ip訪問一下看看是否成功。
快速開啟服務樣例
開啟gunicorn
#在啟動腳本所在路徑下
cd /root/homework/flask_test
gunicorn -D -w 3 -b 127.0.0.1:5000 api_server:app

開啟nginx
#在/usr/local/nginx路徑下
sbin/nginx
