網站首頁 編程語言 正文
當我們想要實現幾個小伙伴合作開發同一個項目,或者建立一個資源分享平臺的時候,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設置的腳本,進行同步拉取代碼。
相關推薦
- 2022-07-07 ASP.Net使用System.Security.Principal模擬用戶_實用技巧
- 2022-05-13 C++ 使用Poco庫實現代碼運行時間統計
- 2022-09-06 C#任務并行Parellel.For和Parallel.ForEach_C#教程
- 2022-04-23 超出省略號,el-tooltip懸停展示全部的簡單實現
- 2022-04-09 windows一鍵啟動多個bat批處理文件或者啟動多個cmd窗口執行命令
- 2022-07-22 服務器配置uWSGI+Nginx+Django
- 2022-08-29 Python軟件包安裝的三種常見方法_python
- 2022-09-18 iOS開發底層探索界面優化示例詳解_IOS
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支