Приложение работает с использованием программного каркаса Ruby on Rails версии 3.2. Приложение располагается в одной директории на сервере (в стандартной инсталляции это /opt/hydra/rails/hupo). В этой директории есть символьная ссылка current, которая указывает на текущую версию приложения. При установке обновления в директории releases появляется новая версия, и символьная ссылка обновляется. Это означает, что все локальные изменения в приложении не сохраняются при обновлении. Специально для этого случая ЛК позволяет подгружать исходный код из других директорий.
Приложение запускается с помощью веб-сервера Unicorn, который открывает unix-сокет по адресу /opt/hydra/rails/hupo/shared/unicorn.sock (в стандартной инсталляции). Для эффективной отдачи статических файлов также запускается веб-сервер nginx с нужными настройками. Он проксирует запросы к приложению на открытый сокет, а статические файлы отдает самостоятельно (JavaScript-код, изображения, стили). В инсталляции по умолчанию nginx прослушивает порт 8001. Для перезапуска приложения необходимо перезапускать Unicorn, поскольку именно он ответственен за работу приложения. nginx необходимо перезапускать лишь при изменениях в его файлах конфигурации (обычно они располагаются в директории /etc/nginx).
Переменная окружения HYDRA_CONFIG_PATH указывает на директорию, в которой лежит конфигурационный файл приложения (его имя hupo_configuration.yml). В установке по умолчанию этот конфигурационный файл располагаются в директории /etc/hydra (в Docker'е
. Нужно иметь в виду, что эта переменная должна быть установлена при запуске Unicorn, иначе при запуске приложения возникнет ошибка об отсутствующем файле конфигурации (обычно для запуска, останова и перезапуска Unicorn используется инициализационный скрипт /etc/hydra/hupo
)/etc/init.d/hupo
, который самостоятельно устанавливает корректные переменные окружения). Файл hupo_configuration.yml хранит конфигурацию в формате YAML, удобном для хранения несложных программных структур.
ЛК подгружает программные файлы из директорий в следующем порядке (относительно директории с версией):
lib/clients-stuff/lib/clients_stuff/hupo/%config.client%
(далее $latera_client). Здесь хранятся файлы, которые были созданы Латерой для настройки ЛК под нужды клиента.%config.client%
директории, указанной в конфигурационном файле в ключе shared_path
. В стандартной инсталляции это /etc/hydra/hupo/local/%config.client%
(далее $server_client). Здесь могут храниться пользовательские настройки и программный код, которого нет в репозиториях Латеры. Эти файлы имеют наибольший приоритет.Директории $latera_default, $latera_client и $server_client имеют одинаковую структуру:
Файлы из директорий assets для использования в приложении должны быть скомпилированы. Компиляция их также необходима после изменения файлов локализации. Компиляция запускается с помощью инициализационного скрипта:
root@server:~# /etc/init.d/hupo recompile_assets |
В редких случаях, когда появляются файлы с одинаковыми именами, может потребоваться перед компиляцией сбросить кэш скомпилированных файлов:
root@server:~# rm -rf /opt/hydra/hupo/tmp/cache/assets |
После докерезации нашего ЛК задача по перекомпилированию ассетов сводится к выполнению команды:
sudo docker exec -it hupo pkill -f unicorn |
Обратите внимание, что кеш Dalli использует свой контейнер memcachedN и время жизни записи там 30 минут. Ускорить прогрев кеша помогает перезапуск контейнера memcached.
Перезапуск приложения требуется для загрузки новых файлов. Перезапустить приложение можно несколькими способами:
/var/run/hydra/hupo/unicorn.pid
. Спустя какое-то время после отправки сигнала сервер перезапустится, вместе с ним перезапустится и приложение. Если при перезапуске не произошло ошибок, то PID master-процесса изменится. Иначе следует проверить файл /var/log/hydra/hupo/unicorn_error.log
на наличие ошибок.Перезапуск Unicorn инициализационным скриптом /etc/init.d/hupo
:
root@server:~# /etc/init.d/hupo restart |