Gogs 是一款極易搭建的自助 Git 服務。
Gogs 的目標是打造一個最簡單、最快速和最輕鬆的方式搭建自助 Git 服務。使用 Go 語言開發使得 Gogs 能夠透過獨立的二進位制分發,並且支援 Go 語言支援的 所有平臺,包括 Linux、Mac OS X、Windows 以及 ARM 平臺。
編寫gogs鉤子,配合CentOS7 下使用 rsync+sersync 配置檔案自動同步
,可實現自動化部署專案。
背景故事:
擼了快 3 年的 Laravel 了,儘量這周分享本人使用的多臺伺服器叢集部署方案
伺服器安裝docker
網上教程很多,這裡略過,記得更換映象
下載gogs映象
#從Docker Hub中提取影像。
$ docker pull gogs/gogs
#為卷建立本地目錄。
$ mkdir -p /var/gogs
#首次使用`docker run`。為了使您的資料遠離Docker容器,我們在這裡執行卷(/var/gogs- > /data),您可以根據您的情況進行更改。
# 如果使用nginx反代,則只需要10022埠即可
$ docker run --name=gogs -d -p 10022:22 -p 10080:3000 -v /var/gogs:/data gogs/gogs
#如果你已停止它,請使用`docker start`。
$ docker start gogs
預設以10022和10080對外介面,切記,必須要掛載目錄,必須!否則一但映象銷燬,資料全部丟失!還有儘可能選擇mysql
或其他非sqlite
資料庫,原理同上!
注意:將Gogs ssh服務從容器對映到主機並在首次設定Gog時設定適當的SSH埠和URI設定非常重要。要使用上述配置訪問和克隆Gogs Git儲存庫,您可以使用:git clone ssh://git@hostname:10022/username/myrepo.git例如
nginx反代gogs
https
記得新增證照,把配置檔案中的中文更換成對應的內容。
server
{
#listen 443 ssl http2;
listen 443 ssl;
server_name 網址;
location / {
#proxy_pass https://127.0.0.1:10080;
proxy_set_header X-Real-IP $remote_addr;
# 10080埠是docker對映的
proxy_pass http://127.0.0.1:10080$request_uri;
}
#SSL-START SSL相關配置,請勿刪除或修改下一行帶註釋的404規則
#error_page 404/404.html;
ssl_certificate 證照地址/fullchain.pem;
ssl_certificate_key 證照地址/privkey.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
error_page 497 https://$host$request_uri;
#SSL-END
#ERROR-PAGE-START 錯誤頁配置,可以註釋、刪除或修改
#error_page 404 /404.html;
#error_page 502 /502.html;
#ERROR-PAGE-END
#PHP-INFO-START PHP引用配置,可以註釋或修改
#include enable-php-73.conf;
#PHP-INFO-END
#禁止訪問的檔案或目錄
location ~ ^/(\.user.ini|\.htaccess|\.git|\.svn|\.project|LICENSE|README.md)
{
return 404;
}
#一鍵申請SSL證照驗證目錄相關設定
location ~ \.well-known{
allow all;
}
access_log 訪問成功日誌地址;
error_log 訪問失敗日誌地址;
}
# 以下部分表示重定向 HTTP 請求到 HTTPS
server {
listen 80;
server_name 網址
return 301 https://$host$request_uri;
}
http
不需要設定靜態檔案快取,只需要設定location,server_name 即可
server {
listen80;
server_name 網址;
location /{
# 10080埠是docker對映的
proxy_pass http://127.0.0.1:10080;
proxy_redirect default;
}
}
訪問nginx配置檔案中的域名:
輸入配置引數即可。資料庫可以選擇sqlite,這樣就不需要外接mysql了。
點選安裝即可,具體配置見下圖
詳細配置參考文件
之後根據提示,就可以正常使用了
首先點選倉庫介面的倉庫設定
點選左側管理git鉤子,之後編輯post-receive
其中GIT_WORK_TREE 後換成自己需要的目錄即可
特別注意:
- 安裝中不要勾選使用內建ssh服務!
- 安裝ssh服務埠不要是22,另開一個!
- 為什麼鉤子推送會失敗?因為寫鉤子的時候,目錄是在docker裡的,當然找不到,所以,鉤子裡的同步目錄要和掛載的主機目錄有關聯才行!
這個地址,其實是docker中gogs的地址,我們在執行映象的時候,指定了對映目錄
/var/gogs:/data
也就是說,我們配置的鉤子中,寫的地址是 /data/project/bbs
,其實對應我們主機的是/var/gogs/project/bbs
,如果沒有此目錄記得先建立此目錄。
之後,再參照CentOS7 下使用 rsync+sersync 配置檔案自動同步
即可實現本地開發,git提交後自動推送至伺服器,之後多臺伺服器之間自動同步差異化檔案,實現自動化部署。
本作品採用《CC 協議》,轉載必須註明作者和本文連結