Веб-приложения являются основой современных IT-технологий и необходимо иметь некоторые представления о том как можно обеспечить доступ пользователей к вашему приложению.

Разворачивание Sinatra-приложения в production-среде

В продуктовом режиме веб-сервер Sinatra обслуживает только лишь динамические запросы. Статические же запросы должен обрабатывать внешний HTTP-сервер.

Можно выделить следующие HTTP-сервера:

  • HTTPD Apache
  • Nginx

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

С точки зрения расширений оба приложения их поддерживают, хотя и разной степени проработанности.

С точки зрения удобства администрирования оба решения в целом похожи, однако для настройки Apache HTTPD используется XML-подобный синтаксис, а для Nginx Си-подобный.

Мы рассмотрим Nginx.

Но сначала нам нужно веб-приложение на Sinatra.

Настройка Nginx

Введение в настройку Nginx можно прочитать на официальном сайте.

  1. Заберите себе веб-приложение с моего компьютера.
  2. Обеспечьте показ статической информации из каталога ruby-app/public с помощью Nginx
  3. Обеспечьте запуск ruby-приложения в production-окружении. Для этого вам потребуются пакеты: ruby, ruby-sinatra, thin
  4. Обеспечьте показ как статической, так и динамической составляющей через nginx.

В debian настройка веб-сервера разделена на части. Это сделано специально, чтобы каждому аспекту работы сервера выделить своё место.

Базовый каталог, где находится конфигурация: /etc/nginx

  • conf.d - каталог, где находятся файлы, настраивающие весь сервер целиком. Обычно там лежат файлы настроек каких-либо модулей.
  • fascgi.. - файлы, связанные с настройкой FastCGI, т.е. костыля для работы с псевдо веб-приложениями.
  • koi-uft, koi-win - логика преобразования старой кодировки в актуальные.
  • mime.types - информация о mime-типах файлов. Эти типы являются более надёжным способом определения содержимого файла в отличие от расширения.
  • modules-available - каталог, в который помещается конфигурация модулей. Обычно она сюда попадает вместе с пакетом, в котором поставляется соответствующий модуль. Этот каталог не включатеся в финальную конфигурацию nginx.
  • modules-enabled - каталог, содержащий в себе ссылки на файлы из каталога modules-available. Файлы из этого каталога включаются в финальную конфигурацию. Таким образом добавляя или удаляя ссылки можно контролировать конфигурацию nginx.
  • nginx.conf - базовый файл конфигурации, который служит точкой входа и включает в себя остальные файлы (при необходимости). Данный файл зачастую не надо править, особенно при развёртывании простых приложени.
  • proxy_params - конфигурация реверс-проксирования
  • scgi_params - конфигурация SCGI (ещё один вариант реализации CGI)
  • sites-available, sites-enabled - содержат в себе конфигурацию конкретных сайтов, которые должен обслуживать nginx. При добавлении нового сайта надо добавить файл в sites-avaiable и символическую ссылку в sites-enabled. Задачу следует выполнять в этих каталогах.
  • snippets - каталог, в котором можно размещать общие части конфигураций и подключать их по мере необходимости.
  • uwsgi_params - конфигурация uWSGI
  • win-uft - правила преобразования кодировки cp1251 в utf

Конфигурация сайта по умолчанию

При установке nginx его снабдили конфигурацией по умолчанию. Она лежит в default.

Шажочки:

  1. Создать свой собственный конфигурационный файл сайта на основании default. 1.1. Перейти в каталог /etc/nginx/sites-available 1.2. Скопировать файл default в my-cool-site-config. Очевидно, что файл конфигурации my-cool-site-config должен располагаться в конфигурационном каталоге nginx: /etc/nginx/sites-avaiable 1.3. Открыть файл my-cool-site-config в текстовом редакторе и изменить в нём путь к статическим файлам приложения ruby-app 1.4. Т.е. нужно в root указать путь к каталогу public.
  2. Создать ссылку на файл конфигурации /etc/nginx/sites-avaiable/my-cool-site-config в каталоге /etc/nginx/sites-enabled: cd /etc/nginx/sites-enabled sudo ln -sf /etc/nginx/sites-avaiable/my-cool-site-config .
  3. Убрать ссылку на конфигурацию по умолчанию из /etc/nginx/sites-enabled: cd /etc/nginx/sites-enabled sudo unlink default
  4. Перезагрузить конфигурацию nginx: sudo systemctl reload nginx
  5. Проверить, что nginx выдаёт статические файлы ruby-app, открыв в браузере http://localhost

Сделаем простой статический сайтик

Делаем статический сайт:

  • Руками, т.е. каждая страница - это отдельно созданный HTML-документ.
  • С помощью инструментария: jekyll, hugo.

Официальный сайт jekyll: jekyllrb.com

Несколько сайтов на 1 nginx.

  1. Необходимо создать 2 конфигурации в /etc/nginx/sites-avaiable
  2. В каждой конфигурации необходимо использовать различные имена серверов, которые они обслуживают. Например, для компьютера 12 доступны следующие имена:
    • 10.7.223.12
    • pclinux223-12
    • pclinux223-12.yar.fruct.org
  3. Исправить конфигурацию 2 сервера, чтобы он смог перенаправлять запросы на динамическую составляющую сайта.
    • Сначала добейтесь того, чтобы по разным адресам были доступны РАЗНЫЕ статические части двух сайтов: 10.7.223.Х - сайт на Jekyll, pclinux223-X - статическая часть сайта с прошлой недели.и