使用 gogs 搭建私有 git 服务

晚上加班回来,花了点时间把我在阿里云服务器上自己使用的私有 git 服务 gogs 做了一次升级。顺便写下这篇文章。

升级步骤

  1. 下载新的升级版本包
curl -O https://dl.gogs.io/0.12.3/gogs_0.12.3_linux_386.tar.gz
  1. 备份原来的安装目录
mv gogs gogs-old
  1. 解压新的升级包,会解压到 gogs 目录
tar zxvf gogs_0.12.3_linux_386.tar.gz
  1. 升级
cp -r gogs-old/custom gogs
cp -r gogs-old/data gogs
cp -r gogs-old/log gogs
  1. 重新启动服务验证
./gogs web &

搞定!!!

看完升级步骤,你是不是有点好奇,这 gogs 是个什么样的软件,升级竟然如此简单?

就我个人以往的使用经验,如果要搭建私有 git 服务,gogs 绝对是适合个人与中小团队的选择。

早在 2015 年左右,我就因为想让团队的版本管理工具从 SVN 转到 GIT 上,调研了许多 git 服务工具。机缘巧合在一个 go 的技术 QQ 群里,看到 gogs 的作者。简单了解后便做了尝试。从 0.5xx 的版本开始,后来升级到 0.8xx,再到我离开原来的团队,搭建自己使用的 git 私服。gogs 一直相当的稳定。而且安装与升级都非常的方便。

后来在新的团队使用 gitlab,也尝试自己使用 gitlab 搭建服务,有了更多的比较,更加了解 gogs 的方便、轻量、稳定。

全新安装 gogs 服务,官网也提供了很完善的文档的。详见:gogs二进制安装 等章节。

云服务器搭建 gogs 部署架构

这里简单分享一下我在阿里云服务器上搭建私有 git 服务使用的部署架构。

如图是整个的部署示意图:

  1. 用户访问部署在 ECS 上的 WEB 服务
  2. 云服务器上通过 docker 方式部署了 nginx,用户的所有访问都会经过 nginx
  3. 通过 nginx 反向代理到真正提供服务的应用,其中 gogs 服务是直接二进制安装到云服务器上的,没有使用 docker 方式

使用 gogs 搭建私有 git 服务_第1张图片

为了服务器的安全,我的阿里云云主机的安全策略仅开放了少数必要的端口,比如 HTTP 的 80,HTTPS 的 443,SSH 的 22 等。通过 Nginx 的反向代理就可以将 WEB 服务访问的入口汇到 80 和 443 上,即使在 Nginx 的背后有很多其他的服务,也不影响。

由于 Nginx 是通过 docker 方式部署的,而 gogs 服务是直接部署在服务器上。在配置 gogs 的反向代理时,需要找到 docker 宿主机的 IP。

在云服务器上通过 ifconfig 查看名称为 docker0 的网卡信息,就可以拿到 docker 宿主机的 IP。

使用 gogs 搭建私有 git 服务_第2张图片

然后在 nginx 上配置反向代理:

server {
    listen 80;

    server_name git.你的域名.com;

    # Add index.php to the list if you are using PHP

    location / {
        proxy_pass http://172.17.0.1:3000;
        proxy_redirect off;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

这样就可以通过 git.你的域名.com 来访问 gogs 了。

之所以没有使用 docker 方式来部署 gogs,一个原因是我想使用 SSH 的方式连接 git 仓库,如果使用 docker 方式部署,需要开启另外一个用于 SSH 连接的端口。这与是前面讲到的尽量减少服务器暴露的端口相冲突的。自己安装在服务器上,则直接使用服务器的 SSH 端口。

通过 docker 安装 gogs 可以看这里。

踩坑总结

在另外补一个升级过程中遇到的小坑。启动时报错:./gogs: No such file or directory。原因是下载 gogs 升级包是下载成了 386 的包,而我的云服务器是 amd64 的。重新下载安装包升级重启就没有问题了。

欢迎关注公众号:「可燃人物」
使用 gogs 搭建私有 git 服务_第3张图片

你可能感兴趣的:(后端开发,前端开发,持续集成,git,nginx)