前言:一般在本地運行flask項目通常是直接python3 文件名.py,然后打開:http://127.0.0.1:5000 查看代碼結果
這次主要是記錄flask在python3 環境結合nginx +gunicorn在服務器上進行項目的部署
(一)運行環境:
虛擬機centos7
python3 環境
nginx
gunicorn
virtualenv
難點:nginx gunicorn的安裝配置
(二)nginx、gunicorn簡介
Nginx是一款輕量級的Web 服務器/反向代理服務器及電子郵件(IMAP/POP3)代理服務器,并在一個BSD-like 協議下發行。其特點是占有內存少,并發能力強,事實上nginx的并發能力確實在同類型的網頁服務器中表現較好,中國大陸使用nginx網站用戶有:百度、京東、新浪、網易、騰訊、淘寶等
gunicorn是一個python Wsgi http server,只支持在Unix系統上運行,來源于Ruby的unicorn項目。Gunicorn使用prefork master-worker模型(在gunicorn中,master被稱為arbiter),能夠與各種wsgi web框架協作。
(三)軟件安裝
(1)首先安裝gunicorn
直接使用命令:pip install gunicorn
(2) 將gunicorn 加入到app.run()中,
這里我在路徑為:/home/flaskproject/flaskweb 下新建一個myweb.py 作為入口函數
代碼為:
from flask import Flask
app = Flask(__name__)
@app.route('/')
def index():
return 'hello world'
if __name__ == '__main__':
from werkzeug.contrib.fixers import ProxyFix
app.wsgi_app = ProxyFix(app.wsgi_app)
app.run(
1
2
3
4
5
6
7
8
9
10
(3)用命令啟動gunicorn
在myweb.py路徑下,一定要記住是當前路徑下!!
方式一:
gunicorn myweb:app
1
python 虛擬環境的安裝:
pip install virtualenv
1
然后一頓騷操作:
mkdir flaskproject
cd flaskproject
virtualenv flaskprojectenv
1
2
3
4
5
然后進行激活:
source flaskprojectenv/bin/activate
1
正如下圖一樣的騷操作,之前我也是很少用虛擬環境的,現在感覺虛擬環境并沒有那么神秘,因為以前是很拒絕,不會用,不過這次是會用了,
退出虛擬環境的命令是:deactivate(這里我只是說一下)
這時候我們本地服務器看一下是否運行起來(已經有hello world):
[root@localhost flaskproject]# curl http://127.0.0.1:8000
hello world[root@localhost flaskproject]#
1
2
ctrl + c 停掉當前環境,我們使用第二種方式試一下
專門為處理高并發則要開多個進程和修改監聽端口方式:
gunicorn -w 4 -b 127.0.0.1:8000 入口文件名:app
1
如下代碼:
(flaskprojectenv) [admin@localhost flaskweb]$ gunicorn -w 4 -b 127.0.0.1:8000 myweb:app
[2018-05-28 10:57:11 -0400] [1813] [INFO] Starting gunicorn 19.8.1
[2018-05-28 10:57:11 -0400] [1813] [INFO] Listening at: http://127.0.0.1:8000 (1813)
[2018-05-28 10:57:11 -0400] [1813] [INFO] Using worker: sync
[2018-05-28 10:57:11 -0400] [1816] [INFO] Booting worker with pid: 1816
[2018-05-28 10:57:11 -0400] [1817] [INFO] Booting worker with pid: 1817
[2018-05-28 10:57:11 -0400] [1819] [INFO] Booting worker with pid: 1819
[2018-05-28 10:57:11 -0400] [1821] [INFO] Booting worker with pid: 1821
1
2
3
4
5
6
7
8
本地服務器已經運行了,但是我們遠程并不能進行訪問(win10訪問虛擬機)
?
說明端口號沒有打開,這時候我們需要把防火墻,端口號什么的都進行設置一下,可以看一下這篇博客:linux下nginx首次安裝遠程無法訪問
主要是兩個命令:
[root@localhost nginx-1.12.1] systemctl stop firewalld
[root@localhost nginx-1.12.1] systemctl stop iptalbes
1
2
接下來:我們進行nginx的配置安裝與gunicorn的相結合并進行部署。
---------------------
作者:xudailong_blog
來源:CSDN
原文:https://blog.csdn.net/xudailong_blog/article/details/80490137
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!