部署完成后,访问主页,出现如题的错误:Gemfile syntax error compile error on line 19: syntax error, unexpected ':', expecting $end gem 'therubyracer', platforms: :ruby ^ (Bundler::GemfileError)
.但是 Gemfile 中:
gem 'therubyracer', platforms: :ruby
是自动生成,只是去掉注释而已,这是什么原因?
一般不需要用 therubyracer,除非你用 less,默认不需要就是为啥注释掉的原因,你可以装一个node.js 作为 javascript 运行时环境。
访问了你的主页,你的 ruby 版本太低,升到 ruby 2.0.0 p 451 应该就可以解决问题,另外 passenger 的版本也太低,现在早已是 4.0.41 版本啦!
5 /usr/lib/ruby/gems/1.8/gems/passenger-3.0.12/lib/phusion_passenger/utils.rb 326 in `prepare_app_process'
nginx.conf 里面的 ruby 路径设置不对,按照你的安装目录应该有这一行:
passenger_ruby /usr/local/rvm/wrappers/ruby-2.0.0-p451/ruby; # 不确定对不对,查下是否有这个文件
#7 楼 @ericguo CentOS。我安装 passenger 的方式是yum install nginx-passenger
,参考的是http://www.modrails.com/documentation/Users%20guide%20Nginx.html#deploying_a_rack_app,感觉很奇怪,ruby -v
也是 2.0. 0 的
#16 楼 @xautjzd passenger?不是一找一大把么?。。
In Phusion Passenger 4, using SetEnv and PassEnv in Apache and env in Nginx works as expected. Detailed information can be found in the Phusion Passenger manual, section “About environment variables”.
http://blog.phusion.nl/2008/12/16/passing-environment-variables-to-ruby-from-phusion-passenger/
#19 楼 @ericguo @Rei @lonre 突然发现/etc/nginx/conf.d/下有个 passenger.conf 文件,打开一看,里面配置了 passenger_root 和 passenger_ruby,但却是 ruby1.8 的,估计罪魁祸首在这。难道这是 CentOS 与 Ubuntu 不同的地方?而且貌似 passenger_ruby 只能在这个里面配置,在/etc/nginx/nginx.conf 文件或者/etc/nginx/conf.d/xxx.conf 文件里配置便会出现:
[emerg] "passenger_ruby" directive is not allowed here in /etc/nginx/nginx.conf
类似的错误。通过yum install nginx-passenger
安装的貌似是 passenger3 版本,而通过 gem 安装则是 passenger4
#26 楼 @xautjzd 如果你用 centos 源安装,那么就是 centos 的人员维护的版本,会落后 passenger 最新版本很多。
passenger 有提供他们的 yum 源 http://www.modrails.com/documentation/Users%20guide%20Nginx.html#_installing_or_upgrading_on_red_hat_fedora_centos_or_scientificlinux
每个发行版的目录结构都有差异的,用你最熟悉或者最容易找到人帮忙那个。
Passenger 3 只支持在全局域设置 passenger_ruby,所以会出现 nginx: [emerg] "passenger_ruby" directive is not allowed here in
楼主真的要严格按照文档上显示的版本来做的,版本号不是为了好看的。
Passenger 3 只支持在全局域设置 passenger_ruby
终于知道原因。第一次部署,找不到熟人帮忙,只能自己慢慢摸索,网上找资料各种尝试了。过程中确实碰到各种问题,有的还不理解,有时候有种无从下手的感觉,连搜都不知道怎么搜,搜索只能针对太具体的问题比较有效。所以 Ruby-China 上有人稍微给点提示都是莫大的帮助,从昨晚到现在已经有了很大进展。真的是太感谢你们了!