Gogs使用教程

什么是 Gogs

Gogs 的目标是打造一个最简单、最快速和最轻松的方式搭建自助 Git 服务。使用 Go 语言开发使得 Gogs 能够通过独立的二进制分发,并且支持 Go 语言支持的 所有平台,包括 Linux、Mac OS X、Windows 以及 ARM 平台。

新建用户

Gogs 默认以 git 用户运行(你应该也不会想一个能修改 ssh 配置的程序以 root 用户运行吧?)。
运行 sudo adduser git 新建好 git 用户。
su git 以 git 用户登录,到 git 用户的主目录中新建好 .ssh 文件夹。

下载解包

我使用的是预编译的二进制包。需要从源码编译的话,请参考一般 Go 语言项目的编译。下载后解包到你喜欢的地方,例如 /usr/share/gogs/ 或者 /home/git/gogs/ 。文件夹的内容如下。

1
2
$ ls /home/git/gogs/
custom data gogs LICENSE log public README.md README_ZH.md scripts templates

运行安装

首先建立好数据库。

1
2
3
4
5
在安装完mysql之后,我们还需要创建一个数据库,将之取名为gogs,

CREATE DATABASE gogs CHARACTER SET utf8 COLLATE utf8_bin;
GRANT ALL PRIVILEGES ON gogs.* TO ‘root’@‘localhost’;
FLUSH PRIVILEGES;

在 Gogs 目录的 scripts/mysql.sql 文件是数据库初始化文件。执行 mysql -u root -p < scripts/mysql.sql (需要输入密码)即可初始化好数据库。

然后登录 MySQL 创建一个新用户 gogs,并将数据库 gogs 的所有权限都赋予该用户。

1
2
3
4
5
6
$ mysql -u root -p
> # (输入密码)
> create user 'gogs'@'localhost' identified by '密码';
> grant all privileges on gogs.* to 'gogs'@'localhost';
> flush privileges;
> exit;

运行 gogs web 把 Gogs 运行起来,然后访问 http://服务器IP:3000/ 来进行安装,填写好表单之后提交就可以了。

需要注意的是, 0.6.9.0903 Beta 版本有个 bug,允许在关闭注册的情况下不添加管理员,这样安装完成之后将没有任何用户可以登录。所以请务必在安装界面指定一个管理员帐号。

配置调整

配置文件位于 Gogs 目录的 custom/conf/app.ini ,是 INI 格式的文本文件。详细的配置解释和默认值请参考 官方文档 ,其中关键的配置大概是下面这些。

1
2
3
4
5
6
7
8
9
10
RUN_USER 默认是 git ,指定 Gogs 以哪个用户运行
ROOT 所有仓库的存储根路径
PROTOCOL 如果你使用 nginx 反代的话请使用 http ,如果直接裸跑对外服务的话随意
DOMAIN 域名。会影响 SSH clone 地址
ROOT_URL 完整的根路径,会影响访问时页面上链接的指向,以及 HTTP clone 的地址
HTTP_ADDR 监听地址,使用 nginx 的话建议 127.0.0.1 ,否则 0.0.0.0 也可以
HTTP_PORT 监听端口,默认 3000
INSTALL_LOCK 锁定安装页面
Mailer 相关的选项
其中,Mailer 可以使用 Mailgun 的免费邮件发送服务,将 Mailgun 的 SMTP 配置填入到配置中就好。

nginx 反代

/etc/nginx/sites-available 中新建一个文件,把以下内容写入文件中。

1
2
3
4
5
6
7
8
9
server {
server_name 域名或IP;
listen 80; # 或者 443,如果你使用 HTTPS 的话
# ssl on; 是否启用加密连接
# 如果你使用 HTTPS,还需要填写 ssl_certificate 和 ssl_certificate_key
location / { # 如果你希望通过子路径访问,此处修改为子路径,注意以 / 开头并以 / 结束
proxy_pass http://127.0.0.1:3000/;
}
}

然后进入 /etc/nginx/sites-enabled 中,执行 ln -s ../sites-available/配置文件名 启用这个配置文件。

最后重启 nginx 就好了,Ubuntu 下是 sudo service nginx restart

服务脚本

此处的服务脚本是针对 Debian 系的 init 脚本。

其他地方处理办法:

gogs提供多重方式进行安装,比较常用的有两种。一个是二进制安装,另一个是通过源代码安装。

然后切换到解压得到的目录之后,直接运行 ./gogs web 即可在服务器上运行gogs服务了。

./gogs -h 得到更多的命令行参数说明。

nohup ~/gogs/gogs web > /dev/null 2>&1 &
启动gogs服务之后,首次运行会让你进行相关的配置。

主要分为3个配置项,

一是数据库的配置,包括数据库地址及密码;

二是服务的应用配置,包括域名,路径等等;

三是可选邮件服务和管理员配置。

后记

配置文件手册