Page tree

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Веб-приложения, работающие с
ais_name
, основаны на фреймворке Ruby on Rails (язык Ruby). Они функционируют под пользователем ОС rails с помощью веб-сервера nginx в Apache в связке с модулем passenger. Версии веб-приложений устанавливаются на сервере сотрудниками компании «Латера» с помощью собственных средствсобственными средствами.

Каждое приложение устанавливаются на сервере в отдельную директорию (например, «Офис оператора связи» — в /opt/hydra/rails/arm_isp, «Личный кабинет абонента» — в /opt/hydra/rails/arm_ispprivate_office и т.д.), которая имеет следующее содержимое:

...

  1. Ротация и архивация лога

    В процессе своей работы веб-проложения сохраняет лог выполнения запросов в файл shared/log/production.log, размеры которого со временем эксплуатации системы могут достигать нескольких гигабайт. Чтобы избежать угрозы нехватки свободного дискового пространства, рекомендуется регулярно производить ротацию и архивацию данного лога, например, с помощью logrotate.


  2. Удаление старых релизов

    Со времением эксплуатации в директории releases может накопиться большое количество устаревших версий приложения, которые уже не совместимы с текущей установленной версией. Чтобы избежать засорения заполненного дискового пространства, рекомендуется производить регулярное удаление старых релизов, например, спустя месяц с момента их последнего использования.

  3. Сброс кэша

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

    Code Block
    rails@server:~/arm_isp$ touch current/tmp/restart.txt
  4. Запуск, остановка, перезапуск

    Управление работой веб-приложений в общем случае осуществляется с помощью инит-скрипта веб-сервера nginx Apache /etc/init.d/nginxapache. Например, команда на перезапуск nginx-а Apache имеет следующий вид:

    Code Block
    root@server:~# /etc/init.d/nginxapache restart

    Перезапуск отдельного приложения может потребоваться, например, когда приложение перестает быть доступным для всех пользователей.

...

Все агенты написаны на языке Python и имеют одинаковые возможности по настройке и управлению выполнением. При промышленной эксплуатации они запускаются в режиме демона и управляются с помощью индивидуального инит-скрипта (например, для hcd — /etc/init.d/hcd). Для работы каждого приложения существует персональный конфигурационный файл, в котором задаются параметры запуска и логгирования. Например, для hard (файл /etc/hard/hard.conf):

...

  1. Ротация и архивация лога

    В процессе своей работы приложения ведут лог в индивидуальном файле, путь к которому задается в конфиге (например, для hard — /var/log/hard/hard.log). Все агенты имеют встроенный функционал по ротации лог-файла. При настройке параметров, отвечающих за ротацию (log rotate size и log rotate count) важно уделить внимание интенсивности заполнения лог-файла во время эксплуатации системы, на основе которой выставить подходящие значения в конфиге. Лог-файл должен содержать данные минимум за последнюю неделю работы приложения.


  2. Запуск, остановка, перезапуск
     
    Управление работой приложений-агентов осуществляется с помощью индивидуального инит-скрипта (например, для hpd —  /etc/init.d/hpd). Команда на перезапуск имеет следующий вид:

    Code Block
    root@server:~# /etc/init.d/hpd restart

...