环境

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 ,证书就更新好了!

最新文章

  1. Sql Cursor example
  2. dom2和dom3
  3. Eclipse引入外部Jar在发布时没有自动带入,导致出现ClassNoFound错误
  4. 聚合函数:sum,avg,max,min,count
  5. sql 执行动态语句
  6. 如何优雅的处理Nodejs中的异步回调
  7. [AHOI 2006][BZOJ 1269]文本编辑器editor
  8. N进制数组转换成正整数
  9. 苹果将通过新Apple TV打造电视游戏平台 欲发力家庭游戏(转)
  10. sql 锁相关(转)
  11. [置顶] ruby变量详解(收集+整理)
  12. 国外代理server
  13. Picasso解决 TextView加载html图片异步显示
  14. 在CDockablePane中嵌入CFormView
  15. Micropython教程之TPYBoardv102 DIY蓝牙智能小车实例
  16. 使用IDEA2017在Windows下编程并测试Hadoop2.7+Spark2.2+Azkaban
  17. shell脚本编写某一文件夹内拷贝某一段文件(有则跳过没有则拷贝)
  18. ajax实现文档导出及下载
  19. 在Docker中监控Java应用程序的5个方法
  20. 京东架构师的showtime京东个性化推荐系统实战

热门文章

  1. COdevs 天梯 水题系列
  2. msp430项目编程52
  3. linux的sar命令未找到
  4. ci框架——文章查看之上篇下篇
  5. android本地存储SharedPreferences
  6. AC日记——小书童——刷题大军 洛谷 P1926
  7. Java下接口interface前面要不要加I
  8. Ubuntu 16.04安装IntelliJ IDEA时快捷键冲突设置
  9. esrichina
  10. Java计算文件MD5值代码