部署 Passenger 部署更新后 error

se7enxin · 2016年05月24日 · 最后由 se7enxin 回复于 2016年05月29日 · 2242 次阅读

用的 Nginx+Passenger,之前在服务器上部署成功后对程序做了一些变动,现在更新并上传,出现了问题:

网站现在这个样子:

/var/log/nginx/error.log.里面的 log:

这次更新后我所做的:

(1) rails 版本 2.3.0,在服务器中 rails -v 也是这个。

把 nginx.conf 里面路径改为:

passenger_ruby  /home/deploy/.rvm/wrappers/ruby-2.3.0/ruby; 

(之前是 default/ruby,也不对,我 rvm 指定了版本就把路径换过来试了试)

服务器下安装的 ruby:

(2) 执行了 passenger 官网给的更新步骤:

(1)bundle install --deployment --without development test 
(2)bundle exec rake assets:precompile db:migrate RAILS_ENV=production 
(3)passenger-config restart-app $(pwd)

(3) 添加了 production secret

ps:现在 rails s 网站是可以正常运行的。 我看到 log 里面提到 symbolize_keys,搜了一下,

“#symbolize_keys is a method that takes a Hash as a receiver, but you're calling it on a String”

但是不知道怎么解决。检查了一下路径什么的也没有找到错误。

1 楼 已删除

@lgn21st 我改了一下,现在格式还有问题么?

#3 楼 @se7enxin 不是我操作的,我可以帮你恢复。

5 楼 已删除

你看到的是 500 错误,这个错误不一定是 Passenger 导致的,如果你只是部署了应用的新版本,所以这个时候你应该先 rollback 一下,恢复到之前的项目状态,而不是去升级 Passenger。

#6 楼 @lgn21st 先谢谢,我之前想练习一下部署,就在服务器本地 rails new 了一个,现在在本地写了个 demo 后 clone 到了服务器上,把之前 nginx 对 public 的路径改了过来,剩下的就是上面描述的操作了。

刚才又检查了一遍: 发现 secrct 里面我是这么写的:

production: the value that you copied from 'rake secret'

。。。复制的时候手有点滑 改完就好了.

production:
  secret_key_base: the value that you copied from 'rake secret'

不过现在发现我的图片一张都没有显示,css 看着是没有问题的,之前直接 rails s 图片也是可以显示的,不过现在一张图片都没有加载出来

找到解决方法了,我之前是用的 background-image ,现在改成 background: image-ulr() 就可以了。 下面这个帖子有描述 https://ruby-china.org/topics/19328

10 楼 已删除
需要 登录 后方可回复, 如果你还没有账号请 注册新账号