搭建git服务器gogs-过程中好多坑

前言


自己搭建git服务器这个想法实际上很久之前就已经有了。但是当时只知道gitlab,那个极其占用内存的用Ruby写的庞然大物,连独服都不一定能运行好。其他的git服务器要么老旧,要么弃坑,各种不靠谱。

搁置一段时间以后,偶然间听说了gogs——一个用go语言编写的git服务器。我对golang一直以来抱有好感,于是毫不犹豫地开始装gogs。

然而……事情没有那么顺利……安装gogs让我可怜的服务器从下午炸到第二天晚上都没有找到问题所在。后来配置的过程中也是问题一堆。这里,简单总结一下我趟了若干大坑以后,我认为比较好的gogs安装过程。(官方给的文档有点简单

安装过程


我使用的安装环境:

硬件: Intel E5-2650L @ 1.8GHz 2 Cores, 2G RAM, 45G Disk Space OpenVZ
系统: ubuntu 16.04 x86_64

1. 处理SSH

如果你不希望使用SSH来管理git,请直接跳至第3步-下载二进制包并配置。

首先,把服务器设置成为仅允许密钥登录。(原因之一是一旦你使用默认的22端口而且使用密码登录,会有各种密码爆破,烦都烦死了)

关于SSH使用密钥的设置,这篇文章讲得比较仔细:http://blog.csdn.net/permike/article/details/52386868 。 这里就不多赘述了。

2. 初始化git用户

  1. 首先SSH登录到服务器,以root登录
  2. 添加git用户:
    useradd git
  3. 后面我将会把gogs主目录和仓库目录分别放在 /home/git/gogs 和 /data/gogs-repositories 下(目录随意),授予权限
    mkdir /home/git
    mkdir -p /data/gogs-repositories
    chown -R git:git /home/git
    chown -R git:git /data/gogs-repositories
  4. 切换至git用户:
    su git

3.  下载二进制包并配置

参考:https://gogs.io/docs/installation/install_from_binary

根据你的服务器的情况,下载对应的二进制包。如果你愿意编译安装也可以,但是会花更多的时间。

过程很简单,大致三步:

  1. 下载
  2. 解压
  3. 打开web,配置

如果你的服务器是64位Linux系统,可以参照一下我的:

cd ~
wget https://dl.gogs.io/0.11.34/linux_amd64.tar.gz
tar xzf linux_amd64.tar.gz
cd gogs
./gogs web

如果端口冲突,可以在执行./gogs web -port xxxx (其他的端口)。执行完./gogs web后,打开浏览器,访问。 http://你服务器的IP或域名:3000 (或者你自己设置的端口)

坑爹的配置环节到了!

1.数据库设置:

因为主键的设置问题,使用旧版本mysql会出现错误。如果访问量不大的话,建议使用SQLite3,设置比较简单。

2.应用基本设置

如图:

这里有必要说一下SSH服务器的问题,就是这里让我服务器SSH原地爆炸(具体原因我没有仔细研究)。

如果你使用了gogs内置的ssh服务器,当你重启以后,很容易出现完全无法登录的情况。而且,独立的ssh,在我看来,并没有让你的设置更方便,也没有让安全性得到提高。并且,如果你使用内置的服务器,必须要使用1024以上的端口,因为git用户的权限问题。git链接还要带上端口非常恼人的。所以,建议不要选择内置SSH服务器。

HTTP端口的问题,也是同样会出现权限问题。80端口git用户同样也没有权限开,如果你非要不用nginx的话也可以,在root用户里用iptables一转,也可以解决。(这种极不优雅的行为高度不推荐

如果使用https,应用URL请填写https://

下面是可选的邮件服务器。如果你确定要使用邮件的话,请提前在这里配置,不然结束配置后再改配置文件是很麻烦的!

管理员设置,建议不要在这里设置

立即安装吧!

安装后会跳转到80端口,再次访问3000端口查看是否安装成功。确认安装成功后,进行下一步。

4. 配置Nginx 反代

环境:lnmp(a) 1.4

用lnmp添加一个虚拟主机,不需要数据库,打开SSL。

完成后,更改nginx配置文件:

cd /usr/local/nginx/conf/vhost
vi g.sst.st.conf

删掉没用的,改成这个样子:

其中 server_name 的 g.sst.st 替换为你的域名。

保存退出。重启nginx

lnmp nginx restart

5.后台运行

两种方式:screennohup都可以。

可以 nohop ./gogs web &

这里就不过多赘述了。请自行百度,有许多教程。

6. 访问

给自己一个亲亲抱抱吧~

如果刚刚你没有创建管理员的话,现在赶紧创建吧(直接注册就行了)。

总结


gogs 真的是非常棒的一个git服务器!设置虽然有点坑,但是总的来说还是非常简单的,大约5分钟就可以搞定。

如果文章有什么错误的话,还请指正。

有疑问的话,也可以在本文留言。

 

CC BY-NC-SA 4.0 本作品使用基于以下许可授权:Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.

2 thoughts on “搭建git服务器gogs-过程中好多坑

  1. 把gogs服务器设置成为仅允许密钥登录。怎么操作啊,没找到gogs里面有对应的项目啊

    1. 文中已有说明:

      关于SSH使用密钥的设置,这篇文章讲得比较仔细:http://blog.csdn.net/permike/article/details/52386868 。 这里就不多赘述了。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注