使用git代替FTP部署代碼到服務(wù)器的例子
本地開發(fā)完成后,通常會在服務(wù)器上部署,有人會使用ftp,有人會使用scp, ftp和scp的時候為了方便我們通過還要tar或者zip一下, 這些做法也很不錯,但是它有一些問題
1.全部更新,不管某些文件是否修改,都要重新傳一下服務(wù)器,浪費時間與流量
2.多臺服務(wù)器的重復(fù)上傳
3.代碼更新后,后續(xù)的一些操作不夠自動化
上面的問題可以通過ssh直接遠程執(zhí)行命令來解決,但是需要寫一些shell腳本, 有沒有更簡單更高效的方法呢?有,那就是使用版本版本管理工具的hook!
這里我說是版本管理工具而不是git,是因為svn、git、hg都是有相應(yīng)的hook的, 原理大同小異。下面是Git詳細的思路。
服務(wù)器端操作
首先創(chuàng)建一個裸庫,為什么是裸庫?因為這個庫不是真正用來修改的,我們也不允許在服務(wù)器上修改代碼,我們只是把它當作一個代碼中轉(zhuǎn)的地方:
cd gitroot
mkdir projectname
cd projectname
git init --bare
添加我們的hook
cd /hooks
touch post-receive
編輯post-receive的內(nèi)容為下面的,其中sites/projectname,是我們存放網(wǎng)站代碼地方
env -i git archive master | tar -x -C /sites/projectname
echo "遠程更新完畢"
本地git的操作
本地我們只需要添加一個遠程庫,在需要部署的時候push到遠程庫就行了,下面我們添加了一個名為publish的遠程庫
git remote add publish username@xx.xx.xx.xx:/home/gitroot/projectname
git push publish master
可以強化的地方
這里演示的是一個簡單的小網(wǎng)站的部署過程,復(fù)雜的情況下我們還可以添加靜態(tài)資源版本更新,服務(wù)器重啟等等,舉一反三, 最大程序自動化我們的工作。
相關(guān)文章
MAC系統(tǒng)IDEA顏值插件MaterialThemeUI
俗話說,工欲善其事必先利其器。工具的顏值也很重要,好的主題讓人賞心悅目,有碼代碼的欲望。今天推薦一個IDEA顏值類插件:Material Theme UI2021-09-09
kafka?rabbitMQ及rocketMQ隊列的消息可靠性保證分析
這篇文章主要介紹了kafka?rabbitMQ及rocketMQ隊列的消息可靠性保證分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-05-05
elasticsearch索引index之merge底層機制的合并講解
這篇文章主要為大家介紹了elasticsearch索引index之merge底層機制的合并,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-04-04

