Запустил passenger_native_support.so на героку - PullRequest
0 голосов
/ 22 мая 2018

При развертывании моего приложения Rails 3 с Passenger 5.3.1 на heroku я вижу следующие неудачные загрузки в журналах

Не удалось загрузить 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

Не удалось загрузить 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 Запрещено

Может кто-нибудь посоветовать, как мне обойти это?Я проверил указанные URL-адреса, и файлы находятся по другому URL-адресу (путь, по которому мое приложение пытается загрузить, немного неверен).Могу ли я где-нибудь настроить URL для скачивания?

Из-за отсутствия SSH-доступа к герою, я не совсем уверен, куда идти.

Я также не уверен в преимуществах отключения PASSENGER_DOWNLOAD_NATIVE_SUPPORT_BINARY = 0 и где я мог бынастроить это при развертывании на героку.

Журналы:

2018-05-22T14: 22: 02.337983 + 00: 00 app [web.1]: -> Загрузка бинарного файла агента Phusion Passenger для вашей платформы 2018-05-22T14: 22: 02.709603 + приложение 00: 00 [web.1]: 2018-05-22T14: 22: 02.709640 + приложение 00: 00 [web.1]: -> Установка двигателя Nginx 1.14.0 2018-05-22T14: 22: 02.779900 + приложение 00: 00 [web.1]: 2018-05-22T14: 22: 02.779946 + 00: 00 приложение [web.1]: -------------------------- 2018-05-22T14: 22: 02.779967 + 00:00 приложение [web.1]: 2018-05-22T14: 22: 02.792581 + 00:00 приложение [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 приложение [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 приложение [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 Запрещено 2018-05-22T14: 22: 04.332030 + 00: 00 приложение[web.1]: [passenger_native_support.so] не будет использоваться (не может скомпилировать или загрузить) 2018-05-22T14: 22: 04.332036 + 00: 00 app [web.1]: -> Пассажир по-прежнему будет работатьобычно.2018-05-22T14: 22: 04.410350 + 00: 00 приложение [web.1]: =============== Запущен автономный веб-сервер Phusion Passenger =============== 2018-05-22T14: 22: 04.410358 + 00: 00 приложение [web.1]: файл PID: /app/passenger.11176.pid 2018-05-22T14: 22: 04.410360 + 00: 00приложение [web.1]: файл журнала: /app/log/passenger.11176.log 2018-05-22T14: 22: 04.410361 + 00: 00 приложение [web.1]: среда: производство

1 Ответ

0 голосов
/ 08 августа 2018

TL; DR : Вы можете использовать предварительно скомпилированный двоичный файл с oss-binaries.phusionpassenger.com, обновив свой Ruby до версии, для которой он был установлен, например, до v2.2.8, если вы используете Gem Passenger v.5.3.1 или путем понижения гема Passenger до v5.1.9 , если вы предпочитаете использовать Ruby 2.2.7.

Однако двоичные файлы не критичны к пассажирской операции.Как говорится в журнале: Passenger will still operate normally. Отсутствие двоичных файлов Passenger пытается загрузить тоже нормально - они не публикуют двоичные файлы для каждой версии Ruby.Вы можете безопасно установить PASSENGER_COMPILE_NATIVE_SUPPORT_BINARY = 0 и PASSENGER_DOWNLOAD_NATIVE_SUPPORT_BINARY = 0 для отключения обоих - это в настройках Config Vars вашего приложения 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.

Не ясно, гдеоднако файл 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 */

Итак, корень проблемы в том, что gcc недоступен во время выполнения стека heroku-16 - и это, вероятно, по назначению.Нелегко сделать gcc доступным там, хотя кажется, что возможно , но я бы не стал этого делать при условии, что мы можем решить эту проблему иначе.

...