Gogs 是一款极易搭建的自助 Git 服务。Gogs 的目标是打造一个最简单、最快速和最轻松的方式搭建自助 Git 服务。使用 Go 语言开发使得 Gogs 能够通过独立的二进制分发,并且支持 Go 语言支持的 所有平台,包括 Linux、macOS、Windows 以及 ARM 平台。
然后,您可以通过以下 5 种方式来安装 Gogs:
本人采用的是在centos7 64位系统上进行二进制的安装。
git服务器的安装请参考:centos7下git服务器端搭建
Gogs安装过程分为这些步骤:
Mysql的安装请参考:CentOS7 64位下MySQL5.7安装与配置
systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall开机启动
nginx的安装请参考:Centos7安装Nginx实战
CentOS 7 下安装 Nginx
Gogs 默认以 git 用户运行(你应该也不会想一个能修改 ssh 配置的程序以 root 用户运行吧?)。 运行 sudo adduser git
新建好 git 用户。 su git
以 git 用户登录,到 git 用户的主目录中新建好 .ssh
文件夹。
我使用的是预编译的二进制包。需要从源码编译的话,请参考一般 Go 语言项目的编译。下载后解包到你喜欢的地方,例如 /usr/share/gogs/
或者 /home/git/gogs/
。文件夹的内容如下。
$ ls /home/git/gogs/
custom data gogs LICENSE log public README.md README_ZH.md scripts templates
首先建立好数据库。在 Gogs 目录的 scripts/mysql.sql
文件是数据库初始化文件。执行 mysql -u root -p < scripts/mysql.sql
(需要输入密码)即可初始化好数据库。
然后登录 MySQL 创建一个新用户 gogs,并将数据库 gogs
的所有权限都赋予该用户。
$ 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 格式的文本文件。详细的配置解释和默认值请参考官方文档,其中关键的配置大概是下面这些。
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 可以使用 Mailgun 的免费邮件发送服务,将 Mailgun 的 SMTP 配置填入到配置中就好。
修改nginx/conf/nginx.conf文件,
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/;
}
}
在gogs的scripts 目录中带有一个开箱即用的 systemd 配置文件。将配置文件内容填充好后复制到 /etc/systemd/system
目录中就可以使用。尤其注意 After=mysql.service
(对 MariaDB)或 After=mysqld.service
(MySQL)。
nohup ./gogs web
添加启动项和守护进程:
sudo ln -sf /home/git/gogs/scripts/systemd/gogs.service /usr/lib/systemd/
sudo chmod u+x /home/git/gogs/scripts/systemd/gogs.service
sudo ln -sf /home/git/gogs/scripts/init/centos/gogs /etc/init.d/
sudo chmod u+x /home/git/gogs/scripts/init/centos/gogs
sudo /sbin/chkconfig gogs on
sudo service gogs restart
使用 Gogs 搭建自己的 Git 服务器
gogs github
1. gogs开机自启动的问题,自启动不起来,启动日志如下:
在/var/log/message里面查看核心系统日志文件
2. 使用git用户启动gogs启动失败的问题,app.ini里面配置的run_user是git,但是以git用户启动失败。
3. 使用SSH 地址无法clone的问题,SSH clone 需要加 repositories 目录。
可参考这个。
问题2和问题3,在我的环境上通过更改git下gogs的目录的权限,改为root权限,以root用户启动,就OK啦。
4. ssh push时出现如下错误
解决方法: 在gogs界面上仓库设置的管理协作者中添加新的协作者,赋予可写权限即可push上去。