前段趁著活動買了個騰訊雲伺服器,一直沒抽時間去折騰,最近才開始部署了一個自己專屬的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檔案,然後釋出上去就能看到部署效果了。沒毛病,妥妥的!

手摸手帶你部署git伺服器實現自動釋出程式碼

結語

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