supervisor设置gogs的进程守护

supervisor设置gogs的进程守护

有关supervisor的使用,请跳转至 Supervisor 使用详解
有关gogs的介绍,请参见官方网站
以前运行gogs都是直接’./gogs web’,然后扔在后台就拉倒了,这就导致不知道啥时候出个问题就无法访问了,当然也无所谓,毕竟只有想起来了才上传一下代码,最近又开始搞新项目了,那自然不能再这样了,就想着加到supervisor中,搞一下这个进程守护。不得不说supervisor是真好用。

一、更改配置文件

gogs本身自带了各种进程守护方式的配置文件,比如supervisor和systemd等,当然也有windows平台的。这些文件的路径在“gogs/scripts”文件夹中,在github上也有一份。这里我们基于supervisor的配置文件进行一些修改。

[program:gogs]
# gogs命令所在路径
directory=/home/git/go/src/github.com/gogits/gogs/
# gogs服务启动的命令
command=/home/git/go/src/github.com/gogits/gogs/gogs web
autostart=true
autorestart=true
startsecs=10
# 各种日志输出的路径,这里可以改为自己喜欢的路径,默认也行
stdout_logfile=/var/log/gogs/stdout.log
stdout_logfile_maxbytes=1MB
stdout_logfile_backups=10
stdout_capture_maxbytes=1MB
stderr_logfile=/var/log/gogs/stderr.log
stderr_logfile_maxbytes=1MB
stderr_logfile_backups=10
stderr_capture_maxbytes=1MB
# 他是基于git用户做的配置,包括上边的路径也都是,我这里还是用的我自己的用户os,所以这些地方都要对应的改
user = git
# 我这里出了问题,所以environment这一行注释掉了
environment = HOME="/home/git", USER="git"

二、重启supervisor

# 复制上一步改好的配置文件到supervisor所在的配置目录
# 同时更改名称为.conf 结尾
cp ~/gogs/scripts/supervisor/gogs /etc/supervisor/conf.d/gogs.conf
# supervisor重新加载配置文件就好了
sudo supervisorctl reload

三、遇见问题

用户问题

[FATAL] […g/setting/setting.go:591 NewContext()] Expect user ‘root’ but current user is: os

说是需要root,但是当前是os,这个地方就是和environment这个参数是有关系的,如果把后边USER的值改成root,似乎就没有问题了,但是会导致别的问题,这应该是由于supervisor运行的用户和gogs运行的用户不同导致,具体原因不明,总之我把这一行注释掉了。后续supervisor的用户关系还是需要好好看看。

权限问题

当服务正常启动后,进行访问时出现如下错误;

[Macaron] 2021-01-03 22:28:09: Started GET / for 127.0.0.1
[Macaron] PANIC: session(start): mkdir data/sessions/1: permission denied
/home/vagrant/gopath/src/github.com/gogs/gogs/vendor/github.com/go-macaron/session/session.go:162 (0x9bae70)
/home/vagrant/gopath/src/github.com/gogs/gogs/vendor/gopkg.in/macaron.v1/context.go:79 (0x963b80)
/home/vagrant/gopath/src/github.com/gogs/gogs/vendor/github.com/go-macaron/inject/inject.go:157 (0x934080)
/home/vagrant/gopath/src/github.com/gogs/gogs/vendor/github.com/go-macaron/inject/inject.go:135 (0x933daa)
/home/vagrant/gopath/src/github.com/gogs/gogs/vendor/gopkg.in/macaron.v1/context.go:121 (0x963cd9)
/home/vagrant/gopath/src/github.com/gogs/gogs/vendor/gopkg.in/macaron.v1/context.go:112 (0x976b1f)
/home/vagrant/gopath/src/github.com/gogs/gogs/vendor/gopkg.in/macaron.v1/recovery.go:161 (0x976b0d)
/home/vagrant/gopath/src/github.com/gogs/gogs/vendor/gopkg.in/macaron.v1/logger.go:40 (0x967973)
/home/vagrant/gopath/src/github.com/gogs/gogs/vendor/github.com/go-macaron/inject/inject.go:157 (0x934080)
/home/vagrant/gopath/src/github.com/gogs/gogs/vendor/github.com/go-macaron/inject/inject.go:135 (0x933daa)
/home/vagrant/gopath/src/github.com/gogs/gogs/vendor/gopkg.in/macaron.v1/context.go:121 (0x963cd9)
/home/vagrant/gopath/src/github.com/gogs/gogs/vendor/gopkg.in/macaron.v1/context.go:112 (0x975e40)
/home/vagrant/gopath/src/github.com/gogs/gogs/vendor/gopkg.in/macaron.v1/logger.go:52 (0x975e2b)
/home/vagrant/gopath/src/github.com/gogs/gogs/vendor/gopkg.in/macaron.v1/logger.go:40 (0x967973)
/home/vagrant/gopath/src/github.com/gogs/gogs/vendor/github.com/go-macaron/inject/inject.go:157 (0x934080)
/home/vagrant/gopath/src/github.com/gogs/gogs/vendor/github.com/go-macaron/inject/inject.go:135 (0x933daa)
/home/vagrant/gopath/src/github.com/gogs/gogs/vendor/gopkg.in/macaron.v1/context.go:121 (0x963cd9)
/home/vagrant/gopath/src/github.com/gogs/gogs/vendor/gopkg.in/macaron.v1/router.go:187 (0x977d66)
/home/vagrant/gopath/src/github.com/gogs/gogs/vendor/gopkg.in/macaron.v1/router.go:294 (0x9704ad)
/home/vagrant/gopath/src/github.com/gogs/gogs/vendor/gopkg.in/macaron.v1/macaron.go:220 (0x968d4c)
/usr/local/go/src/net/http/server.go:2774 (0x74a9c7)
serverHandler.ServeHTTP: return err
/usr/local/go/src/net/http/server.go:1878 (0x7466b0)
(*conn).serve: // We purposefully aren’t echoing back the transfer-encoding’s value,
/usr/local/go/src/runtime/asm_amd64.s:1337 (0x466190)
goexit: DATA shifts<>+0x78(SB)/8, $0xffffffffffffffff
[Macaron] 2021-01-03 22:28:09: Completed GET / 500 Internal Server Error in 129.216632ms

这个问题很明确,就是权限不够的问题,查看权限不够的目录,发现该目录及其子目录都是属于我这个用户的,而他在运行时是用的root权限运行的,导致无法访问,所以将该部分目录的权限全部开放或者改变所有者为root用户就可以了。
之后就可以正常访问上传各种玩耍了。
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值