最近鼓捣博客服务器,不经意间误操作改了一些目录的用户组及权限,导致博客文件上传功能失败,周末检查了一天依然没有解决问题,在不经意间意识到了问题所在,其实有时候一些小问题会花费一大波时间去解决,于是博主记录本篇,总结一下发现问题,调试,解决问题的过程,希望以后解决问题能直指根本。
发现问题
首先是在12月9号发行博客文件上传功能失败,查看前端请求,发现是服务端返回500状态码,表明发生服务端内部异常:
如上图接口返回详情所示,nginx服务异常,服务暂时转移了,当前不可访问。
分析并解决问题
其实问题比较简单,但是奈何博主当时短路了,因为博主在浏览器直接访问该异常接口时,出现如下提示:
于是搜索了关于wordpress关于Are you sure相关问题,结果跑偏了,跑去分析wordpress源码,分析上传文件php代码,分析php内存使用是否达到上限,结果分析完一下午过去了,发现其实nginx没有转发该上传请求至php-fpm服务,我应该首先去看nginx输出日志。
于是跑去查看nginx日志:
- vi /var/log/nginx/error.log
哎,发现是空的,并没有异常日志,怎么回事?确认日志路径无误后就可以考虑是因为文件权限的原因了,执行ll或ls -al指令:
哎,果然,nginx文件目录所属用户是root,而nginx执行用户配置了nginx,于是将其修改成nginx服务配置文件内配置的用户:
- chown -R nginx /var/log/nginx
- -R代表迭代设置目录及其子目录;
- 第二个参数为为目录指定的所属用户名;
另外设置nginx用户对于/var/log/nginx目录的权限等级:
- chmod -R 755 /var/log/nginx
再次执行ll查看目录信息:
nginx输出日志文件权限没问题了,再次上传文件,发现依然返回500状态码,这时查看nginx异常日志文件:
- vi /var/log/nginx/error.log
发现终于有日志了:
看到是权限问题Permission Denied,打开/var/lib/nginx/tmp/client_body/0000001失败,说明启动转接服务失败,那就需要修改/var/lib/nginx目录的权限,使用ll查看该目录信息,发现,果然所属用户被改为root了,于是再次设置:
- chown -R nginx /var/lib/nginx
然后重启nginx服务:
- systemctl restart nginx
再次上传文件,上传成功,问题得到圆满解决。