seafile看不见repo报500错误的解决方法

环境

seafile-server-6.2.5

centos7.5 1804

现象

seafile服务器所在的VPS没动过,前一天seafile用还好好的,昨天客户端突然不能登录了,显示“服务器内部错误”;网页版可以登录,但看不见仓库,显示为红色Error字。

重启服务重启系统都无效,就需要慢慢排查问题了。

F12可见好多红色失败请求

登录VPS看日志,根据我的配置,

lnmp日志在/home/wwwlogs/目录下

seafile日志在/sharefiles/logs/目录下

都看看。

在seahub_django_request.log中发现了猫腻(另外注意上面报警告.well-known/acme-XXXXXXXX找不到,这个与Let‘sEncrypt + LNMP更新SSL证书有关,下面会说)

与浏览器报错应该是一个问题。

查了下,pickle包EOFError错误一般是打开了空文件,所以找找这里是打开了哪个文件。

抛异常的位置都找到了,追追源码吧。

在filebased.py里找到

缓存文件具体是什么名?在哪个目录?要找django的配置文件,太麻烦,find暴力搜索!

find / -name "*.djcache"

找到了,果然有一个文件是0字节,就是它,导致seafile每次pickle它直接异常,导致整个服务不可用o(╥﹏╥)o

删了吧,缓存文件全删了吧

删完缓存文件,seafile就可以用了。。。

至于这个0字节的文件怎么来的,有可能产生缓存文件时,VPS挂了,还没来得及把缓冲区刷进磁盘。这个VPS总挂,不太稳定。

另外,

关于在LNMP上使用seafile,即nginx反向代理seafile,并配置Let‘sEncrypt SSL证书,出现证书到期后不能顺利更新的问题:

lnmp1.4使用acme.sh脚本更新SSL证书,这里acme配置了seafile的web根目录为/home/wwwroot/aaa.bbb.ccc,其中aaa.bbb.ccc是我的seafile服务器的域名,

acme更新证书时为了验证你对web的所有权,会在web根目录下生成随机文件.well-known/xxxxxxxxxxxxxxxxxxxxxxxx,然后它会从用HTTP协议访问这个url,

即http://aaa.bbb.ccc/.well-known/xxxxxxxxxxxxxxxxxxxxxxxx,访问成功说明有权限,web是你的无误。

正常lnmp建立的虚拟主机都能正常颁发证书、更新证书,但是这个seafile却不行,为啥呢?因为是nginx反向代理了seafile,seafile目录并不在/home/wwwroot/aaa.bbb.ccc目录

即acme配置的web跟目录与nginx + seafile实际的web目录不符合,访问不到这个token文件,就更新失败了呢。

查看seafile的nginx vhost配置

可见如果访问http://aaa.bbb.ccc/.well-known/xxxxxxxxxxx都会被代理到8000端口,由seahub服务处理,那个服务目录并不是/home/wwwroot/aaa.bbb.ccc

(实际这是个空目录,lnmp建立vhost时生成的,而这个vshost用于反向代理seafile,目录并没有用)

解决方法,使配置一致就好了。

这里添加了一条location,处理.well-known子路径,定位到/home/wwwroot/aaa.bbb.ccc目录,

nginx -s reload 使新配置生效,再去手动执行acme.sh ,证书就更新好了!

原文地址:https://www.cnblogs.com/nidey/p/9634940.html

时间: 2024-10-14 16:50:54

seafile看不见repo报500错误的解决方法的相关文章

Adobe Dreamweaver CC MySQL连接 报404错误的解决方法

Adobe Dreamweaver CC MySQL连接时总报404报错,并给以下两个提示: 1) 在该服务器机器上没有测试服务器运行. 2) 为该站点指定的测试服务器没有映射到http://localhost/_mmServerScripts/MMHTTPDB.phpURL.请确认url前缀映射到了你站点的根上. 网上翻了一堆网站,折腾了两三天,发现可以按如下方法解决: 1)首先要在http://localhost/security/index.php配置mysql的访问密码(我用的是XAMP

virtualbox虚拟机中mysql远程连接登陆报2003错误的解决方法

