一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專(zhuān)注于服務(wù)器技術(shù)及軟件下載分享
分類(lèi)導(dǎo)航

云服務(wù)器|WEB服務(wù)器|FTP服務(wù)器|郵件服務(wù)器|虛擬主機(jī)|服務(wù)器安全|DNS服務(wù)器|服務(wù)器知識(shí)|Nginx|IIS|Tomcat|

服務(wù)器之家 - 服務(wù)器技術(shù) - 云服務(wù)器 - 阿里云CentOS 7.4 使用Flask建站的方法

阿里云CentOS 7.4 使用Flask建站的方法

2022-03-07 16:51lethon 云服務(wù)器

這篇文章主要介紹了阿里云CentOS 7.4 使用Flask建站的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

python web 部署方式為:nginx + gunicorn + supervisor + flask

一、準(zhǔn)備工作,先來(lái)安裝pip

詳細(xì)教程如:

1、首先檢查linux有沒(méi)有安裝python-pip包,直接執(zhí)行 yum install python-pip

※顯示No package python-pip available. 則沒(méi)有,繼續(xù)如下操作

2、沒(méi)有python-pip包就執(zhí)行命令 yum -y install epel-release

3、執(zhí)行成功之后,再次執(zhí)行yum install python-pip

4,、對(duì)安裝好的pip進(jìn)行升級(jí) pip install --upgrade pip

至此,pip工具就安裝好了。

二、創(chuàng)建一個(gè)項(xiàng)目和 python 虛擬環(huán)境

使用python的virtualenv創(chuàng)建虛擬環(huán)境 。用來(lái)在一個(gè)系統(tǒng)中創(chuàng)建不同的 python 隔離環(huán)境。相互之間還不會(huì)影響,而且使用相當(dāng)簡(jiǎn)單。

?
1
2
3
mkdir myflask
cd myflask
virtualenv venv

創(chuàng)建了 venv 環(huán)境之后,激活就可以了

?
1
source venv/bin/activate

三、安裝 python web 框架 — flask

flask 是一個(gè) python web 輕型框架,簡(jiǎn)潔高效。flask 依賴(lài)兩個(gè)庫(kù) werkzeug 和 jinjia2。可采用 pip 方式安裝:

?
1
pip install flask

測(cè)試我們的 flask 安裝是否成功,并使用 flask 寫(xiě)一個(gè)簡(jiǎn)單的 web 服務(wù)。

vim run.py

?
1
2
3
4
5
6
7
8
9
10
from flask import Flask
 
app = Flask(__name__)
 
@app.route('/')
def index():
  return 'hello world!'
 
if __name__ == '__main__':
  app.run()

啟動(dòng) flask

?
1
python run.py

此時(shí),用瀏覽器訪問(wèn) http://127.0.0.1:5000 就能看到網(wǎng)頁(yè)顯示 hello world!

三、使用 gunicorn 部署 python web

現(xiàn)在我們使用 flask 自帶的服務(wù)器,完成了 web 服務(wù)的啟動(dòng)。生產(chǎn)環(huán)境下,flask 自帶的 服務(wù)器,無(wú)法滿(mǎn)足性能要求。我們這里采用 gunicorn 做 wsgi容器,用來(lái)部署 python,用pip直接安裝。

?
1
pip install gunicorn

pip 是python 用來(lái)管理包的一個(gè)重要工具。每次安裝新庫(kù)后寫(xiě)入一個(gè) requirement 文件里面,既能知道自己安裝了什么庫(kù),也方便別人部署時(shí),安裝相應(yīng)的庫(kù)。

?
1
pip freeze > requirements.txt

以后每次 pip 安裝了新的庫(kù)的時(shí)候,都需freeze 一次。完整保存好requirement文本,重新安裝庫(kù)則只需要執(zhí)行如下操作:

?
1
pip install -r requirements.txt

當(dāng)我們安裝好 gunicorn 之后,需要用 gunicorn 啟動(dòng) flask,注意 flask 里面的name里面的代碼啟動(dòng)了 app.run(),這個(gè)含義是用 flask 自帶的服務(wù)器啟動(dòng) app。這里我們使用了 gunicorn,run.py 就等同于一個(gè)庫(kù)文件,被 gunicorn 調(diào)用。

?
1
gunicorn -w4 -b0.0.0.0:5000 run:app #-w worker數(shù)量 -b 訪問(wèn)地址

