Ruby on Rails站点重启后部分页面500错误排查求助
排查步骤与解决方案
1. 定位具体错误栈
先获取production.log中TypeError的完整调用栈,这是定位问题的核心:
tail -n 100 /var/www/vhosts/myapp/current/log/production.log
找到触发no implicit conversion of nil into String的具体代码文件、行号,确认是哪个变量未正确赋值导致nil。
2. 检查环境变量完整性
Droplet重启后可能丢失环境变量,Rails依赖的关键配置(如SECRET_KEY_BASE、第三方服务密钥)缺失会引发500错误:
- 查看Capistrano共享目录下的环境配置文件(若用Figaro等工具):
cat /var/www/vhosts/myapp/shared/config/application.yml - 验证Puma启动时的环境变量:
确认启动命令包含ps aux | grep pumaRAILS_ENV=production,且关键环境变量已加载。
3. 修正Unix Socket权限
即使Socket文件存在,Nginx进程(通常为www-data)可能无读写权限:
- 检查Socket权限与归属:
ls -l /var/www/vhosts/myapp/shared/tmp/sockets/myapp-puma.sock - 调整权限(假设Puma运行用户为
deploy):chown deploy:www-data /var/www/vhosts/myapp/shared/tmp/sockets/myapp-puma.sock chmod 775 /var/www/vhosts/myapp/shared/tmp/sockets/myapp-puma.sock - 可在
config/puma.rb中添加umask 0002,确保后续重启Puma时自动设置正确权限。
4. 清理Rails缓存与预编译资源
重启后缓存损坏或资产预编译文件缺失可能导致部分页面失效:
cd /var/www/vhosts/myapp/current # 清除缓存 bundle exec rails cache:clear # 重新预编译生产环境资产 RAILS_ENV=production bundle exec rails assets:precompile # 清理tmp目录并重建必要子目录 rm -rf tmp/* && mkdir -p tmp/sockets tmp/pids
5. 验证Puma进程健康状态
检查Puma是否正常运行并处理请求:
- 查看Puma状态:
cd /var/www/vhosts/myapp/current bundle exec pumactl -S /var/www/vhosts/myapp/shared/tmp/pids/puma.state status - 若状态异常,强制重启Puma:
bundle exec pumactl -S /var/www/vhosts/myapp/shared/tmp/pids/puma.state restart - 查看Puma运行日志:
tail -n 50 /var/www/vhosts/myapp/shared/log/puma.log
6. 确认源码完整性
由于仅服务器有源码,需验证当前部署版本是否存在文件缺失:
- 若服务器保留Git仓库,检查代码状态:
cd /var/www/vhosts/myapp/current && git status - 切换至Capistrano历史版本测试:
# 查看所有发布版本 ls -la /var/www/vhosts/myapp/releases/ # 切换至之前正常的版本(替换[timestamp]为对应版本目录名) ln -sf /var/www/vhosts/myapp/releases/[timestamp] /var/www/vhosts/myapp/current # 重启服务 sudo systemctl restart nginx bundle exec pumactl -S /var/www/vhosts/myapp/shared/tmp/pids/puma.state restart
7. 验证数据库查询逻辑
部分页面的500可能源于特定数据库查询异常,而非全局连接问题:
- 进入生产环境Rails控制台:
RAILS_ENV=production bundle exec rails c - 手动执行报错页面的相关模型操作(如
Post.last、User.find(1)),确认是否存在数据关联或查询错误。
内容的提问来源于stack exchange,提问作者Jae
相关产品推荐
相关产品推荐

