亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 網站 > Nginx > 正文

centos 7.0 使用Nginx部署flask應用教程

2024-08-30 12:29:20
字體:
來源:轉載
供稿:網友

參考文章:http://www.49028c.com/fuwuqi/299377.html

修改說明:修改nginx配置部分,更換配置文件內容及路徑;從ip訪問切換到域名訪問

前言

最近博主在開發一個小項目,本機的開發環境是python3.6,因為需要部署到服務器(python2.7)的關系,所以研究了一下,網上大部分的教程是部署在Ubuntu上的,博主使用的是centos7.0,大部分的部署其實都是類似的,這篇博文對完完全全的新手可能會有所幫助,對遇到的一些困惑也可以進行描述。

環境準備

python包安裝工具pip : sudo apt-get install pip
virtualenv:為了避免系統環境與應用環境之間的沖突,使用虛擬環境來安裝應用的依賴,virtualenv可以為每個python應用創建獨立的開發環境,安裝方式:sudo pip install virtualenv

虛擬環境使用

flask項目地址:/usr/local/flasky,只需要在項目地址下運行指令:

virtualenv venv

約定俗成一般使用“venv”作為虛擬環境的名稱,這樣我們就創建了一個虛擬環境的文件夾venv如下圖紅框所示:

Nginx,flask

接下來激活虛擬環境,只用指令

source venv/bin/activate

Nginx,flask

激活虛擬環境后,命令行抬頭會有(venv)標識,僅需虛擬環境后,一切安裝python的操作都會講包和引用裝在虛擬環境中,不會影響全局的python環境

退出虛擬環境的指令,直接敲:

deactivate

即可退出虛擬環境

配置flask應用環境

flask應用開發的時候,會應用到非常多的模板,“狗書”中有介紹一種比較方便的方式,直接把開發環境的flask依賴等導出為一個txt文件,然后在centos的虛擬環境中使用相應指令根據這個txt文件安裝會非常方便。

pip freeze >requerements.txt

 該指令導出一個文件名為requirements.txt的文本,里面的內容如下圖所示

Nginx,flask

然后centos中使用以下指令

pip install -r requerments.txt

這樣就會在虛擬環境中安裝一個與開發環境一致的副本了。
注意一定要在虛擬環境中使用批量安裝指令,不然就安裝到全局去了,后果還是比較蛋疼的。

安裝uWSGI

flask的實際生產運行環境選擇不多,比較成熟的是【Gunicorn】和【uWSGI】,這里推薦一本書董偉明的《Python Web開發實戰》里面有講這兩種部署。

以下內容來自百度百科:

uWSGI是一個Web服務器,它實現了WSGI協議、uwsgi、http等協議。Nginx中HttpUwsgiModule的作用是與uWSGI服務器進行交換。WSGI是一種Web服務器網關接口。它是一個Web服務器(如nginx,uWSGI等服務器)與web應用(如用Flask框架寫的程序)通信的一種規范。
安裝指令如下,注意一定要保證已經進入了虛擬環境并激活:

pip install uwsgi

不需要使用sudo ,因為virtualvenv沒有權限要求。

上傳項目文件

博主使用的linux連接工具是xshell,在之前的一篇文章http://www.49028c.com/article/130991.htm中有講如何上傳文件到linux主機,這里不再詳細說明,展示一下大概的項目結構以及啟動文件manage.py

Nginx,flask

tree命令可以以樹形圖的形式展示文件結構,可以賦予參數設置樹的深度,這里博主展示了2層
安裝命令:

sudo apt-get install tree

manage.py代碼如下

#coding=utf-8#!/usr/local/flasky/venv python'''Created on 2017/11/9@author: Savitar丶Project:'''import osfrom app import create_appfrom flask_script import Manager, Shellapp = create_app(os.getenv('FLASK_CONFIG') or 'default')manager = Manager(app)def make_shell_context(): return dict(app=app)manager.add_command("shell", Shell(make_context=make_shell_context))@manager.commanddef deploy(): """Run deployment tasks.""" passif __name__ == '__main__': manager.run() #app.run()

命令行運行flask項目

python manage.py runserver

以上命令一般都是在開發環境進行調試的時候使用,或者注釋掉“manager.run()”,使用“app.run()”,后者可以直接在pycharm中執行項目,這里不再詳細說明

配置uWSGI

我們直接在flask的根目錄下面新建一個文件“config.ini”,使用的方式是配置啟動。文件內容如下

[uwsgi]# uwsgi 啟動時所使用的地址與端口socket = 127.0.0.1:5000#虛擬環境目錄 home = /usr/local/flasky/venv#指向網站根目錄chdir = /usr/local/flasky#python啟動程序文件wsgi-file = manage.py#python程序內用于啟動的application變量名callable = app#處理器數processes = 4#線程數threads = 2#狀態監測地址stats = 127.0.0.1:9191#設置uwsgi包解析的內部緩存區大小。默認4kbuffer-size = 32768

配置文件的執行方式,命令行輸入指令:

uwsgi config.ini

或者不寫配置文件(不建議這樣做),直接命令行輸入

