使用git搭建自動(dòng)部署服務(wù)器代碼

目標(biāo)效果:在本地改好代碼,git push完成,服務(wù)端可以自動(dòng)同步代碼。
基本思路:在服務(wù)器搭建一個(gè) git 倉(cāng)庫(kù),利用 post-receive 鉤子,實(shí)現(xiàn)自動(dòng)更新代碼。
操作步驟:
1,用 root 通過(guò)ssh登錄遠(yuǎn)程服務(wù)器,然后添加 git 用戶

ssh root@server_ip
# 輸入密碼
# ...
  
adduser gituser // 添加一個(gè)名為 gituser 的用戶,目錄為 /home/gituser

2,打開rsa認(rèn)證

vim /etc/ssh/sshd_config 
# 移動(dòng)到滑動(dòng)到末尾,命令 Shift+g
RSAAuthentication yes     
PubkeyAuthentication yes     
AuthorizedKeysFile  .ssh/authorized_keys 

3,創(chuàng)建 gituser 的ssh

cd  /home/gituser
mkdir .ssh
cd .ssh
vim  authorized_keys   

這時(shí)候遠(yuǎn)程處于編輯 authorized_keys 狀態(tài)。
如果本地沒(méi)有創(chuàng)建過(guò)ssh公鑰,建議開啟另一個(gè)本地的終端,創(chuàng)建本地的ssh

cd ~/.ssh 
ssh-keygen -t rsa -C "your_email"
# 一路回車即可

然后將 id_rsa.pub 的內(nèi)容拷貝到 authorized_keys 中。

4,設(shè)置 git 用戶信息

git config --global user.email "your_email"
git config --global user.name "git_user_name"

本地也要設(shè)置,本地和遠(yuǎn)程可以不一致。

5,遠(yuǎn)程創(chuàng)建裸倉(cāng)庫(kù)

cd /home/gituser
mkdir git
cd git
mkdir webserver.git
git init --bare webserver.git  

6,clone 一份到 www 目錄
例如服務(wù)器設(shè)置的目錄是 /home/gituser/www/webserver

cd /home/gituser/www
git clone /home/gituser/git/webserver.git webserver

7,配置 post-receive 鉤子

cd /home/gituser/git/webserver.git/hooks
vim post-receive 

# 文件內(nèi)容
#!/bin/bash
cd /home/gituser/www/webserver
unset GIT_DIR // https://stackoverflow.com/questions/9905882/git-post-receive-not-working-correctly
git pull

8,修改權(quán)限和所有者
上面有些文件是在 root 下面創(chuàng)建的,所以要改回給 gituser

chown -R gituser:gituser /home/gituser
chmod -R 777 /home/gituser/git/webserver.git/hooks

9,本地拉代碼回來(lái),提交

git clone gituser@server_ip:/home/gituser/git/webserver.git webserver
# 隨便寫點(diǎn)什么
git commit -m "message"
git push

然后檢查遠(yuǎn)程 /home/gituser/www/webserver 目錄即可。

調(diào)試:
如果發(fā)現(xiàn)遠(yuǎn)程webserver文件沒(méi)有更新,可以嘗試在 post-receive 加命令,輸出日志到 ~/log.txt
可以參考:

echo "beign" > /home/gituser/log.txt #判斷鉤子是否被觸發(fā),如果沒(méi)有,檢查權(quán)限和文件名
git fetch >> /home/gituser/log.txt
git pull &> /home/gituser/pull_log.txt # 查看pull錯(cuò)誤
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容