導航:首頁 > 編程語言 > webhooksphp

webhooksphp

發布時間:2023-11-17 15:30:00

⑴ 如何利用git webhooks 實現網站代碼自動化部署

1. 生成公鑰

公鑰有兩個:1. git用戶公鑰,2. 部署公鑰:

git用戶公鑰

ssh-keygen -t rsa -C "[email protected]"
# 然後一直回車就行
# 生成的文件通常是 /root/.ssh/id_rsa,如果非root用戶請查看提示上的路徑

1
2
3

ssh-keygen -t rsa -C "[email protected]"
# 然後一直回車就行
# 生成的文件通常是 /root/.ssh/id_rsa,如果非root用戶請查看提示上的路徑

部署公鑰

sudo -Hu www ssh-keygen -t rsa # 請選擇 「no passphrase」,一直回車下去

2. 准備鉤子文件

創建和修改目錄許可權:

mkdir /home/wwwroot/website.com/hook
chown -R www:www /home/wwwroot/website.com/hook

1
2

mkdir /home/wwwroot/website.com/hook
chown -R www:www /home/wwwroot/website.com/hook

寫入鉤子文件:

sudo -Hu www touch /home/wwwroot/website.com/hook/index.php

1

sudo -Hu www touch /home/wwwroot/website.com/hook/index.php

<?php

error_reporting(1);

$target = '/home/wwwroot/website.com'; // 生產環境web目錄

$token = '您在coding填寫的hook令牌';
$wwwUser = 'www';
$wwwGroup = 'www';

$json = json_decode(file_get_contents('php://input'), true);

if (empty($json['token']) || $json['token'] !== $token) {
exit('error request');
}

$repo = $json['repository']['name'];

// $cmds = array(
// "cd $target && git pull",
// "chown -R {$wwwUser}:{$wwwGroup} $target/",
// );

// foreach ($cmds as $cmd) {
// shell_exec($cmd);
// }

// 感謝@墨跡凡指正,可以直接用www用戶拉取代碼而不用每次拉取後再修改用戶組

$cmd = "sudo -Hu www cd $target && git pull";

shell_exec($cmd);

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32

<?php

error_reporting(1);

$target = '/home/wwwroot/website.com'; // 生產環境web目錄

$token = '您在coding填寫的hook令牌';
$wwwUser = 'www';
$wwwGroup = 'www';

$json = json_decode(file_get_contents('php://input'), true);

if (empty($json['token']) || $json['token'] !== $token) {
exit('error request');
}

$repo = $json['repository']['name'];

// $cmds = array(
// "cd $target && git pull",
// "chown -R {$wwwUser}:{$wwwGroup} $target/",
// );

// foreach ($cmds as $cmd) {
// shell_exec($cmd);
// }

// 感謝@墨跡凡指正,可以直接用www用戶拉取代碼而不用每次拉取後再修改用戶組

$cmd = "sudo -Hu www cd $target && git pull";

shell_exec($cmd);

確保你的hook文件可以訪問:http://example.com/hook/index.php,鉤子准備完成。

3.修改git配置和保存git用戶名密碼

sudo -Hu www git config --global credential.helper store # 永久保存
sudo -Hu www git config --global user.name "Bantes"
sudo -Hu www git config --global user.email "[email protected]" # 郵箱請與conding上一致

1
2
3

sudo -Hu www git config --global credential.helper store # 永久保存
sudo -Hu www git config --global user.name "Bantes"
sudo -Hu www git config --global user.email "[email protected]" # 郵箱請與conding上一致

在Coding網站

1.添加用戶公鑰

復制/root/.ssh/id_rsa.pub內容到個人設置頁的SSH公鑰里添加即可(https://coding.net/user/account/setting/keys)

2.添加部署公鑰

復制/home/www/.ssh/id_rsa.pub的內容並添加到部署公鑰:

選擇項目 > 設置 > 部署公鑰 > 新建 > 粘貼到下面框並確認

3.添加hook

選擇項目 > 設置 > WebHook > 新建hook > 粘貼你的hook/index.php所在的網址。比如:http://example.com/hook/index.php, 令牌可選,但是建議寫上。

稍過幾秒刷新頁面查看hook狀態,顯示為綠色勾就OK了。

初始化

1.我們需要先在伺服器上clone一次,以後都可以實現自動部署了:

sudo -Hu www git clone https://git.coding.net/yourname/yourgit.git /home/wwwroot/website.com/ --depth=1

1

sudo -Hu www git clone https://git.coding.net/yourname/yourgit.git /home/wwwroot/website.com/ --depth=1

這個時候應該會要求你輸入一次Coding的帳號和密碼,因為上面我們設置了永久保存用戶名和密碼,所以之後再執行git就不會要求輸入用戶名和密碼了。

**!!注意,這里初始化clone必須要用www用戶**

2.往Coding.net提交一次代碼測試:

在本地clone的倉庫執行:

git commit -am "test hook" --allow-empty
git push

1
2

git commit -am "test hook" --allow-empty
git push

OK,稍過幾秒,正常的話你在配置的項目目錄里就會有你的項目文件了。

初始化Laravel框架

1. 下載Composer

在項目目錄下執行:

sudo -Hu www curl -sS https://getcomposer.org/installer | php
sudo -Hu www php composer.phar install

1
2

sudo -Hu www curl -sS https://getcomposer.org/installer | php
sudo -Hu www php composer.phar install

**!!記得在本地提交的時候在.gitignore中加上composer.phar**

閱讀全文

與webhooksphp相關的資料

熱點內容
php判斷終端 瀏覽:116
編譯網頁在線 瀏覽:918
國際版本伺服器是什麼意思 瀏覽:435
壓縮機十年包換 瀏覽:530
內核編譯之後安裝到哪 瀏覽:58
單片機加場效應管 瀏覽:152
怎麼關閉appstore 瀏覽:474
學編程入門語言 瀏覽:307
安卓機為什麼總是出現升級提示 瀏覽:133
b樹java實現 瀏覽:943
亞馬遜雲伺服器到期了怎麼續費 瀏覽:850
我的世界網易如何在伺服器裡面加光影 瀏覽:284
nat地址訪問外網伺服器 瀏覽:966
怎樣用java編譯一個心形 瀏覽:934
如何使用python中的pygame 瀏覽:836
python實用小工具 瀏覽:24
怎麼在安卓手機上去除馬賽克 瀏覽:235
農行濃情通app怎麼下載 瀏覽:533
怎麼把原文件夾找回來 瀏覽:535
俄羅斯方塊實現python思路 瀏覽:735