Настройка веб-сервера Nginx
Веб-приложения являются основой современных IT-технологий и необходимо иметь некоторые представления о том как можно обеспечить доступ пользователей к вашему приложению.
Разворачивание Sinatra-приложения в production-среде
В продуктовом режиме веб-сервер Sinatra обслуживает только лишь динамические запросы. Статические же запросы должен обрабатывать внешний HTTP-сервер.
Можно выделить следующие HTTP-сервера:
- HTTPD Apache
- Nginx
С точки зрения администратора встаёт вопрос выбора решения. С точки зрения производительности оба решения достаточно хороши. Если у вас специальный сценарий, то лучше протестировать её.
С точки зрения расширений оба приложения их поддерживают, хотя и разной степени проработанности.
С точки зрения удобства администрирования оба решения в целом похожи, однако для настройки Apache HTTPD используется XML-подобный синтаксис, а для Nginx Си-подобный.
Мы рассмотрим Nginx.
Но сначала нам нужно веб-приложение на Sinatra.
Настройка Nginx
Введение в настройку Nginx можно прочитать на официальном сайте.
- Заберите себе веб-приложение с моего компьютера.
- Обеспечьте показ статической информации из каталога ruby-app/public с помощью Nginx
- Обеспечьте запуск ruby-приложения в production-окружении. Для этого вам потребуются пакеты: ruby, ruby-sinatra, thin
- Обеспечьте показ как статической, так и динамической составляющей через 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.
Шажочки:
- Создать свой собственный конфигурационный файл сайта на основании 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.
- Создать ссылку на файл конфигурации /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 .
- Убрать ссылку на конфигурацию по умолчанию из /etc/nginx/sites-enabled: cd /etc/nginx/sites-enabled sudo unlink default
- Перезагрузить конфигурацию nginx: sudo systemctl reload nginx
- Проверить, что nginx выдаёт статические файлы ruby-app, открыв в браузере http://localhost
Сделаем простой статический сайтик
Делаем статический сайт:
- Руками, т.е. каждая страница - это отдельно созданный HTML-документ.
- С помощью инструментария: jekyll, hugo.
Официальный сайт jekyll: jekyllrb.com
Несколько сайтов на 1 nginx.
- Необходимо создать 2 конфигурации в /etc/nginx/sites-avaiable
- В каждой конфигурации необходимо использовать различные имена серверов, которые они обслуживают. Например, для компьютера 12 доступны следующие имена:
- 10.7.223.12
- pclinux223-12
- pclinux223-12.yar.fruct.org
- Исправить конфигурацию 2 сервера, чтобы он смог перенаправлять запросы на динамическую составляющую сайта.
- Сначала добейтесь того, чтобы по разным адресам были доступны РАЗНЫЕ статические части двух сайтов: 10.7.223.Х - сайт на Jekyll, pclinux223-X - статическая часть сайта с прошлой недели.и