手摸手帶你部署git服務器實現自動發佈代碼

前段趁着活動買了個騰訊雲服務器,一直沒抽時間去折騰,最近纔開始部署了一個自己專屬的git倉庫,實現代碼自動發佈部署功能。(我也想成爲努力向上,積極進取的有志青年啊!)文章的內容基本都是參考自谷歌搜索,然後按我的思路重新整理一遍,既是爲了分享也是爲了鞏固知識。

我也是第一次折騰服務器,前期部署就不寫太詳細了,裝個git是必須的吧?(滑稽笑)

創建git用戶

# 創建git用戶
adduser git

添加git權限成員

# 創建/home/git/.ssh/authorized_keys 文件(通過這種方式能使擁有公鑰的成員直接訪問倉庫)
mkdir /home/git
mkdir .ssh
touch authorized_keys
# 使用vim命令將公鑰添加到authorized_keys文件裏面

生成公鑰的方法可查看 git官方文檔

初始化倉庫

創建一個存放git倉庫的文件夾

mkdir /web/git
cd /web/git

初始化倉庫

git init --bare website.git
# 注意 這裏有個坑 因爲我們初始化的時候是處於root管理員狀態,所以需要將這個倉庫的文件權限設置爲剛纔創建的git用戶
# 否則的話後面push將沒有權限
chown -R git website.git
git init正常初始化倉庫會顯示項目文件結構,裏面存在.git文件夾。而這裏添加--bare參數生成裸倉庫,裏面的項目文件結構隱藏,將正常方式初始化的.git裏面文件結構暴露出來。

生成項目倉庫

mkdir /web/www
cd /web/www
# 將剛纔初始化的裸倉庫克隆到項目文件夾
git clone /web/git/website.git
# 在這裏,還是別忘了要給項目文件夾加上git用戶操作權限
chown -R git website

到這一步的時候代碼倉庫已經基本初始化完成了,接下來試試將倉庫從線上克隆下來。

克隆倉庫到本地

# 通過ip地址從配置好的線上倉庫拉取下來
git clone [email protected]:/web/git/website.git
# 如果有配置域名的話也可以通過域名拉取
git clone [email protected]:/web/git/website.git

剛開始的時候因爲已經添加了本地的密鑰到線上git服務器,所以這一步是不需要密碼的,直接能克隆下來。

創建文件並上傳

# 打開剛纔克隆下來的本地倉庫
cd website
# 創建README.md文件
touch README.md
git add .
git commit -am"創建README.md文件"
git push

嘖嘖 完美 到這一步的時候就上傳成功了!
接下來就開始重頭戲,我們需要設置git的post-receive鉤子,在push成功的時候運行我們設置的一系列命令,進而達到自動編譯更新線上代碼。

添加post-receive鉤子

回到線上服務器,我們打開/web/git/website.git/hooks文件夾。

# 生成post-receive文件
touch post-receive
# 使用vim編輯
vim post-receive

在post-receive文件輸入我們的命令行命令

#!/bin/sh

# 打印輸出
echo '======上傳代碼到服務器======'
# 打開線上項目文件夾
cd /web/www/gd168
# 這個很重要,如果不取消的話將不能在cd的路徑上進行git操作
unset GIT_DIR
git pull origin master
# 自動編譯vue項目
# npm run build
echo $(date) >> hook.log
echo '======代碼更新完成======'

保存後給post-receive文件加上運行權限

chmod +x post-receive

搞定,現在試着修改下README.md文件,然後發佈上去就能看到部署效果了。沒毛病,妥妥的!

結語

大概是第一次寫文章,怕大家看不明白,碼文章的過程中還一步步重新走了遍流程,大概……應該……是寫得很詳細了吧(捂臉)。這些都是我遇到的坑,如果還有啥不妥的地方希望大家能夠諒解,有什麼不對或不夠好的地方希望能聯繫我修改下,最怕耽誤了你們寶貴的青春。帶歪車就不好了,新手上路,嘿嘿。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章