Установка Ruby для работы приложения

Для решения проблем с безопастностью и для спокойной установки зависимостей рекомендуется устанавливать Ruby посредством внешних инструментов. Т.е. ставить вне системы управления пакетами Debian.

Какие инструменты есть?

  • rvm Ruby version manager - полнофункциональный инструмент, который написан на 20000+ строчках Bash. http://rvm.io/
  • rbenv https://github.com/rbenv/rbenv
  • ruby-install / chruby

Возьмём ruby-install/chruby как самые простые инструменты для задачи.

Они также написаны на Bash.

https://github.com/postmodern/ruby-install

Надо поставить build-essential и выполнить установку согласно документации:

wget -O ruby-install-0.7.0.tar.gz https://github.com/postmodern/ruby-install/archive/v0.7.0.tar.gz tar -xzvf ruby-install-0.7.0.tar.gz cd ruby-install-0.7.0/ sudo make install

Затем необходимо получить поддерживаемые версии интерпретаторов:

ruby-install -L

Затем начать установку нужного нам интерпретатора:

ruby-install ruby 2.6.5

В дополнение к ruby-install можно воспользоваться инструментом chruby. Его задача изменять переменные окружения так, чтобы активной становилась та или иная версия интерпретатора.

https://github.com/postmodern/chruby

Для установки воспользуемся официальным руководством

Install

wget -O chruby-0.3.9.tar.gz https://github.com/postmodern/chruby/archive/v0.3.9.tar.gz tar -xzvf chruby-0.3.9.tar.gz cd chruby-0.3.9/ sudo make install

Однако после выполнения sudo make install надо ещё правильно активировать данную утилиту внутри командного интерфейса. Для этих целей в файл ~/.bashrc необходимо добавить следующие строки:

source /usr/local/share/chruby/chruby.sh source /usr/local/share/chruby/auto.sh

Если же вы используете zsh, то надо их добавить в ~/.zshrc.

После исправления .bashrc необходимо перезапустить bash-сессию.

Куда ставится Ruby?

По умолчанию при вызове от обычного пользователя ruby-install установит интерпретатор в каталог ~/.rubies. Это поведение можно изменить, у ruby-install есть соответствующие опции.

Помимо этого в домашнем каталоге пользователя появится подкаталог src. В нём находятся архивы и распакованные исходные коды интерпретатора Ruby.

Как выбрать нужную версию?

chruby без аргументов выводит список установленных интерпретаторов

chruby 2.6 - выберет последнюю версию интерпретатора ruby из ветки 2.6

chruby system - выберет системную версию интерпретатора (или отключит текущую, если системной версии нет).

Настройка и запуск приложения

Сначала надо добиться того, чтобы ваше приложение запускалось.

Для большинства случаев достаточно установить необходимые джемы, создать базу данных и настроить доступ к ней.

В конфигурации Sinatra отключите раздачу статического контента:

configure do set :static, false end

Настройка реверсивного proxy в Nginx

Для настройки прокси следуйте руководству:

source /usr/local/share/chruby/auto.sh

https://docs.nginx.com/nginx/admin-guide/web-server/reverse-proxy/

https://mattbrictson.com/nginx-reverse-proxy-cache

  1. Поставить nginx
  2. Скопировать default-конфигурацию
  3. Добавить в конфигурацию местоположение динамического сайта
  4. Установить корнем сайта каталог со статическим содержимым
  5. Установить местоположение сайта как последний элемент по проверке файлов
server {
        listen 80 default_server;
        listen [::]:80 default_server;
        root /home/user/styled-site/public;

        index index.html index.htm index.nginx-debian.html;

        server_name _;

        location @app {
                proxy_pass http://127.0.0.1:4567;
                include proxy_params;
        }

        location / {
                try_files $uri $uri.html @app;
        }
}