在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Python  Linux/ 自動化部署與更新flask項目

自動化部署與更新flask項目

我自己寫了flask一個應(yīng)用,已經(jīng)成功部署上線了。使用的是uwsgi與nginx
1.我的做法在github上有一個私有的代碼庫,每次本地開發(fā)完之后就將代碼更新到遠(yuǎn)程庫中
2.然后登陸服務(wù)器,服務(wù)器上項目的代碼庫一開始是從遠(yuǎn)程庫中克隆下來的,所以每次需要更新代碼前需要先git pull,
3.然后我需要進(jìn)入這個項目的虛擬環(huán)境,運行uwsgi --relaod uwsgi.pid
這樣才算是真正完成更新
請問各位大神有沒有什么更好的方式

回答
編輯回答
孤巷

簡單說下思路

第一步,在服務(wù)器上創(chuàng)建一個git遠(yuǎn)程倉庫

cd /home/username
mkdir -p repositories/projectname.git
cd repositories/projectname.git
git init --bare .

第二步,在服務(wù)器上編寫post-receiveGit Hooks)自動部署腳本

touch /home/username/repositories/projectname.git/hooks/post-receive
chmod +x /home/username/repositories/projectname.git/hooks/post-receive

實際可能需要更加復(fù)雜的邏輯,這里只做說明

#!/bin/bash
/usr/bin/git --work-tree=/var/www/projectname --git-dir=/home/username/repositories/projectname.git checkout -f
/home/username/.virtualenvs/virtualenvname/bin/python /home/username/.virtualenvs/virtualenvname/bin/uwsgi --reload /path/to/uwsgi.pid

備注:用戶username必須擁有/var/www/projectname目錄的讀寫權(quán)限

第三步,在本地添加遠(yuǎn)程倉庫

cd /path/to/projectdir
git remote add production username@myhostname:/home/username/repositories/projectname.git
# 本地代碼提交后,更新到遠(yuǎn)程倉庫
git push production master
# 遠(yuǎn)程倉庫接收完成后,將執(zhí)行post-receive腳本,以達(dá)到自動化部署的目的
2017年1月3日 09:31
編輯回答
尐潴豬

想用成熟的方案的話可以使用Jenkins,不過需要在一臺服務(wù)器上先部署Jenkins,有點占內(nèi)存的,簡單一點的方案可以使用GitHub webhooks,然后寫一個專門用來更新服務(wù)的flask應(yīng)用,只有一個接口,用來執(zhí)行關(guān)閉服務(wù),更新代碼,運行測試,重啟服務(wù)的任務(wù),直接用os.system或者subprocess.call調(diào)用命令就可以。

2017年3月9日 02:07