Using /home/master/.rvm/gems/ruby-2.2.0
/path/to/repository/shared/bundle/ruby/2.2.0/gems/kgio-2.9.2/lib/kgio.rb:21:in `require': /path/to/repository/shared/bundle/ruby/2.2.0/gems/kgio-2.9.2/lib/kgio_ext.so: wrong ELF class: ELFCLASS64 - /path/to/repository/shared/bundle/ruby/2.2.0/gems/kgio-2.9.2/lib/kgio_ext.so (LoadError)
from /path/to/repository/shared/bundle/ruby/2.2.0/gems/kgio-2.9.2/lib/kgio.rb:21:in `<top (required)>'
from /path/to/repository/shared/bundle/ruby/2.2.0/gems/unicorn-4.8.3/lib/unicorn.rb:6:in `require'
...
говорит о том, что библиотека kgio_ext.so была взята со старой машины, на которой она была скомпилирована под другую архитектуру (64 битную).
По-хорошему надо было установить, не копируя папку /path/to/repository, потому что там привязки к старой машине. Но, похоже, весь процесс миграции был сделан с левой ноги.
Порядок подготовки к установке веб-приложения должен быть таков:
- Ruby настоятельно рекомендуется устанавливать через штатный менеджер установок системы (apt), иначе не будут происходить обновления с устранением уязвимостей.
Установка через rvm или rbenv с правами sudo чревата проблемами с безопасностью системы, на которой запускается сайт, поскольку версии установленных интерпретаторов фиксированы и не обновляются системой автоматически. Их нужно обновлять вручную.
ruby 2.2.0 имеет уязвимости CVE. Если стандартной убунтовской версии 2.0 недостаточно, то можно установить версию 2.2 при помощи PPA репозитория https://www.brightbox.com/docs/ruby/ubuntu/ (глава Installation)
sudo apt-get install ruby2.2 ruby2.2-dev ruby-switch
sudo ruby-switch --set ruby2.2
- Сначала установить сам bundler (bundle)
sudo gem install bundler
bundle - утилита для разрешения зависимостей приложения, указанных в Gemfile. Читать на bundler.io/#getting-started
Разные gem-зависимости приложения могут требовать компиляции из C/C++ исходников (обёртки над сторонними библиотеками). Для них должны быть установлены соответствующие "xyz-dev" .deb пакеты через штатный apt. Заранее узнать какие пакеты потребуются нельзя. Нужно проверять с bundle check
в корне приложения всё ли в порядке и запускать bundle install --path vendor --without development test
до тех пор, пока все зависимости не будут удовлетворены (выводится на экран чего не хватает в системе).
- gem unicorn также должен быть установлен. Хотя для режима разработки он совсем необязателен (есть webrick).
Как только для bundle check показано "successful", можно запускать
bundle exec unicorn -p $PORT -c ./config/unicorn.rb
Пример конфигурации unicorn.rb можно взять с unicorn.bogomips.org/examples/unicorn.conf.rb
Как правило, unicorn не выступает в роли независимого веб-сервера, а в роли бэкенда у таких серверов как nginx.
Далее следуй инструкциям:
https://launchschool.com/blog/setting-up-your-prod...
https://www.digitalocean.com/community/tutorials/h...