Gogs搭建纪实
一直想搭一个私有Git,加上刚刚加了个项目组,组内希望用私有Git做版本控制——这个任务就落到我头上来了。
本来想搭Gitlab的,然后我看了看Requirements: Minimal 4GB of RAM。
See you!!!!!!!!
在这个时候,我看到了Gogs,用Go语言写的轻量Git系统。很棒,因为就我们项目组在使用,短期内这个东西够用了,如果后期需要的话去租一个内存更大的VPS搭了Gitlab然后全部git push上去就完了。
其实也没搭过多少项目,这次也是折腾了一段时间,就写点东西记录一下吧。
主机是腾讯云的学生一元主机,跑的是Debian 8.2 64位。
搭建过程
安装依赖
1 2sudo apt-get update sudo apt-get install git mysql-server mysql-clientGogs用MySQL做数据库,所以要装一下MySQL。在安装MySQL的时候会要求设置root密码,注意一下。
新建用户
不要把所有东西拿到
root下面跑,不然很吓人的。1 2sudo adduser git su - git我们新建一个
git用户并且切换到这个用户,确保之后的所有操作都是在这个用户下。下载Gogs
直接访问下载页面选择合适的下载方式下载并解压就行。
这边因为我直接用的二进制版本,就没有编译的事情了。如果想自己编译并安装,请看文档。
我是放在了
git这个用户的home文件夹下面。1cd ~/gogs配置MySQL
官方在包里面写好了一份表,我们直接导入就行。
1mysql -u root -p < scripts/mysql.sql然后是配置一下MySQL
1 2 3 4 5mysql -u root -p > CREATE USER 'gogs'@'localhost' IDENTIFIED BY '<password>'; > GRANT ALL PRIVILEGES ON gogs.* TO 'gogs'@'localhost'; > FLUSH PRIVILEGES; > EXIT;运行配置
现在差不多弄完了,直接执行
./gogs web就能开起来了。访问 http://ip:3000/install 进行一下基本配置就能使用了。
额外设置
Nginx反向代理配置
服务是跑起来了,但是有个很奇妙的问题,当我用80端口来跑的时候Log报错Permission Denied,用root是没问题的,但是如果用root跑就和我的初衷违背了。以前有用过nginx,所以这次我也是用nginx做一个反代。
安装nginx
很简单,直接跑这个命令就行:
1sudo apt-get install nginxnginx配置
切换到
/etc/nginx/sites-available/,新建任意一个文件,输入:1 2 3 4 5 6 7 8server { server_name <your_domain>; listen 80; location / { proxy_pass http://127.0.0.1:<localport>/ } }保存,然后来到
/etc/nginx/sites-enabled,执行一下ln -s ../sites-available/<config>。Gogs配置
1cd /home/git/gogs/custom/confGogs的配置就存在这个目录下面的
app.ini文件里面,改一下如下字段:1 2HTTP_ADDR = 127.0.0.1 HTTP_PORT = <localport>这里要注意一下,上下两个文件的
<localport>部分要相同而且要本地没有占用的端口。建议设置完了后直接把这个端口封死在内网。可以用iptables,我是直接腾讯云安全组搞定了。重启nginx
这个时候就ok了,直接重启一下nginx就能用了:
1udo service nginx restart
全站SSL
既然都用了Nginx,为什么不直接搞一个全站SSL呢?
服务用的Let’s Encrypt,之前也用过很多次了。怎么获取一个证书就不谈了,倒是获取的时候要记得使用stand-alone,方便取用。
修改nginx配置文件
回到刚才的nginx配置文件,改成这个样子:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18server { server_name <your_domain>; listen 443; # SSL认证是通过443端口 ssl on; ssl_certificate /etc/letsencrypt/live/<your_domain>/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/<your_domain>/privkey.pem; location / { proxy_pass http://127.0.0.1:<localport>; } } # 给80端口做301重定向 server { server_name <your_domain>; listen 80; return 301 https://<your_domain>$request_uri; }修改Gogs配置文件
1ROOT_URL = https://<your_domain>
好了,重启一下nginx,就能看到大大的绿锁了~。
服务启动Gogs
Gogs的默认逻辑还是本地程序,kill了当前的SSH seesion就没了,不过官方写好了脚本,就在scripts目录下面,各种各样的很全,我用的是systemd,直接改一下就行,注意是这一行:
| |
其他的没啥可谈的,直接把gogs.service整个复制到/etc/systemd/system/目录下面,然后service gogs start就ok了。
以后就有私有git啦哈哈哈哈哈哈哈哈
(其实DDM的服务器被占了,还是比较难受的