uwsgi –socket 127.0.0.1:5000 –wsgi-file manage.py –callable app –process 4 –threads 2

這里的callable=app 這個app是manage.py程序文件內的一個變量,這個變量的類型是flask的application類

Nginx,flask

這里是因為博主已經配置好了項目自啟動,已經有一個配置文件在運行了,大家按照正常流程配置就好。ctrl+c關閉程序,在實際項目中我們的服務器上可能會有多個項目在運行,我們需要應用隨同服務器啟動并作為后臺服務運行才是實際項目需要,所以我們需要安裝另一個工具來引導執行uwsgi

安裝supervisor

supervisor可以同時啟動多個應用,最重要的是當某個應用down掉的時候,他可以自動重啟該應用,保證可用性。

sudo apt-get install supervisor

supervisor的全局配置文件在

Nginx,flask

打開該默認配置文件,最下面一行我們看到,該默認配置文件會從 /etc/supervisord/目錄下面加載所有的配置文件

Nginx,flask

我們不需要修改默認的配置文件,只需要在/etc/supervisord/目錄下新建一個配置文件(命名為flask_supervisor.conf)
Nginx,flask

該文件內容如下:

[program:flasky]# 啟動命令入口command=/usr/local/flasky/venv/bin/uwsgi /usr/local/flasky/config.ini# 命令程序所在目錄directory=/usr/local/flasky#運行命令的用戶名user=rootautostart=trueautorestart=true#日志地址stdout_logfile=/usr/local/flasky/logs/uwsgi_super.log

這里command這一行代碼看起來很長,其實就是之前我們的 “uwsgi config.ini”指令,這里使用的是絕對路徑,保證命令和文件的準確性,大家也可以copy這一行代碼出去執行,結果是ok的。autostart和autorestart參數保證了我們的應用可以一直保持啟動的狀態,即使是down掉了也能重啟服務。

啟動服務

sudo service supervisor start

終止服務

sudo service supervisor stop

安裝Nginx

Nginx是輕量級,性能強,占用資源少,能很好的處理高并發的反向代理軟件。

正向代理和反向代理

正向代理,作為一個媒介將互聯網上獲取的資源返回給相關聯的客戶端。代理和客戶端在一個局域網,對于服務是透明的。反向代理,根據客戶端的請求,從后端的服務器上獲取資源,然后再講這些資源返回給客戶端。代理和服務器再一個局域網,對客戶端是透明的。Nginx是反向代理的最佳選擇。

反向代理的作用

提高動態語言的IO處理能力
加密和SSL加速
安全。
負載均衡
緩存靜態內容
支持壓縮。

Nginx安裝指令:

sudo apt-get install nginx

配置Nginx

我們找到nginx的配置文件,不要修改默認的nginx.conf(路徑 /etc/nginx/nginx.conf)文件,只需要在同樣的文件夾下面新建一個文件夾(conf.d)然后在conf.d下面新建配置文件(flask_ng.conf)即可,如下圖

Nginx,flask

flask_ng.conf文件內容如下

