手摸手帶你部署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 git@118。24。217。XXX:/web/git/website。git
# 如果有配置域名的話也可以透過域名拉取
git clone git@www。XXX。XXX:/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檔案,然後釋出上去就能看到部署效果了。沒毛病,妥妥的!
結語
因為是第一次寫文章,怕大家看不明白,碼文章的過程中還一步步重新走了遍流程,大概……應該……是寫得很詳細了吧。這些都是我遇到的坑,如果還有啥不妥的地方希望大家能夠諒解,有什麼不對或不夠好的地方希望能聯絡我修改下,最怕耽誤了你們寶貴的青春。帶歪車就不好了,新手上路,嘿嘿。