1、 安裝 python3 和 pip3
參考:http://www.cnblogs.com/mqxs/p/8692870.html
2、安裝 lnmpa 集成開發環境
參考:http://www.cnblogs.com/mqxs/p/8706353.html
3、gunicorn安裝
參考資料: gunicorn
pip install gunicorn
4、flask 安裝
參考資料: flask
pip install flask
pip install virtualenv
5、virtualenv 使用
參考資料: virtualenv
$ mkdir myproject
$ cd myproject
$ virtualenv venv
$ . venv/bin/activate
6、從倉庫下載 flask 工程文件
1.git 操作, 當然也可以直接用filezila 將工程傳遞上去
注意這里需要同時安裝 工程相關的依賴插件 flask-login 之類的
2.需要特別注意的是, 使用 pip install xxx
和 sudo pip install xxx
的效果是不一樣的, 由於我們最終使用sudo運行, 因此, 這里所有依賴的插件都應該使用 sudo pip
進行安裝, 否則運行錯誤
7、運行工程項目
helloworld.py
from flask import Flask app = Flask(__name__) @app.route('/') def hello_world(): return 'Hello World!' if __name__ == '__main__': app.run()
gunicorn -w 3 -b 127.0.0.1:8000 helloworld:app
1.這里使用gunicorn 啟動工程
2.這里說明一下:
- D 表示后台運行 (PS.我試了加了-D就啟動失敗了,原因未知)
- w 表示有3 個 工作線程(感覺有些類似 nginx 的 master-worker 模型)
- b 指定ip 和端口
- 這里采用本機訪問, 主要是為了使用nginx 進行代理, 方便管理
- application 表存放 寫着全局變量 app 的那個工程文件
- 在我們的這個工程中, 即包含 init.py 的那個文件
- app 為全局變量 (app = Flask(__name__)
)
- ps: 在下面圖示文件夾中運行 gunicorn 指令
到達這一步,你可以在本機的瀏覽器上訪問127.0.0.1:8000,瀏覽器上就會出現Hello World!
注意:如果是想通過外網訪問的話就要把ip改為內網的ip,外網直接用外網ip登陸即可。
還有一點要注意的,如果外網無法連接(當時一直以為部署失敗了),需要去阿里雲那邊修改安全組配置,修改配置規則,將自己的端口加入,才可以外網訪問。
如下圖:
3.參考資料: Docs » Running Gunicorn
8、 配置nginx 服務器腳本
1.安裝完的nginx 在 /usr/local/nginx
目錄下, 我們可以找到conf
文件夾下的 nginx.conf
文件, 將其修改
2.添加nginx 需要監聽的端口信息
server { listen 8001; server_name instagram.zhyh2010.com; location /{ proxy_pass http://127.0.0.1:8000; } }
實際上, 我們將外部通過 8001 端口發送過來的請求, 代理給了 127.0.0.1:8000
也就是我們的 flask 項目
記得完成 nginx 需要重新起動 nginx 服務喔!
sudo service nginx restart
9、防火牆設置
1. 參考資料:
解決 RHEL 7/ CentOS 7/Fedora 出現Unit iptables.service failed to load
linux 中防火牆配置 iptables 命令參數的含義介紹
2.防火牆設置信息
1.可以看到 我們的8000, 8001 端口都是開放的, 但是 8000 端口上沒有程序監聽 (我們的程序只監聽本機的 8000 端口)
而 8001 端口是通過 nginx 監聽的。
2.端口監聽信息
參考原文:https://blog.csdn.net/zhyh1435589631/article/details/51946439