最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2017年12月19日 21:56:09   作者:七度上弦  
這篇文章主要介紹了centos 7.0 使用Nginx部署flask應用教程,需要的朋友可以參考下

參考文章:http://m.fzitv.net/article/130989.htm

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

前言

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

環(huán)境準備

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

虛擬環(huán)境使用

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

virtualenv venv

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

這里寫圖片描述 

接下來激活虛擬環(huán)境,只用指令

source venv/bin/activate

這里寫圖片描述 

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

退出虛擬環(huán)境的指令,直接敲:

deactivate

即可退出虛擬環(huán)境

配置flask應用環(huán)境

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

pip freeze >requerements.txt

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

這里寫圖片描述 

然后centos中使用以下指令

pip install -r requerments.txt

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

安裝uWSGI

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

以下內(nèi)容來自百度百科:

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

pip install uwsgi

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

上傳項目文件

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

這里寫圖片描述 

tree命令可以以樹形圖的形式展示文件結構,可以賦予參數(shù)設置樹的深度,這里博主展示了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 os
from app import create_app
from flask_script import Manager, Shell
app = 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.command
def deploy():
 """Run deployment tasks."""
 pass
if __name__ == '__main__':
 manager.run()
 #app.run()

命令行運行flask項目

python manage.py runserver

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

配置uWSGI

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

[uwsgi]

# uwsgi 啟動時所使用的地址與端口

socket = 127.0.0.1:5000

#虛擬環(huán)境目錄 
home = /usr/local/flasky/venv

#指向網(wǎng)站根目錄
chdir = /usr/local/flasky

#python啟動程序文件
wsgi-file = manage.py

#python程序內(nèi)用于啟動的application變量名
callable = app

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

#線程數(shù)
threads = 2

#狀態(tài)監(jiān)測地址
stats = 127.0.0.1:9191

#設置uwsgi包解析的內(nèi)部緩存區(qū)大小。默認4k

buffer-size = 32768

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

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程序文件內(nèi)的一個變量,這個變量的類型是flask的application類

這里寫圖片描述 

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

安裝supervisor

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

sudo apt-get install supervisor

supervisor的全局配置文件在

這里寫圖片描述 

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

這里寫圖片描述

我們不需要修改默認的配置文件,只需要在/etc/supervisord/目錄下新建一個配置文件(命名為flask_supervisor.conf)
這里寫圖片描述 

該文件內(nèi)容如下:

[program:flasky]
# 啟動命令入口
command=/usr/local/flasky/venv/bin/uwsgi /usr/local/flasky/config.ini

# 命令程序所在目錄
directory=/usr/local/flasky
#運行命令的用戶名
user=root

autostart=true
autorestart=true
#日志地址
stdout_logfile=/usr/local/flasky/logs/uwsgi_super.log

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

啟動服務

sudo service supervisor start

終止服務

sudo service supervisor stop

安裝Nginx

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

正向代理和反向代理

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

反向代理的作用

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

Nginx安裝指令:

sudo apt-get install nginx

配置Nginx

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

這里寫圖片描述 

flask_ng.conf文件內(nèi)容如下

server {
  listen 80;
  server_name www.cloud-test.com; #公網(wǎng)地址

  location / {
  include  uwsgi_params;
  uwsgi_pass 127.0.0.1:5000; # 指向uwsgi 所應用的內(nèi)部地址,所有請求將轉(zhuǎn)發(fā)給uwsgi 處理
  uwsgi_param UWSGI_PYHOME /usr/local/flasky/venv; # 指向虛擬環(huán)境目錄
  uwsgi_param UWSGI_CHDIR /usr/local/flasky; # 指向網(wǎng)站根目錄
  uwsgi_param UWSGI_SCRIPT manage:app; # 指定啟動程序
  }
 }

啟動Nginx

sudo service nginx restart

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

這里寫圖片描述 

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

這里寫圖片描述 

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

這里寫圖片描述 

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

查看應用的運行情況

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

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

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

supervisorctl status
supervisorctl update

這里寫圖片描述

