目录
前言
自己搭建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用户
- 首先SSH登录到服务器,以root登录
- 添加git用户:
useradd git
- 后面我将会把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
- 切换至git用户:
su git
3. 下载二进制包并配置
参考:https://gogs.io/docs/installation/install_from_binary
根据你的服务器的情况,下载对应的二进制包。如果你愿意编译安装也可以,但是会花更多的时间。
过程很简单,大致三步:
- 下载
- 解压
- 打开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.后台运行
两种方式:screen
和nohup
都可以。
可以 nohop ./gogs web &
这里就不过多赘述了。请自行百度,有许多教程。
6. 访问
给自己一个亲亲抱抱吧~
如果刚刚你没有创建管理员的话,现在赶紧创建吧(直接注册就行了)。
总结
gogs 真的是非常棒的一个git服务器!设置虽然有点坑,但是总的来说还是非常简单的,大约5分钟就可以搞定。
如果文章有什么错误的话,还请指正。
有疑问的话,也可以在本文留言。
本作品使用基于以下许可授权:Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.
把gogs服务器设置成为仅允许密钥登录。怎么操作啊,没找到gogs里面有对应的项目啊
文中已有说明:
关于SSH使用密钥的设置,这篇文章讲得比较仔细:http://blog.csdn.net/permike/article/details/52386868 。 这里就不多赘述了。