首页 文章

在heroku上运行passenger_native_support.so

提问于
浏览
0

当我在heroku上使用Passenger 5.3.1部署我的Rails 3应用程序时,我在日志中看到以下失败的下载

无法下载https://oss-binaries.phusionpassenger.com/binaries/passenger/by_release/5.3.1/rubyext-ruby-2.2.7-x86_64-linux.tar.gz:请求的网址返回错误:404 Not发现无法下载https://s3.amazonaws.com/phusion-passenger/binaries/passenger/by_release/5.3.1/rubyext-ruby-2.2.7-x86_64-linux.tar.gz:请求的网址返回错误: 403禁止

有人可以建议我如何解决这个问题吗?我检查了所说的URL,文件位于不同的URL(我的应用程序尝试从中下载的路径略有错误) . 我可以在某处配置下载URL吗?

由于缺乏对heroku的SSH访问,我不太清楚从哪里开始 .

我也不确定禁用PASSENGER_DOWNLOAD_NATIVE_SUPPORT_BINARY = 0的优势以及在部署到heroku时我将配置它的位置 .

日志:

2018-05-22T14:22:02.337983 00:00 app [web.1]: - >为您的平台下载Phusion Passenger代理二进制文件2018-05-22T14:22:02.709603 00:00 app [web.1] :2018-05-22T14:22:02.709640 00:00 app [web.1]: - >安装Nginx 1.14.0引擎2018-05-22T14:22:02.779900 00:00 app [web.1]:2018- 05-22T14:22:02.779946 00:00 app [web.1]:-------------------------- 2018-05-22T14:22 :02.779967 00:00 app [web.1]:2018-05-22T14:22:02.792581 00:00 app [web.1]:[passenger_native_support.so]试图为当前用户(u56245)和Ruby解释器编译 . .. 2018-05-22T14:22:02.792586 00:00 app [web.1] :(设置PASSENGER_COMPILE_NATIVE_SUPPORT_BINARY = 0禁用)2018-05-22T14:22:03.114593 00:00 app [web.1]:警告:汇编没有成功 . 要了解原因,请阅读此文件:2018-05-22T14:22:03.114653 00:00 app [web.1]:/tmp/passenger_native_support-fgpk65.log 2018-05-22T14:22:03.114732 00:00 app [web .1]:[passenger_native_support.so]查找当前Ruby解释器的下载... 2018-05-22T14:22:03.114766 00:00 app [web.1] :(设置PASSENGER_DOWNLOAD_NATIVE_SUPPORT_BINARY = 0禁用)2018-05- 22T14:22:03.837288 00:00 app [web.1]:无法下载https://oss-binaries.phusionpassenger.com/binaries/passenger/by_release/5.3.1/rubyext-ruby-2.2.7-x86_64- linux.tar.gz:请求的URL返回错误:404 Not Found 2018-05-22T14:22:03.837312 00:00 app [web.1]:尝试下一个镜像... 2018-05-22T14:22:04.331785 00 :00 app [web.1]:无法下载https://s3.amazonaws.com/phusion-passenger/binaries/passenger/by_release/5.3.1/rubyext-ruby-2.2.7-x86_64-linux.tar . gz:请求的URL返回错误:403 Forbidden 2018-05-22T14:22:04.332030 00:00 app [web.1]:[passenger_native_support.so]将不会被使用(无法编译或下载)20 18-05-22T14:22:04.332036 00:00 app [web.1]: - >乘客仍然可以正常运作 . 2018-05-22T14:22:04.410350 00:00 app [web.1]:=============== Phusion Passenger独立Web服务器启动========== ===== 2018-05-22T14:22:04.410358 00:00 app [web.1]:PID文件:/app/passenger.11176.pid 2018-05-22T14:22:04.410360 00:00 app [web .1]:日志文件:/app/log/passenger.11176.log 2018-05-22T14:22:04.410361 00:00 app [web.1]:环境: 生产环境

