后端部署筆記nginx+gunicorn+supervisor+flask

后端部署筆記nginx+gunicorn+supervisor+flask

  1. flask 是一個python的微觀web框架洛巢。簡潔高效,使用簡單次兆。

  2. 生產(chǎn)環(huán)境下稿茉,flask自帶的服務(wù)器,無法滿足性能要求芥炭。Gunicorn是一個開源python WSGI UNIX的HTTP 服務(wù)器漓库。配置簡單,高性能园蝠。

    Note:

    ? WSGI協(xié)議

    ? Web框架致力于如何生成HTML代碼渺蒿,而Web服務(wù)器用于處理和響應(yīng)HTTP請求。Web框架和Web服 務(wù)器之間的通信彪薛,需要一套雙方都遵守的接口協(xié)議茂装。WSGI協(xié)議就是用來統(tǒng)一這兩者的接口的。

    ? flask就是一種優(yōu)秀的Web框架善延,gunicorn就是web服務(wù)器少态。兩者配合組成了web后端服務(wù)。

  3. supervisor 是一個用python寫的進程管理工具易遣,可以很方便的用來啟動彼妻、重啟、關(guān)閉進程(不僅僅是python進程)训挡。除了對單個進程控制澳骤,還可以同時啟動、關(guān)閉多個進程澜薄,比如很不幸的服務(wù)器出問題導(dǎo)致所有應(yīng)用程序都被殺死为肮,此時可以用supervisor同時啟動所有應(yīng)用程序而不是一個一個地敲命令啟動。

    想要結(jié)束gunicorn只需要執(zhí)行pkill gunicorn肤京,有時候還要ps -ef找到pid進程號才能kill颊艳。過于繁瑣。因此使用supervisor可以更加方便的管理wsgi容器gunicorn忘分。

  4. nginx是專業(yè)的服務(wù)器棋枕,可以做負(fù)載均衡,攔截靜態(tài)請求妒峦,訪問控制重斑,限速,限制連接數(shù)肯骇,反向代理窥浪,抗并發(fā)。

下面進入配置環(huán)節(jié)

  1. 安裝python環(huán)境笛丙,創(chuàng)建flask的虛擬環(huán)境與安裝supervisor的python2環(huán)境

  2. 將flask代碼放置在合適的位置

  3. 在flask的虛擬環(huán)境中安裝gunicorn

    pip install gunicorn

  4. gunicorn 啟動flask可以使用如下命令:

    gunicron -w 4 -b 127.0.0.1:8000 -k gevent myapp:app

? -w 表示開啟多少個worker

? -b 表示gunicorn開放的訪問地址

? -k gevent 表示以異步的方式啟動

? myapp表示flask項目中app文件的文件名

? 我們不直接使用gunicorn啟動漾脂,使用supervisor管理gunicorn

  1. 切換到python2環(huán)境 ( supervisor不支持python3 )

pip install supervisor

// 找到合適的放配置文件的目錄 如/etc/supervisor/下

echo_supervisord_conf > supervisor.conf # 生成supervisor默認(rèn)配置文件

makedir conf.d # 創(chuàng)建存放app conf文件的目錄

vim supevisor.conf

未避免產(chǎn)生非root用戶的權(quán)限錯誤,將supervisord.conf內(nèi)[unix_http_server] 這項改為(;是注釋):

[unix_http_server]
file=/tmp/supervisor.sock   ; (the path to the socket file)
chmod=0766                 ; socket file mode (default 0700)
;chown=nobody:nogroup       ; socket file uid:gid owner
;username=user              ; (default is no username (open server))
;password=123               ; (default is no password (open server))

cp supervisord_conf conf.d/ # app 的conf 文件可以從默認(rèn)配置文件上更改

vim supervisor.conf # 再次修改配置文件

再將末尾的[include]部分改為:

[include]
files = /etc/supervisor/*.conf
files = /etc/supervisor/conf.d/*.conf

這樣方便為每個app單獨設(shè)置conf文件而不必全部寫在全局設(shè)置里面胚鸯。

在conf.d下將剛才復(fù)制過來的配置文件重命名為你app的名字

mv supervisor.conf myapp.conf

vim myapp.conf

在文件末尾添加如下配置

[program:gunicorn]
command=/home/dlf/anaconda3/envs/pdns/bin/gunicorn -w 4 -b 127.0.0.1:3000 -k gevent app:app                                                         ; supervisor啟動命令
directory=/home/dlf/project/pdns_api                            ; 項目的文件夾路徑
startsecs=5                                                     ; 啟動時間
stopwaitsecs=0                                                  ; 終止等待時間
autostart=false                                                 ; 是否自動啟動
autorestart=true                                                ; 是否自動重啟
startretries = 3                                                ; 啟動失敗自動重試次數(shù)
stopasgroup=true                        ; send stop signal to the UNIX process
killasgroup=true                        ; SIGKILL the UNIX process group (def false)
stdout_logfile=/home/dlf/apps/var/www/server/log/gunicorn.log   ; log 日志
stderr_logfile=/home/dlf/apps/var/www/server/log/gunicorn.err

進行啟動操作:
在創(chuàng)建的python2虛擬環(huán)境下

通過配置文件啟動supervisor
supervisord -c supervisor.conf

查看supervisor的狀態(tài)
supervisorctl -c supervisor.conf status

修改配置文件后骨稿,重新載入配置文件
supervisorctl -c supervisor.conf reload

啟動指定/所有 supervisor管理的程序進程
supervisorctl -c supervisor.conf start [all]|[appname]

關(guān)閉指定/所有 supervisor管理的程序進程
supervisorctl -c supervisor.conf stop [all]|[appname]

其中appname就是上述配置中program:后面的字段 如gunicorn

  1. 我們啟動的服務(wù)綁定的是內(nèi)網(wǎng)地址,用nginx 做反向代理姜钳,同時增加整個后端的并發(fā)能力

    • 安裝nginx(不在python虛擬環(huán)境下)

      sudo apt-get install nginx

    • 編輯配置文件 /etc/nginx/conf.d/gunicorn.conf

      server {
          listen 8000;
          server_name example.org; # 這是HOST機器的外部域名坦冠,用地址也行
      
          location / {
              proxy_pass http://127.0.0.1:30000; # 這里是指向 gunicorn host 的服務(wù)地址
              proxy_read_timeout 300;            # nginx會等待多長時間來獲得請求的響應(yīng)
              proxy_set_header Host $host;
              proxy_set_header X-Real-IP $remote_addr;
              proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
          }
      }
      
    • nginx 啟動測試

      測試配置的是否正確
      sudo service nginx -t

      重啟nginx服務(wù)
      sudo service nginx restart

      如果有正在運行的nginx服務(wù),可以使用平滑重啟
      sudo service nginx reload

refer: 搜了很多資料哥桥,沒有保存搜索時的鏈接蓝牲。如侵權(quán),請聯(lián)系我泰讽,進行刪除例衍。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市已卸,隨后出現(xiàn)的幾起案子佛玄,更是在濱河造成了極大的恐慌,老刑警劉巖累澡,帶你破解...
    沈念sama閱讀 212,185評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件梦抢,死亡現(xiàn)場離奇詭異,居然都是意外死亡愧哟,警方通過查閱死者的電腦和手機奥吩,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,445評論 3 385
  • 文/潘曉璐 我一進店門哼蛆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人霞赫,你說我怎么就攤上這事腮介。” “怎么了端衰?”我有些...
    開封第一講書人閱讀 157,684評論 0 348
  • 文/不壞的土叔 我叫張陵叠洗,是天一觀的道長。 經(jīng)常有香客問我旅东,道長灭抑,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,564評論 1 284
  • 正文 為了忘掉前任抵代,我火速辦了婚禮腾节,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘荤牍。我一直安慰自己禀倔,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,681評論 6 386
  • 文/花漫 我一把揭開白布参淫。 她就那樣靜靜地躺著救湖,像睡著了一般。 火紅的嫁衣襯著肌膚如雪涎才。 梳的紋絲不亂的頭發(fā)上鞋既,一...
    開封第一講書人閱讀 49,874評論 1 290
  • 那天,我揣著相機與錄音耍铜,去河邊找鬼邑闺。 笑死,一個胖子當(dāng)著我的面吹牛棕兼,可吹牛的內(nèi)容都是我干的陡舅。 我是一名探鬼主播,決...
    沈念sama閱讀 39,025評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼伴挚,長吁一口氣:“原來是場噩夢啊……” “哼靶衍!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起茎芋,我...
    開封第一講書人閱讀 37,761評論 0 268
  • 序言:老撾萬榮一對情侶失蹤颅眶,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后田弥,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體涛酗,經(jīng)...
    沈念sama閱讀 44,217評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,545評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了商叹。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片燕刻。...
    茶點故事閱讀 38,694評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖剖笙,靈堂內(nèi)的尸體忽然破棺而出卵洗,到底是詐尸還是另有隱情,我是刑警寧澤枯途,帶...
    沈念sama閱讀 34,351評論 4 332
  • 正文 年R本政府宣布忌怎,位于F島的核電站籍滴,受9級特大地震影響酪夷,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜孽惰,卻給世界環(huán)境...
    茶點故事閱讀 39,988評論 3 315
  • 文/蒙蒙 一晚岭、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧勋功,春花似錦坦报、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,778評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至骚揍,卻和暖如春字管,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背信不。 一陣腳步聲響...
    開封第一講書人閱讀 32,007評論 1 266
  • 我被黑心中介騙來泰國打工嘲叔, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人抽活。 一個月前我還...
    沈念sama閱讀 46,427評論 2 360
  • 正文 我出身青樓硫戈,卻偏偏與公主長得像,于是被迫代替她去往敵國和親下硕。 傳聞我的和親對象是個殘疾皇子丁逝,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,580評論 2 349

推薦閱讀更多精彩內(nèi)容