简介

最近新项目,需要在本地使用 git,就准备在公司内网服务器上搭建一个 git 服务器,刚好之前
Golang 时有了解过 Golang 写的 Gogs。它真的很好用,界面也
非常 nice。

关于如何安装,在他的官网上已经写得非常详细了,但是关于如何将其设置为服务来运行这个问题,官网并未
做过多的描述。

下面我就讲解一下我在 CentOS 7 系统上将 Gogs 作为服务运行的操作。

Why

设置为服务会大大方便我们的使用以及维护,传统使用方式如下:

1
./gogs web

这种方式会导致一个问题,就是你如果关闭当前 shell,Gogs 服务也对应关闭了,当然可能你会选择
第二种办法:

1
nohup ./gogs web > gogs-out.log 2> gogs-err.log

这样的确能保证退出当前 shell 服务继续运行,但是当我们要重启 Gogs 时,这个办法就显得非常
麻烦了

  1. 首先我们需要 ps -e | grep gogs 找到当前运行中 Gogs 的进程号
  2. 然后通过 kill 进程号 来关闭这个进程
  3. 最后再通过 nohup ./gogs web > gogs-out.log 2> gogs-err.log 启动新的服务

太麻烦了!!

服务模式

环境:服务器为 CentOS 7,Gogs 运行在宿主机上的,没有在 Docker

修改配置 vim gogs/script/init/centos/gogs

1
2
3
4
5
6
7
8
9
10
11
# Default values

NAME=gogs
GOGS_HOME=/home/git/gogs
GOGS_PATH=${GOGS_HOME}/$NAME
GOGS_USER=git
SERVICENAME="Gogs"
LOCKFILE=/var/lock/subsys/gogs
LOGPATH=${GOGS_HOME}/log
LOGFILE=${LOGPATH}/gogs.log
RETVAL=0

我们需要确保以下两项配置是正确的:

  • GOGS_HOME 指向你 Gogs 的目录
  • GOGS_USER 指向你运行 Gogs 所用的用户,这个用户一定要存在且有相关权限

然后将该文件拷贝到系统目录,并为其增加相关权限

1
2
sudo cp ./gogs/script/init/centos/gogs /etc/init.d/
sudo chmod +x /etc/init.d/gogs

最后只需要运行就行了:

1
sudo service gogs start

重启也简单:

1
sudo service gogs restart