Rails部署报错记录Passenger + Nginx

在部署网站后遇到的一个大坑。

问题描述

报错信息长这样:

看到这一行熟悉的we’re sorry, but something went wrong,默默跟这位老朋友打个招呼【捂脸】。

Google后,发现其他用passenger来部署Rails的,也遇到过这种页面无法显示的问题,但是没看到有人提供解决方法或者思路的,决定记录下我的整个解决步骤,给同样入坑的伙伴们作个参考。

解决方法

Google,看了stack overflow上的一些相关内容后,猜测是passenger的问题,于是终端输入sudo passenger-status, 发现passenger根本就没有开这个Rails的进程。

没开那就手动来开,在app的current目录下,运行bundle exec passenger start, 报错:

怎么办?按照指示去tmp下找文件,看error log。

以root身份登录,去tmp目录下,查看出错的log,这里是passenger-error-pxhJuZ.html。

cd /tmp
nano passenger-error-pxhJuZ.html

打开显示如下:

OK,那就动动listen 这个gem, google 后,参考stackoverflow上的解答LoadError: Could not load the ‘listen’ gem (Rails 5), 把listen从development中移除,放在了global中

本地运行bundle,git commit 和 git push 后,进行部署 cap production deploy, 刷新页面,发现还是老样子。怎么回事?突然想到stack overflow上提到可以登录rails console看看,好,试试。

用deploy身份登录远端后,执行:

cd ~/Together/current #Together 是你的APP名称
RAILS_ENV=production bundle exec rake db:seed

果然,报错,显示网站有bug,立马回去修bug……

在本地修复好,git commit 和 git push 后,进行部署 cap production deploy, 刷新页面, OK!!

结语

这段爬坑的日子,遇到了不少Google了也不一定能解决的坑,甚至会让你在懵逼的情况下,被别人的解答带得越来越远。只想说解决问题的思路真的太重要了,同时多点耐心,相信坑坑皆有解。

Be more patient.