相關文章

  • windows7下安裝PHP+nginx的方法

    windows7下安裝PHP+nginx的方法

    這篇文章主要介紹了windows7下安裝PHP+nginx的方法,較為詳細的分析了Windows7環(huán)境下安裝php與nginx服務器環(huán)境的具體步驟與相關設置技巧,需要的朋友可以參考下
    2016-05-05
  • nginx和lvs各自的優(yōu)劣以及適合的使用環(huán)境

    nginx和lvs各自的優(yōu)劣以及適合的使用環(huán)境

    這篇文章主要介紹了nginx和lvs各自的優(yōu)劣以及適合的使用環(huán)境,幫助大家選擇符合需求的服務器,感興趣的朋友可以了解下
    2020-10-10
  • CentOS7系統(tǒng)下用YUM安裝Nginx詳解

    CentOS7系統(tǒng)下用YUM安裝Nginx詳解

    相信大家都知道Nginx ("engine x") 是一個高性能的 HTTP和反向代理服務器,也是一個 IMAP/POP3/SMTP 代理服務器。這篇文章將詳細給大家介紹在CentOS7系統(tǒng)下用YUM安裝Nginx的方法,有需要的朋友們可以參考借鑒,下面來一起看看吧。
    2016-11-11
  • nginx 偽靜態(tài)Rewrite正則資源匯總

    nginx 偽靜態(tài)Rewrite正則資源匯總

    本文給大家匯總介紹了nginx中使用rewrite偽靜態(tài)正則表達式的資源,非常的全面詳細,有需要的小伙伴可以參考下
    2016-08-08
  • Ubuntu16.04上為Nginx創(chuàng)建自簽名SSL證書

    Ubuntu16.04上為Nginx創(chuàng)建自簽名SSL證書

    SSL證書是實現(xiàn)HTTPS的關鍵組成部分,本文主要介紹了Ubuntu16.04上為Nginx創(chuàng)建自簽名SSL證書,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2024-05-05
  • Nginx Linux安裝部署詳細教程

    Nginx Linux安裝部署詳細教程

    這篇文章主要介紹了Nginx Linux安裝部署詳細教程,本文通過圖文實例代碼相結合給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-06-06
  • nginx php-fpm中啟用慢日志配置(用于檢測執(zhí)行較慢的PHP腳本)

    nginx php-fpm中啟用慢日志配置(用于檢測執(zhí)行較慢的PHP腳本)

    這篇文章主要介紹了nginx php-fpm中啟用慢日志配置,php-fpm慢日志slowlog設置可以讓我們很好的看見哪些php進程速度太慢而導致的網(wǎng)站問題,可以讓我們方便的找到問題的所在,需要的朋友可以參考下
    2014-05-05
  • Nginx配置禁止訪問某個目錄或文件的方法和示例

    Nginx配置禁止訪問某個目錄或文件的方法和示例

    在 Nginx 中,可以通過配置 訪問控制規(guī)則 來禁止訪問某個目錄或文件,以下是詳細的配置方法和示例,幫助你快速實現(xiàn)禁止訪問的需求,需要的朋友可以參考下
    2025-11-11
  • nginx 網(wǎng)頁匹配跳轉(zhuǎn)rewrite、location的具體使用

    nginx 網(wǎng)頁匹配跳轉(zhuǎn)rewrite、location的具體使用

    本文主要介紹了nginx 網(wǎng)頁匹配跳轉(zhuǎn)rewrite、location的具體使用
    2024-05-05
  • Nginx配置及熱升級的詳細介紹

    Nginx配置及熱升級的詳細介紹

    Nginx與Apache一樣,都是web服務器,但是Nginx比Apache多一些功能,比如Nginx可以做代理,可以做負載均衡,這篇文章主要介紹了Nginx配置以及熱升級,需要的朋友可以參考下
    2024-07-07

最新評論

荆州市| 白玉县| 新邵县| 新源县| 呼玛县| 南康市| 垣曲县| 商南县| 于都县| 开远市| 鸡泽县| 西林县| 同江市| 开阳县| 阿合奇县| 新巴尔虎左旗| 北碚区| 无极县| 南宁市| 收藏| 桓台县| 临夏县| 宜黄县| 柳江县| 南康市| 剑川县| 册亨县| 临桂县| 新疆| 苏州市| 浙江省| 金坛市| 安多县| 宝坻区| 嘉峪关市| 镇康县| 金门县| 屯门区| 合阳县| 太仆寺旗| 湾仔区|