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
