Gogs 是一款极易搭建的自助 Git 服务。
Gogs 的目标是打造一个最简单、最快速和最轻松的方式搭建自助 Git 服务。使用 Go 语言开发使得 Gogs 能够通过独立的二进制分发,并且支持 Go 语言支持的 所有平台,包括 Linux、Mac OS X、Windows 以及 ARM 平台。
编写gogs钩子,配合CentOS7 下使用 rsync+sersync 配置文件自动同步
,可实现自动化部署项目。
服务器安装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
mysqlsqlite
注意:将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;
}
}
初始化gogs服务
访问nginx配置文件中的域名:
输入配置参数即可。数据库可以选择sqlite,这样就不需要外接mysql了。
点击安装即可,具体配置见下图
详细配置参考文档
之后根据提示,就可以正常使用了
配置git钩子首先点击仓库界面的仓库设置
点击左侧管理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 协议》,转载必须注明作者和本文链接