Sinatra — минималистичный веб-фреймворк для языка Ruby, предназначенный для быстрого создания простых веб-приложений и API. В отличие от более крупных фреймворков, таких как Ruby on Rails, Sinatra предлагает гибкую структуру и позволяет разработчику самостоятельно выбирать компоненты, которые нужно использовать.
Основной принцип Sinatra — это маршрутизация HTTP-запросов к соответствующим блокам кода с минимальной настройкой. Благодаря своей лёгкости и простоте, Sinatra часто используется для создания небольших веб-приложений, микросервисов или прототипов. При этом фреймворк легко расширяется, поддерживая интеграцию с различными базами данных и сторонними библиотеками.
Ниже рассмотрим, как установить Sinatra на виртуальный сервер, работающий под управлением Ubuntu 24.04.
Как установить Sinatra на Ubuntu
Перед началом инсталляции нового программного обеспечения обновите списки пакетов в системе:
$ sudo apt update
Так как Sinatra для своей работы использует возможности Ruby, то сначала установите полный набор инструментов для работы с данным языком. Для чего выполните следующую команду:
$ sudo apt install ruby-full
По окончании инсталляции проверьте версию установленного софта:
$ ruby -v
Следующей командой установите Bundler — утилиту для управления зависимостями в Ruby-проектах, которая обеспечивает совместимость версий и упрощает установку нужных библиотек и инструментов, таких как gem
. Данная команда загрузит и установит Bundler из центрального репозитория RubyGems:
$ sudo gem install bundler
Затем также при помощи gem
установите Sinatra:
$ sudo gem install sinatra
Следующим шагом установите Rackup — утилиту, которая запускает Rack-приложения, в том числе и Sinatra:
$ sudo gem install rackup
Теперь создайте Sinatra-приложение. В простейшем случае такое приложение представляет из себя файл, содержащий всего несколько строк кода, например, your-app.rb
.
$ nano your-app.rb
В качестве примера мы добавили в файл your-app.rb
следующие строки:
require 'sinatra'
set :bind, '0.0.0.0'
set :port, 4567
get '/' do
"Это Ваш сайт, работающий на Sinatra!"
end
Если ваш виртуальный сервер защищён брандмауэром UFW, то нужно разрешить доступ к системе через порт, используемый фреймворком Sinatra. В файле your-app.rb
указан номер такого порта, как 4567
. Исходя из этого, создайте разрешающее правило для данного порта:
sudo ufw allow 4567
Затем запустите ваше Sinatra-приложение с помощью Ruby:
$ ruby your-app.rb
Вывод этой команды должен выглядеть примерно следующим образом:
Теперь откройте браузер и в навигационной строке введите адрес вида:
http://X.X.X.X:4567
Чтобы подключиться к своему сайту, замените X.X.X.X
на IP-адрес виртуальной машины, на которую вы только что установили Sinatra.
Как запустить Sinatra в качестве службы
Чтобы Sinatra-приложение автоматически запускалось при старте системы и могло работать в фоновом режиме, необходимо запустить данный фреймворк в качестве службы. Для этого в современных дистрибутивах Linux используется системный менеджер systemd
, который как раз и управляет службами.
Во-первых, перейдите в каталог, в котором содержатся файлы инициализации служб:
$ cd /etc/systemd/system/
И в нём создайте новый Unit-файл для Sinatra:
$ sudo nano sinatra.service
Вставьте в него следующее содержимое:
[Unit]
Description=Your Sinatra Application
After=network.target
[Service]
User=your-user
WorkingDirectory=/home/your-user
ExecStart=/usr/bin/ruby /home/your-user/your-app.rb
Restart=always
[Install]
WantedBy=multi-user.target
В данном случае:
User
— пользователь, от имени которого будет запускаться служба;WorkingDirectory
— путь к каталогу, в котором находится приложение (в нашем случае Sinatra);ExecStart
— команда для запуска вашего Sinatra-приложения;Restart
— параметр, который указывает на то, что служба будет автоматически перезапускаться при аварийном завершении.
Затем закройте Unit-файл с сохранением внесённых изменений и обновите конфигурацию systemd
:
$ sudo systemctl daemon-reload
После чего запустите службу sinatra.service
:
$ sudo systemctl start sinatra.service
Чтобы служба стартовала всякий раз при запуске системы, установите её в автозагрузку:
$ sudo systemctl enable sinatra.service
И в завершении проверьте состояние работающего сервиса при помощи команды:
$ sudo systemctl status sinatra.service