首頁 > 軟體

碼雲(gitee)通過git自動同步到阿里雲伺服器

2022-12-17 14:01:45

當我們想要實現幾個小夥伴合作開發同一個專案,或者建立一個資源分享平臺的時候,GIT就是一個很好的選擇。當然,既然是一個共有平臺,那麼把這個平臺放到個人計算機上明顯是不合適的,因此就要在伺服器上搭建GIT了。另一個需求是,我們在本地開發,然後推播到伺服器上,並且自動同步到web站點目錄,這樣就可以直接看到網頁效果了,這就要實現自動同步。這篇文章主要介紹了碼雲(gitee)通過git自動同步到阿里雲伺服器

一.預先在碼雲(gitee)上新建專案

找到你的專案https的連結,儲存一下

二.阿里雲伺服器上安裝git

三.為了避免git pull時輸入賬號和密碼,我們需要建立.git-credentials

1.先cd到當前使用者目錄

cd ~

2.然後建立.git-credentials檔案

vi .git-credentials

3.寫入如下資料,注意,使用者名稱和密碼替換上自己碼雲(gitee)的使用者名稱和密碼,當然,如果你同時存在可以一行一個,存在同一個檔案

https://使用者名稱:密碼@gitee.com   //碼雲(gitee)的設定

4.接著執行如下命令,這裡注意,如果你是第一次在伺服器上使用git,那麼你最好先執行git config設定一下你的使用者,郵箱

git config --global user.name "使用者名稱"
git config --global user.email 郵箱
git config --global credential.helper store

5.檢視~/.gitconfig,會發現多一項

6.注意這裡只是設定的當前使用者,這裡我們檢視php-fpm執行的使用者是www(大家或許會跟我不同),所以我們需要為www也設定.git-credentials

我們把.gitconfig和.git-credentials複製到/home/nginx下,並設定所屬使用者和組為nginx

cp ~/.gitconfig /home/nginx/
cp ~/.git-credentials /home/nginx/
cd /home/nginx
chown nginx.nginx.gitconfig
chown nginx.nginx.git-credentials

四.我們到阿里雲伺服器的專案目錄git clone專案程式碼(第一步中的專案地址)

cd /data/www/
git clone https://gitee.com/guixianfeng/test.git
**(碼雲 新增了公鑰還不能git clone 程式碼點看自己的專案—>管理->是否開源)**

五.由於我們是通過php指令碼執行git pull所以,需要給www使用者讀寫test目錄的許可權

chown -R nginx:nginx /data/www/test
chmod -R g+w /data/www/test

六.拉取程式碼指令碼

接著我們在伺服器/data/wwwroot/test專案入口出新建一個webhooks.php, 拉取程式碼指令碼,注意該指令碼一定能外網存取, 這裡我的為test專案解析了一個http://tp.kinggui.com的域名

//本地路徑
$local = '/data/www/test';
//倉庫地址
$remote = 'https://gitee.com/guixianfeng/test.git';
  
//密碼
$password = '123456';
  
//獲取請求引數
$request = file_get_contents('php://input');
if (empty($request)) {
    die('request is empty');
}
  
//驗證密碼是否正確
$data = json_decode($request, true);
if ($data['password'] != $password) {
    die('password is error');
}
  
echo shell_exec("cd {$local} && git pull {$remote} 2>&1");
die('done ' . date('Y-m-d H:i:s', time()));

此處有點要注意,git pull程式碼處,我在伺服器上/data/wwwroot/test可以手動git pull拉下程式碼,但是遠端存取webhooks.php指令碼時,提示git: command not found,那麼此處倒數第二行程式碼可以改為如下:

echo shell_exec("cd {$local} && /usr/local/git/bin/git pull {$remote} 2>&1");

這裡/usr/local/git為我git的安裝目錄,大家的安裝目錄寫成各自對應的目錄即可

七、設定gitee的webhooks

八、同步拉取程式碼

最後我們只要git push程式碼,gitee就會同步觸發webhooks設定的指令碼,進行同步拉取程式碼。

到此這篇關於碼雲(gitee)通過git自動同步到阿里雲伺服器的文章就介紹到這了,更多相關碼雲git到伺服器內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com