ruby-on-rails - 将乘客 5.0.23 native 支持与 Ruby 2.2.4 链接失败

标签 ruby-on-rails ruby ubuntu nginx passenger

我正在尝试对Passenger latest stable 5.0.23 进行干净的APT 安装与 ruby 2.2.4在 Ubuntu 14.0.4 上,但我不断收到 [passenger_native_support.so] will not be used (can't compile or download) .我已经成功手工编译了实际的.so :

 ➜  ~  passenger-config build-native-support 
 [passenger_native_support.so] trying to compile for the current Ruby interpreter...
     (set PASSENGER_COMPILE_NATIVE_SUPPORT_BINARY=0 to disable)
     Compilation succesful. The logs are here:
     /tmp/passenger_native_support-1h838u1.log
 [passenger_native_support.so] successfully loaded.
➜  ~  cat /tmp/passenger_native_support-1h838u1.log
# mkdir -p /root/.passenger/native_support/5.0.23/ruby-2.2.4-x86_64-linux
# cd /root/.passenger/native_support/5.0.23/ruby-2.2.4-x86_64-linux
# /usr/bin/ruby2.2 /usr/share/passenger/ruby_extension_source/extconf.rb
checking for alloca.h... yes
checking for ruby/version.h... yes
checking for ruby/io.h... yes
checking for ruby/thread.h... yes
checking for ruby_version... no
checking for rb_thread_io_blocking_region() in ruby/io.h... yes
checking for rb_thread_call_without_gvl() in ruby/thread.h... yes
creating Makefile
# make
compiling /usr/share/passenger/ruby_extension_source/passenger_native_support.c
linking shared-object passenger_native_support.so

但是,它在 Nginx 中仍然失败:
[ 2016-01-19 14:23:45.4123 1055/7f247600d7c0 age/Wat/WatchdogMain.cpp:1276 ]: Starting Passenger watchdog...
[ 2016-01-19 14:23:45.4406 1070/7f106e3067c0 age/Cor/CoreMain.cpp:957 ]: Starting Passenger core...
[ 2016-01-19 14:23:45.4407 1070/7f106e3067c0 age/Cor/CoreMain.cpp:234 ]: Passenger core running in multi-application mode.
[ 2016-01-19 14:23:45.4423 1070/7f106e3067c0 age/Cor/CoreMain.cpp:707 ]: Passenger core online, PID 1070
[ 2016-01-19 14:23:45.4475 1078/7f1c642e37c0 age/Ust/UstRouterMain.cpp:504 ]: Starting Passenger UstRouter...
[ 2016-01-19 14:23:45.4480 1078/7f1c642e37c0 age/Ust/UstRouterMain.cpp:317 ]: Passenger UstRouter online, PID 1078
App 1586 stdout: 
App 1586 stderr:  [passenger_native_support.so] trying to compile for the current Ruby interpreter...
App 1586 stderr:      (set PASSENGER_COMPILE_NATIVE_SUPPORT_BINARY=0 to disable)
App 1586 stderr:  [passenger_native_support.so] finding downloads for the current Ruby interpreter...
App 1586 stderr:      (set PASSENGER_DOWNLOAD_NATIVE_SUPPORT_BINARY=0 to disable)
App 1586 stderr:      Could not download https://oss-binaries.phusionpassenger.com/binaries/passenger/by_release/5.0.23/rubyext-ruby-2.2.4-x86_64-linux.tar.gz: The requested URL returned error: 404 Not Found
App 1586 stderr:      Trying next mirror...
App 1586 stderr:      Could not download https://s3.amazonaws.com/phusion-passenger/binaries/passenger/by_release/5.0.23/rubyext-ruby-2.2.4-x86_64-linux.tar.gz: The requested URL returned error: 403 Forbidden
App 1586 stderr:  [passenger_native_support.so] will not be used (can't compile or download) 
App 1586 stderr:   --> Passenger will still operate normally.
App 1607 stdout: 

乘客服务器或 S3 上都不存在 tarball 存档。

实际的 Rails 应用程序运行良好,但我不介意花时间查找此警告的根本原因。知道下一步该往哪里看吗?

最佳答案

我已经设法找到解决方法!

问题是 .so nobody 无法访问运行乘客的用户。我一直在用 nobody 编译任何东西用户,所以我最终只是复制了 .so从根文件夹到/usr/lib/ :

cp /root/.passenger/native_support/5.0.23/ruby-2.2.4-x86_64-linux/passenger_native_support.so /usr/lib/x86_64-linux-gnu/ruby/2.2.0/passenger_native_support.so

我不知道这是否是有史以来最干净的东西,但它正在工作。

关于ruby-on-rails - 将乘客 5.0.23 native 支持与 Ruby 2.2.4 链接失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34886367/

相关文章:

ruby - Ruby 中的字符串连接

ruby-on-rails - HAML - 如何显示变量的值?

ubuntu - 在hdfs中创建目录

ruby - 自定义 attr_reader 以进行属性的惰性实例化

python - 如何找到更改目录名称的路径?

python - 如何在 bash 或 python 中检查 Ubuntu 程序 coredump?

ruby-on-rails - 在我看来,未定义的方法 `image'

mysql - 数据库 SQL 兼容性

javascript - 指定某些页面中特定表单的验证

javascript - Rails 4,Turbolink 在渲染部分后执行 javascript