Hello welcome to Yzone.net

git 服务 gogs安装记录

准备

具体的环境要求,下载请看官网gogs.io

gogs 安装使用说明

  • 我的安装路径 /mnt/data/services/gogs
  • gogs 自定义配置文 gogs/custom/conf/app.ini, 需要自己手动创建
  • 需将gogs目录、 git仓库等相关目录权限分给 gogs 中配置的用户

使用service来管理启动、停止等

gogs 提供的service文件在目录下 gogs/scripts/init,根据自己的系统选择。 我这里是使用centos下的配置文件,移动配置gogs/scripts/init/centos/gogs/etc/rc.d/init.d/gogs

创建 /etc/sysconfig/gogs 来设置一些信息覆盖 /etc/rc.d/init.d/gogs 中的默认配置

#!/bin/sh

#
# override gogs default config
#

NAME=gogs
GOGS_HOME=/mnt/data/services/gogs
GOGS_PATH=${GOGS_HOME}/$NAME
# GOGS_USER=git
GOGS_USER=inhere
SERVICENAME="Gogs Go Git Service"
LOCKFILE=/var/lock/subsys/gogs
LOGPATH=${GOGS_HOME}/log
LOGFILE=${LOGPATH}/gogs.log

然后就可以使用 sudo service gogs [start|stop|status] 命令了

加入开机启动

使用chkconfig --add gogschkconfig gogs on添加到开机启动,看/var/log/boot.log是否有启动这个服务

遇到的问题

使用命令 sudo service gogs start 启动,终端提示[OK]了。 但在进程中却没有gogs服务,也无法访问。 之前在gogs目录使用./gogs web就是可以的. 查看lock文件/var/lock/subsys/gogs也已存在了。

查看gogs日志发现提示没有找到git,但我是把 git 安装目录下的 bin加入了环境变量的,/usr/local/bin 也有 git的软连接

后来排查发现 /etc/rc.d/init.d/gogs 使用并引入了文 /etc/rc.d/init.d/functions 里面有这样几句

# Set up a default search path.
PATH="/sbin:/usr/sbin:/bin:/usr/bin"
export PATH

重置了变量 PATH, 所以我加入环境变量的git和/usr/local/bin 下的 git 都无法找到

so,需要配置一个git的软链接到上面的目录之一才行

$ sudo ln -s /usr/local/git/bin/git /usr/bin/git

然后

# 先调用下stop命令
$ sudo service gogs stop 
$ service gogs start

使用 systemctl 来管理

centos 7 也支持使用systemctl来管理服务,gogs 提供的systemctl service文件在 gogs/scripts/systemd/gogs.service

CentOS 7的服务systemctl脚本存放在:/usr/lib/systemd/,有系统(system)和用户(user)之分,像需要开机不登陆就能运行的程序,还是存在系统服务里吧,即:/usr/lib/systemd/system目录下

移动配置文件

sudo mv gogs/scripts/systemd/gogs.service /usr/lib/systemd/system/

根据需要调整配置

然后就可以使用 sudo systemctl [start|stop|status] gogs 等命令了

加入开机启动

只要使用systemctl enable gogs就可以将所编写的服务添加至开机启动

更多systemd service 编写可参考在CentOS 7上利用systemctl添加自定义系统服务


分类 git    标签 git , gogs , golang
文档结构