此時(shí),我們可以用 5000 的端口進(jìn)行訪問(wèn)。

想要結(jié)束 gunicorn 只需執(zhí)行 pkill gunicorn,有時(shí)候還需要用 ps 找到 pid 進(jìn)程號(hào)才能 kill。

四、使用nginx

nginx,一個(gè)高性能的web服務(wù)器。通常用來(lái)在前端做反向代理服務(wù)器。代理服務(wù),簡(jiǎn)而言之,一個(gè)請(qǐng)求經(jīng)過(guò)代理服務(wù)器從局域網(wǎng)發(fā)出,然后到達(dá)互聯(lián)網(wǎng)上服務(wù)器,這個(gè)過(guò)程的代理為正向代理。如果一個(gè)請(qǐng)求,從互聯(lián)網(wǎng)過(guò)來(lái),先進(jìn)入代理服務(wù)器,再由代理服務(wù)器轉(zhuǎn)發(fā)給局域網(wǎng)的目標(biāo)服務(wù)器,這個(gè)時(shí)候,代理服務(wù)器為反向代理(相對(duì)正向而言)。

1. gcc 安裝

安裝 nginx 需要先將官網(wǎng)下載的源碼進(jìn)行編譯,編譯依賴(lài) gcc 環(huán)境,如果沒(méi)有 gcc 環(huán)境,則需要安裝:

?
1
yum install gcc-c++

2. PCRE pcre-devel 安裝

PCRE(Perl Compatible Regular Expressions) 是一個(gè)Perl庫(kù),包括 perl 兼容的正則表達(dá)式庫(kù)。nginx 的 http 模塊使用 pcre 來(lái)解析正則表達(dá)式,所以需要在 linux 上安裝 pcre 庫(kù),pcre-devel 是使用 pcre 開(kāi)發(fā)的一個(gè)二次開(kāi)發(fā)庫(kù)。nginx也需要此庫(kù)。命令:

?
1
yum install -y pcre pcre-devel

3. zlib 安裝

zlib 庫(kù)提供了很多種壓縮和解壓縮的方式, nginx 使用 zlib 對(duì) http 包的內(nèi)容進(jìn)行 gzip ,所以需要在 Centos 上安裝 zlib 庫(kù)。

?
1
yum install -y zlib zlib-devel

4. OpenSSL 安裝

OpenSSL 是一個(gè)強(qiáng)大的安全套接字層密碼庫(kù),囊括主要的密碼算法、常用的密鑰和證書(shū)封裝管理功能及 SSL 協(xié)議,并提供豐富的應(yīng)用程序供測(cè)試或其它目的使用。

nginx 不僅支持 http 協(xié)議,還支持 https(即在ssl協(xié)議上傳輸http),所以需要在 Centos 安裝 OpenSSL 庫(kù)。

?
1
yum install -y openssl openssl-devel

5. 使用wget下載nginx:

?
1
2
3
4
5
wget https://nginx.org/download/nginx-1.13.12.tar.gz
tar -zxvf nginx-1.13.12.tar.gz
cd nginx-1.13.12
make
make install #編譯安裝

然后配置Nginx,剛才安裝了Nginx之后,我們打開(kāi)/etc/nginx/conf.d/default.conf,然后修改默認(rèn)的default.conf為:

?
1
2
3
4
5
6
7
8
9
10
11
12
server {
  listen    80;
  server_name localhost;
  location / {
    proxy_pass http://127.0.0.1:5000;
    proxy_redirect off;
    proxy_set_header Host $host:80;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  }
 
}

其中server_name就是你的域名,這里用localhost代表通過(guò)ip訪問(wèn),配置好default.conf之后試著啟動(dòng)Nginx!

?
1
2
3
[root@server ~]# service nginx start
Starting nginx:                      [ OK ]
[root@server ~]# nginx -s reload

ok!到這一步,整個(gè)部署過(guò)程就完成了!

六、為了方便管理使用supervisor

1.安裝 supervisor

?
1
2
3
pip install supervisor
echo_supervisord_conf > supervisor.conf  # 生成 supervisor 默認(rèn)配置文件
vim supervisor.conf            # 修改 supervisor 配置文件,添加 gunicorn和nginx

2.添加gunicorn到supervisor中,添加到配置最下面。此處因?yàn)槭褂昧藀ython虛擬環(huán)境,可先在虛擬環(huán)境找到gunicorn地址,使用whereis 如:/usr/local/bin/gunicorn,記住此位置加入到supervisor的command中,如下:

