Gogs 无法访问,提示 data/sessions operation not permitted


#1

Gogs 版本:Gogs 0.11.53.0603
系统类型及版本:Windows SubSystem Ubuntu 16.04
数据库:sqlite3
服务模式:supervisor (采用官方版本)
问题描述:
新装 gogs,设置数据放入 gogs 解压目录 data 下,安装完成后无问题,但是重启 gogs 后,服务可以启动,但是无法访问网页,提示 500,具体日志如下:

[Macaron] 2018-09-12 00:35:02: Started GET / for [::1]
[Macaron] PANIC: session(start): chtimes data/sessions/b/0/b0477b4de0efeb1a: operation not permitted
/usr/local/go/src/runtime/panic.go:502 (0x4344c8)
/home/vagrant/gopath/src/github.com/gogs/gogs/vendor/github.com/go-macaron/session/session.go:156 (0x8d5f1b)
/home/vagrant/gopath/src/github.com/gogs/gogs/vendor/gopkg.in/macaron.v1/context.go:79 (0x8837b0)
/home/vagrant/gopath/src/github.com/gogs/gogs/vendor/github.com/go-macaron/inject/inject.go:157 (0x8592f6)
/home/vagrant/gopath/src/github.com/gogs/gogs/vendor/github.com/go-macaron/inject/inject.go:135 (0x85905a)
/home/vagrant/gopath/src/github.com/gogs/gogs/vendor/gopkg.in/macaron.v1/context.go:121 (0x88399d)
/home/vagrant/gopath/src/github.com/gogs/gogs/vendor/gopkg.in/macaron.v1/context.go:112 (0x8838de)
/home/vagrant/gopath/src/github.com/gogs/gogs/vendor/gopkg.in/macaron.v1/recovery.go:161 (0x89590a)
/home/vagrant/gopath/src/github.com/gogs/gogs/vendor/gopkg.in/macaron.v1/logger.go:40 (0x886b03)
/home/vagrant/gopath/src/github.com/gogs/gogs/vendor/github.com/go-macaron/inject/inject.go:157 (0x8592f6)
/home/vagrant/gopath/src/github.com/gogs/gogs/vendor/github.com/go-macaron/inject/inject.go:135 (0x85905a)
/home/vagrant/gopath/src/github.com/gogs/gogs/vendor/gopkg.in/macaron.v1/context.go:121 (0x88399d)
/home/vagrant/gopath/src/github.com/gogs/gogs/vendor/gopkg.in/macaron.v1/context.go:112 (0x8838de)
/home/vagrant/gopath/src/github.com/gogs/gogs/vendor/gopkg.in/macaron.v1/logger.go:52 (0x894c20)
/home/vagrant/gopath/src/github.com/gogs/gogs/vendor/gopkg.in/macaron.v1/logger.go:40 (0x886b03)
/home/vagrant/gopath/src/github.com/gogs/gogs/vendor/github.com/go-macaron/inject/inject.go:157 (0x8592f6)
/home/vagrant/gopath/src/github.com/gogs/gogs/vendor/github.com/go-macaron/inject/inject.go:135 (0x85905a)
/home/vagrant/gopath/src/github.com/gogs/gogs/vendor/gopkg.in/macaron.v1/context.go:121 (0x88399d)
/home/vagrant/gopath/src/github.com/gogs/gogs/vendor/gopkg.in/macaron.v1/router.go:187 (0x896ab1)
/home/vagrant/gopath/src/github.com/gogs/gogs/vendor/gopkg.in/macaron.v1/router.go:294 (0x88f1d4)
/home/vagrant/gopath/src/github.com/gogs/gogs/vendor/gopkg.in/macaron.v1/macaron.go:220 (0x887e44)
/usr/local/go/src/net/http/server.go:2694 (0x6f0e1b)
/usr/local/go/src/net/http/server.go:1830 (0x6ed0e0)
/usr/local/go/src/runtime/asm_amd64.s:2361 (0x463770)
[Macaron] 2018-09-12 00:35:02: Completed GET / 500 Internal Server Error in 4.799ms

重现步骤:

  • 下载 Gogs 0.11.53.0603 linux amd64 发布版本
  • 解压到目录 (/mnt/d/gogs)
  • 设置 supervisor
  • 创建 git 用户
  • 通过 supervisor 启动 gogs
  • 打开网页配置 gogs
  • 所有目录设置到 /mnt/d/gogs/data 下,入 /mnt/d/gogs/data/log
  • 完后重启 gogs 服务
  • 再次开发页面,提示 500 错误

#2

目录没有给 Gogs 权限吧


#3

哇,还没睡呀,给了,整个目录 777 权限(Windows 10 Ubuntu 16 默认的),而且用户组配置的是 git:git .


#4

里面设置了使用 git 身份启动 Gogs 了吗?唉这个玩意我也没用过我就用过 systemd


#5

我也喜欢用systemd,但是Windows 10 子系统不支持 systemd (支持但无法启动),init.d 配置麻烦,去除了这俩,我就会 supervisor 了。

经过查看,所有的目录确实是 drwxrwxrwx 权限,文件是 -rwxrwxrwx 权限,但是无法改变目录和文件的所属用户 (坑…)。

我现在用默认用户试一下看看。


#6

其实手动启动也是不错的。。


#7

经过测试,默认用户可以。ubuntu 子系统通过挂载的方式无法更改目录所属组,确实比较坑。不过知道问题在哪了就好办了,我想到两种解决方案,一种是将 git 用户加入 其他组,一种是 将 sessions 看看能不能放入 /home/git 目录下。

我要开发一个软件,基于 shell 的项目 (准备开源,开发期间暂不开源,主要是把我另一个 shell 项目的 软件管理部分 独立出来),支持两种服务管理方式,supervisor 和 systemd,具备一软件,多配置 管理。框架已经搭完了。


#8

算是我的第三个 shell 项目吧,两个自己的,一个公司的(存储集群自动化部署),写完这个项目,我的 shell 练手也算完成了。


#9

Windows 可真是神坑呀

貌似是可以的 https://github.com/gogs/gogs/blob/master/conf/app.ini#L272


#10

OK,已经处理,可以访问了,经过测试,在当前情况下,gogs-repositories 可以创建项目,可以初始化项目,但是不可以 编辑文件(还是权限问题),看来在 windows 下开发调试所有的数据信息要放入 /home/git 下了。

看来在 windows 子系统还有很长的路要走。


#11

哈哈,恭喜呀!


#12

@Unknwon 上面说的那个 Shell 项目开源出来了,大佬给提点专业意见: https://github.com/ztj1993/ShellManageSoftware

测试请拉取 develop 分支


#13

嘿嘿,其实我 shell 也只是半吊子啦,谈不上什么专业