1 回答

  • 0

    TL;DR :您可以使用oss-binaries.phusionpassenger.com中的预编译二进制文件,将Ruby升级到捆绑的版本,例如:如果您使用Passenger gem v.5.3.1,或者如果您希望使用Ruby 2.2.7将Passenger gem降级为v5.1.9,则为v2.2.8 .

    但是binaries are not critical要乘客运营 . 正如日志所说: Passenger will still operate normally. 没有二进制文件Passenger试图下载is also ok - 他们在你的Heroku应用程序的Config Vars设置中不知道't publish binaries for every Ruby version. You can safely set PASSENGER_COMPILE_NATIVE_SUPPORT_BINARY=0 and PASSENGER_DOWNLOAD_NATIVE_SUPPORT_BINARY=0 to mute both - that' .

    Details re Passenger compilation issue: Passenger无法在Heroku上编译本机二进制文件,至少在新的heroku-16堆栈上编译 . 我们可以通过这样做检查/tmp/passenger_native_support-fgpk65.log然后检查mkmf.log:

    heroku run bash 
    bundle exec passenger start # just to make it fill the error log file
    # hit [ctrl-c]
    cat /tmp/passenger_native_support-*.log
    

    它的输出像这样:

    # /app/vendor/ruby-2.3.1/bin/ruby /app/vendor/bundle/ruby/2.3.0/gems/passenger-5.3.4/src/ruby_native_extension/extconf.rb
    checking for alloca.h... *** /app/vendor/bundle/ruby/2.3.0/gems/passenger-5.3.4/src/ruby_native_extension/extconf.rb failed ***
    Could not create Makefile due to some reason, probably lack of necessary
    libraries and/or headers.  Check the mkmf.log file for more details.  You may
    need configuration options.
    

    但是,_239264_是mkmf.log文件,但我们可以通过使用上述日志所具有的相同命令手动运行 /app/vendor/bundle/ruby/2.3.0/gems/passenger-5.3.4/src/ruby_native_extension/extconf.rb 来使其显示在当前目录中:

    /app/vendor/ruby-2.3.1/bin/ruby /app/vendor/bundle/ruby/2.3.0/gems/passenger-5.3.4/src/ruby_native_extension/extconf.rb
    cat mkmf.log
    

    然后我们有这个:

    "gcc -o conftest -I/app/vendor/ruby-2.3.1/include/ruby-2.3.0/x86_64-linux -I/app/vendor/ruby-2.3.1/include/ruby-2.3.0/ruby/backward -I/app/vendor/ruby-2.3.1/include/ruby-2.3.0 -I/app/vendor/bundle/ruby/2.3.0/gems/passenger-5.3.4/src/ruby_native_extension     -O3 -fno-fast-math -g -Wall -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Wunused-variable -Wpointer-arith -Wwrite-strings -Wdeclaration-after-statement -Wimplicit-function-declaration -Wdeprecated-declarations -Wno-packed-bitfield-compat -Wno-maybe-uninitialized  -fPIC -g conftest.c  -L. -L/app/vendor/ruby-2.3.1/lib -Wl,-R/app/vendor/ruby-2.3.1/lib -L. -fstack-protector -rdynamic -Wl,-export-dynamic     -Wl,-rpath,'/../lib' -Wl,-R'/../lib' -lruby  -lpthread -lgmp -ldl -lcrypt -lm   -lc"
    sh: 1: gcc: not found
    checked program was:
    /* begin */
    1: #include "ruby.h"
    2:
    3: int main(int argc, char **argv)
    4: {
    5:   return 0;
    6: }
    /* end */
    

    所以,根本问题是goku在heroku-16堆栈运行时不可用 - 并且's probably by purpose. It'在那里不容易使gcc可用,虽然它看起来像是possible但是如果我们可以解决的话我不会那样做否则这个问题 .

相关问题