server {  listen 80;  server_name www.cloud-test.com; #公網地址  location / {  include  uwsgi_params;  uwsgi_pass 127.0.0.1:5000; # 指向uwsgi 所應用的內部地址,所有請求將轉發給uwsgi 處理  uwsgi_param UWSGI_PYHOME /usr/local/flasky/venv; # 指向虛擬環境目錄  uwsgi_param UWSGI_CHDIR /usr/local/flasky; # 指向網站根目錄  uwsgi_param UWSGI_SCRIPT manage:app; # 指定啟動程序  } }

啟動Nginx

sudo service nginx restart

然后瀏覽器直接訪問服務器http://www.cloud-test.com地址,結果如下

Nginx,flask

小case,解決辦法,直接修改本機hosts,綁定就好了,如下圖所示

Nginx,flask

然后再去訪問http://www.cloud-test.com

Nginx,flask

然后也可以找自己的同事一起訪問,看看并發請求,網站的運行情況,想來能解決在開發環境使用了host 0.0.0.0 也只能處理一個用戶的請求的問題

查看應用的運行情況

supervisorctl 是 supervisord 的命令行客戶端工具,使用的配置和 supervisord 一樣,這里就不再說了。下面,主要介紹 supervisorctl 操作的常用命令:
輸入命令 supervisorctl 進入 supervisorctl 的 shell 交互界面(還是純命令行),可以看到應用的運行情況
就可以在下面輸入命令了。:

help # 查看幫助
status # 查看程序狀態
stop program_name # 關閉 指定的程序
start program_name # 啟動 指定的程序
restart program_name # 重啟 指定的程序
tail -f program_name # 查看 該程序的日志
update # 重啟配置文件修改過的程序(修改了配置,通過這個命令加載新的配置)

也可以直接通過 shell 命令操作:

supervisorctl status
supervisorctl update

Nginx,flask


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久免费视频在线观看| 77777亚洲午夜久久多人| 深夜福利国产精品| 日韩欧美中文第一页| 欧美精品成人在线| 国产精品电影网| 国产日韩欧美在线视频观看| 日韩的一区二区| 中文字幕不卡av| 亚洲一区二区在线播放| www.久久撸.com| 欧美高清视频一区二区| 亚洲图片在线综合| 日韩av第一页| 国产精品美女主播在线观看纯欲| 欧洲成人在线观看| 中文字幕一区电影| 久久av红桃一区二区小说| 欧美精品video| 国产精品美女久久久免费| 91午夜在线播放| 欧美另类xxx| 久久久精品一区| 国产在线拍揄自揄视频不卡99| 成人黄色在线播放| 97免费在线视频| 亚洲国产精品国自产拍av秋霞| 一区二区三区无码高清视频| 97超碰色婷婷| 最近2019好看的中文字幕免费| 91精品视频在线看| 日韩欧美在线国产| 久久免费视频在线观看| 日韩中文在线中文网在线观看| 国精产品一区一区三区有限在线| 色偷偷偷亚洲综合网另类| 日韩av在线一区二区| 欧美日韩成人在线观看| 在线亚洲午夜片av大片| 日韩不卡在线观看| 中文字幕国内精品| 亚洲精品mp4| 亚洲午夜精品久久久久久性色| 日韩小视频网址| 亚洲图片制服诱惑| 国产精品久久精品| 色哟哟入口国产精品| 成人综合网网址| 久久久久成人网| 日韩中文字幕在线精品| 亚洲网址你懂得| 中文字幕欧美视频在线| 国产精品专区h在线观看| 国产精品无码专区在线观看| 久久人人爽人人爽爽久久| 成人免费看吃奶视频网站| 国产精品国产三级国产aⅴ9色| 国产精品视频免费观看www| 91久久综合亚洲鲁鲁五月天| 亚洲www永久成人夜色| 亚洲qvod图片区电影| 国产视频在线观看一区二区| 久久夜色精品国产亚洲aⅴ| 亚洲视屏在线播放| 亚洲国产精品专区久久| 国内自拍欧美激情| 亚洲аv电影天堂网| 亚洲男人天堂网| 亚洲精品久久久久久下一站| 高清欧美性猛交xxxx黑人猛交| 亚洲精品久久7777777| 亚洲精品福利免费在线观看| 亚洲毛片在线看| 国产日韩中文在线| 成人黄色短视频在线观看| 国产精品久久久久久久久免费| 欧美电影电视剧在线观看| 欧美激情2020午夜免费观看| 久久影视电视剧免费网站清宫辞电视| 欧美理论电影网| 久久亚洲电影天堂| 亚洲日韩中文字幕在线播放| 久久久久久久国产| 国产91色在线| 日韩69视频在线观看| 精品在线欧美视频| 日韩最新中文字幕电影免费看| 91精品综合视频| 国产欧美日韩亚洲精品| 亚洲第一页自拍| 一本色道久久综合亚洲精品小说| 最近2019年中文视频免费在线观看| 国产精品久在线观看| 久久手机精品视频| 成人久久一区二区三区| 亚洲毛片在线免费观看| 91色p视频在线| 国产主播欧美精品| 2023亚洲男人天堂| 狠狠色狠狠色综合日日小说| 91午夜在线播放| 成人性生交大片免费观看嘿嘿视频| 精品福利视频导航| 性色av香蕉一区二区| 欧美一级淫片丝袜脚交| 久久中文字幕一区| 亚洲免费影视第一页| 亚洲精品免费在线视频| 成人精品福利视频| 欧美性猛交xxxxx水多| 色悠悠久久88| 久久亚洲精品成人| 岛国av一区二区三区| 欧美性猛交xxxx乱大交| 精品久久久久久国产91| 国产精品麻豆va在线播放| 日韩国产精品亚洲а∨天堂免| 国产精品爽爽ⅴa在线观看| 亚洲人成电影网站色| 亚洲福利在线观看| 国产一区二区三区视频在线观看| 国产精品日韩在线| 日韩美女视频在线观看| 97视频在线观看免费高清完整版在线观看| 久久福利视频网| 亚洲精品动漫100p| 中文国产亚洲喷潮| 日韩a**站在线观看| 在线丨暗呦小u女国产精品| 欧美国产日韩二区| 性欧美xxxx交| 欧美电影免费观看电视剧大全| 成人a级免费视频| 国产69精品久久久| 亚洲丁香婷深爱综合| 欧美激情视频在线| 国产精品美女久久久久久免费| 欧美激情视频免费观看| 欧美视频国产精品| 中文字幕日韩综合av| 久久久久久久久国产| 欧美裸体男粗大视频在线观看| 91超碰caoporn97人人| 国产91成人在在线播放| 国产精品av免费在线观看| 久久久综合免费视频| 色偷偷综合社区| 欧美日韩另类在线| 欧美丰满片xxx777| 成人黄色午夜影院| 91在线免费网站| 中文字幕欧美日韩| 午夜精品99久久免费| 国产精品久久久久免费a∨大胸| 福利精品视频在线| 成人网欧美在线视频| 国模精品视频一区二区| 亚洲欧洲一区二区三区在线观看| 国内精品视频一区| 亚洲高清一区二| 欧美极品第一页| 国产精品v日韩精品| 欧美成人sm免费视频| 精品国产依人香蕉在线精品|