?
1
2
3
4
5
6
7
8
9
【program:myflask】
command = /usr/local/bin/gunicorn -w4 -b0.0.0.0:5000 run:app
directory = /home/myflask #位置
autostart = true #自動(dòng)啟動(dòng)
startsecs = 5
autorestart = true #自動(dòng)重啟
startretries = 3 #啟動(dòng)失敗時(shí)的最多重試次數(shù)
redirect_stderr = true #重定向stderr到stdout
stdout_logfile = /var/log/flask_supervisor.log

3、添加nginx進(jìn)程到supervisor

先新建一個(gè)log文件夾

?
1
mkdir /home/myflask/log
?
1
2
3
4
5
6
7
8
9
10
11
[program:up_nginx]
command = /usr/sbin/nginx
autostart = true       #隨著supervisord的啟動(dòng)而啟動(dòng)
autorestart = true     #自動(dòng)重啟
startretries = 10       #啟動(dòng)失敗時(shí)的最多重試次數(shù)
exitcodes = 0         #正常退出代碼
stopsignal = KILL      #用來(lái)殺死進(jìn)程的信號(hào)
stopwaitsecs = 10      #發(fā)送SIGKILL前的等待時(shí)間
redirect_stderr = true    #重定向stderr到stdout
stdout_logfile = /home/myflask/log/nginx.log
stdout_logfile = /home/myflask/log/nginx.err

4.啟用supervisor管理工具

?
1
2
3
supervisord -c supervisord.conf
#sudo unlink /tmp/supervisor.sock #如上面啟動(dòng)失敗先使用此命令之后在使用上面命令
supervisorctl start all

至此所有配置結(jié)束,試試網(wǎng)站是否如正常運(yùn)行吧,還可增加supervisor開(kāi)機(jī)自啟動(dòng)(這個(gè)未試驗(yàn),大家試試看吧):

?
1
2
3
4
5
#開(kāi)機(jī)任務(wù)自動(dòng)啟動(dòng)
vi /etc/rc.d/rc.local  #并在最后添加
supervisord -c /home/myflask/supervisord.conf
 
#尾聲:通過(guò)以上步驟,那么基本上就可以開(kāi)啟啟動(dòng)網(wǎng)站了!reboot試一試~~

※supervisor的基本使用命令

?
1
2
3
4
5
supervisord -c supervisor.conf     #通過(guò)配置文件啟動(dòng)supervisor
supervisorctl status          #察看supervisor的狀態(tài)
supervisorctl reload          #重新載入 配置文件
supervisorctl start [all]|[appname]   #啟動(dòng)指定/所有 supervisor管理的程序進(jìn)程
supervisorctl stop [all]|[appname]   #關(guān)閉指定/所有 supervisor管理的程序進(jìn)程

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持服務(wù)器之家。

原文鏈接:http://www.cnblogs.com/lethon/p/8808368.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 亚洲精品二三区伊人久久 | 男人天堂中文字幕 | 999热这里全都是精品 | 国产理论片在线观看 | 久久人妻少妇嫩草AV无码 | 欧美人交性视频在线香蕉 | 人性本色 | 偷拍综合网 | 青青青青青操 | 色综合天天综合 | 亚洲成人一区二区 | 天天做日日爱 | 国产裸舞在线一区二区 | 婷婷日韩 | 人妖欧美一区二区三区四区 | 农夫69小说小雨与农村老太 | а天堂中文最新版在线 | 国产区小视频 | 91碰| 午夜精品网 | 久久精品国产在热亚洲完整版 | 久久婷婷五月综合色精品首页 | 从后面撕开老师的丝袜动态图 | 国产精品国产三级国产专区不 | 五月丁开婷婷 | 日韩在线 在线播放 | 好看华人华人经典play | 美女脱了内裤打开腿让你桶爽 | 亚洲人成在线播放 | 91亚洲专区 | 欧美一级久久久久久久大片 | 男人天堂日韩 | 欧美粗黑巨大gay | 亚洲国产99在线精品一区69堂 | 窝窝午夜精品一区二区 | 丝瓜视频在线观看污 | 天天综合网天天做天天受 | 师尊被各种play打屁股 | 欧美日韩免费一区二区在线观看 | 国产va欧美va在线观看 | 欧美三级小说 |