最近在virtualbox中安装了Ubuntu 14,配置了一个mysql server,设置的桥接网络模式.在其他电脑连接的时候,总是报2003错误.开始以为是localhost没有置换为%,运行update语句将其置换,依然不行.后来发现是因为mysql的默认配置文件/etc/mysql/my.cnf 中有一行: bind-address            = 127.0.0.1 就是说,默认绑定了ip,只限本机访问.将本行加#注释掉,远程访问正常.

通过ADB安装apk到genymotion报[INSTALL_FAILED_CPU_ABI_INCOMPATIBLE]错误的解决方法

背景描述:使用genymotion一直是在安装是从开发那里拿来的APK,没有发生问题.今天在应用市场下载了一个竞品apk,使用同样的方式安装,报了[INSTALL_FAILED_CPU_ABI_INCOMPATIBLE]错误,见下图. 通过网上查找,发现这是因为系统里缺少了 Google Play 市场等各种谷歌服务应用,其实是因为版权问题,从 2.0 版本开始 Genymotion  提供的虚拟设备都已经移除了 Google Apps  以及 ARM library support ,所以,如

Kloxo面板无法登录出现500错误的解决方法是什么呢?

如果您的VPS服务器安装的是Kloxo管理系统,打开网站突然出现各种代码错误,同时Kloxo面板无法登录提示500错误,那么这种情况一般是日志满了造成的,清空日志的步骤如下: 1.putty远程进入系统,用 df -l 命令查看空间容量情况.其中Used这栏就是使用情况,如果出现100%,说明容量已经满了. 2.执行以下命令,删除日志. cd /home/admin/ cd __processed_stats rm -f * 3.再重启Kloxo,让Kloxo恢复正常.重启命令为: servic

阿里大于短信接口提示500错误的解决方法

这两天做公司项目的邀请加入页面时需要调试阿里大于的短信接口,因为项目中其他地方也有用到这个接口,老大已经写好了,于是我就直接拿过来用了,可是不管怎么调试服务器那边都是一直返回500错误[无可用用户信息],在网上搜了好多资料来看,可是都没有找到相关的,因为之前做另一个项目时自己也亲自接入过这个接口,当时是可以用的,于是先在本地试了下那个项目的大于接口,发现是正常的,于是就把那个项目的代码直接搬了过来,可是原来好好的代码一般到了现在项目里面就不能用了,真的是头痛死了,调的心里都烦了,于是就想着先跳过

Jira配置完后破解插件报500错误如何解决?

Jira6.3.6破解汉化后当点击插件时候网页显示 错误500,问你怎么办? 网上好多大神讲: JIRA安装完成之后,关闭JIRA,然后将atlassian-extras-2.2.2.jar和atlassian-universal-plugin-manager-plugin-2.17.13.jar中得两个class文件都进行替换 破解的核心是替换2个License验证类com\atlassian\extras\decoder\v2\Version2LicenseDecoder.classcom\

关于tomcat启动服务单独启动时ngrok报500错误的解决办法

去年开通了微信公众号,每次都是启动eclipse,然后用eclipse里的tomcat来启动服务,然后启动ngrok,这样微信服务就算启动成功了,如下图: ,公众号可以正常返回数据,ngrok也返回的200状态码.但是每次单独用tomcatbin目录下的startup.bat批处理命令启动后,然后再访问,ngrok就会提示500服务器内部错误,但是没有更具体的提示信息. 解决办法:把发送微信请求的地址考出来,再浏览器里执行,浏览器会给出更具体的提示,比如我的微信公号访问的地址是: http://

cocoapods setup报路径错误, 解决方法

pod setup命令报错如下图: 说明是路径错误,在命令行输入一下命令即可解决. sudo xcode-select -switch /Applications/Xcode.app/Contents/Developer 解决后,可继续执行安装操作.

调用Ajax返回500错误的解决方法

看代码: 1 public ActionResult UserLogin(LogOnModel model) 2 { 3 #region 验证码验证 4 5 #endregion 6 7 OperationResult result= _identity.ValidateUser(model.UserName, EncryptAndDecrypte.EncryptString(model.Password)); 8 9 10 if (result.ResultType==OperationRes