阿里雲CentOS 7.4 使用Flask建站

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

1、準備工做,先來安裝pip

詳細教程如:

一、首先檢查linux有沒有安裝python-pip包,直接執行 yum install python-pip

※顯示No package python-pip available. 則沒有,繼續以下操做

二、沒有python-pip包就執行命令 yum -y install epel-release

三、執行成功以後,再次執行yum install python-pip

4,、對安裝好的pip進行升級 pip install --upgrade pip

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

 2、建立一個項目和 python 虛擬環境

使用python的virtualenv建立虛擬環境 。用來在一個系統中建立不一樣的 python 隔離環境。相互之間還不會影響,並且使用至關簡單。前端

mkdir myflask
cd myflask
virtualenv venv

 建立了 venv 環境以後,激活就能夠了python

source venv/bin/activate

 3、安裝 python web 框架 — flask

flask 是一個 python web 輕型框架,簡潔高效。flask 依賴兩個庫 werkzeugjinjia2。可採用 pip 方式安裝:linux

pip install flask

 測試咱們的 flask 安裝是否成功,並使用 flask 寫一個簡單的 web 服務。nginx

vim run.py
from flask import Flask
app
= Flask(__name__)
@app.route(
'/') def index(): return 'hello world!'
if __name__ == '__main__': app.run()

啓動 flaskc++

python run.py

 此時,用瀏覽器訪問 http://127.0.0.1:5000 就能看到網頁顯示 hello world!web

 3、使用 gunicorn 部署 python web

如今咱們使用 flask 自帶的服務器,完成了 web 服務的啓動。生產環境下,flask 自帶的 服務器,沒法知足性能要求。咱們這裏採用 gunicorn 作 wsgi容器,用來部署 python,用pip直接安裝。正則表達式

pip install gunicorn

pip 是python 用來管理包的一個重要工具。每次安裝新庫後寫入一個 requirement 文件裏面,既能知道本身安裝了什麼庫,也方便別人部署時,安裝相應的庫。算法

pip freeze > requirements.txt

之後每次 pip 安裝了新的庫的時候,都需freeze 一次。完整保存好requirement文本,從新安裝庫則只須要執行以下操做:flask

pip install -r requirements.txt

當咱們安裝好 gunicorn 以後,須要用 gunicorn 啓動 flask,注意 flask 裏面的name裏面的代碼啓動了 app.run(),這個含義是用 flask 自帶的服務器啓動 app。這裏咱們使用了 gunicorn,run.py 就等同於一個庫文件,被 gunicorn 調用。vim

gunicorn -w4 -b0.0.0.0:5000 run:app #-w worker數量  -b 訪問地址

 此時,咱們能夠用 5000 的端口進行訪問。

想要結束 gunicorn 只需執行 pkill gunicorn,有時候還須要用 ps 找到 pid 進程號才能 kill。

4、使用nginx

nginx,一個高性能的web服務器。一般用來在前端作反向代理服務器。代理服務,簡而言之,一個請求通過代理服務器從局域網發出,而後到達互聯網上服務器,這個過程的代理爲正向代理。若是一個請求,從互聯網過來,先進入代理服務器,再由代理服務器轉發給局域網的目標服務器,這個時候,代理服務器爲反向代理(相對正向而言)。

1. gcc 安裝
安裝 nginx 須要先將官網下載的源碼進行編譯,編譯依賴 gcc 環境,若是沒有 gcc 環境,則須要安裝:

yum install gcc-c++

2. PCRE pcre-devel 安裝

PCRE(Perl Compatible Regular Expressions) 是一個Perl庫,包括 perl 兼容的正則表達式庫。nginx 的 http 模塊使用 pcre 來解析正則表達式,因此須要在 linux 上安裝 pcre 庫,pcre-devel 是使用 pcre 開發的一個二次開發庫。nginx也須要此庫。命令:

yum install -y pcre pcre-devel

3. zlib 安裝

zlib 庫提供了不少種壓縮和解壓縮的方式, nginx 使用 zlib 對 http 包的內容進行 gzip ,因此須要在 Centos 上安裝 zlib 庫。

yum install -y zlib zlib-devel

4. OpenSSL 安裝

OpenSSL 是一個強大的安全套接字層密碼庫,囊括主要的密碼算法、經常使用的密鑰和證書封裝管理功能及 SSL 協議,並提供豐富的應用程序供測試或其它目的使用。
nginx 不只支持 http 協議,還支持 https(即在ssl協議上傳輸http),因此須要在 Centos 安裝 OpenSSL 庫。

yum install -y openssl openssl-devel

5. 使用wget下載nginx:

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以後,咱們打開/etc/nginx/conf.d/default.conf,而後修改默認的default.conf爲:

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表明經過ip訪問,配置好default.conf以後試着啓動Nginx!

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

ok!到這一步,整個部署過程就完成了!

6、爲了方便管理使用supervisor

1.安裝 supervisor

pip install supervisor
echo_supervisord_conf > supervisor.conf   # 生成 supervisor 默認配置文件
vim supervisor.conf                       # 修改 supervisor 配置文件,添加 gunicorn和nginx

2.添加gunicorn到supervisor中,添加到配置最下面。此處由於使用了python虛擬環境,可先在虛擬環境找到gunicorn地址,使用whereis 如:/usr/local/bin/gunicorn,記住此位置加入到supervisor的command中,以下:

【program:myflask】
command = /usr/local/bin/gunicorn -w4 -b0.0.0.0:5000 run:app
directory = /home/myflask  #位置
autostart = true  #自動啓動
startsecs = 5
autorestart = true #自動重啓
startretries = 3 #啓動失敗時的最多重試次數
redirect_stderr = true #重定向stderr到stdout
stdout_logfile = /var/log/flask_supervisor.log

三、添加nginx進程到supervisor

先新建一個log文件夾

mkdir /home/myflask/log

 

[program:up_nginx]
command = /usr/sbin/nginx
autostart = true             #隨着supervisord的啓動而啓動
autorestart = true          #自動重啓
startretries = 10             #啓動失敗時的最多重試次數
exitcodes = 0                 #正常退出代碼
stopsignal = KILL            #用來殺死進程的信號
stopwaitsecs = 10            #發送SIGKILL前的等待時間
redirect_stderr = true        #重定向stderr到stdout
stdout_logfile = /home/myflask/log/nginx.log
stdout_logfile = /home/myflask/log/nginx.err

 4.啓用supervisor管理工具

supervisord -c supervisord.conf
#sudo unlink /tmp/supervisor.sock #如上面啓動失敗先使用此命令以後在使用上面命令 supervisorctl start all

 至此全部配置結束,試試網站是否如正常運行吧,還可增長supervisor開機自啓動(這個未試驗,你們試試看吧):

#開機任務自動啓動
vi /etc/rc.d/rc.local    #並在最後添加
supervisord -c /home/myflask/supervisord.conf

#尾聲:經過以上步驟,那麼基本上就能夠開啓啓動網站了!reboot試一試~~

 ※supervisor的基本使用命令

supervisord -c supervisor.conf          #經過配置文件啓動supervisor
supervisorctl status                    #察看supervisor的狀態
supervisorctl reload                    #從新載入 配置文件
supervisorctl start [all]|[appname]     #啓動指定/全部 supervisor管理的程序進程
supervisorctl stop [all]|[appname]      #關閉指定/全部 supervisor管理的程序進程
相關文章
相關標籤/搜索