OpenVMS: операционная система для атомных станций. Веб-интерфейс

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

В прошлых статьях мы установили OpenVMS в качестве виртуальной машины и разобрались с тем, как правильно настроить сеть и активировать хоббийную лицензию. Теперь предлагаем настроить веб-сервер и установить административный WebUI, позволяющий управлять некоторыми функциями сервера без необходимости выполнения команд в консоли.

Подготовка к установке

Начать установку веб-интерфейса стоит со скачивания пакетов на свой локальный компьютер. Для этого заходим на портал VSI (доступно обладателям хоббийной лицензии) и скачиваем три пакета:

  • X86VMS-CIVETWEB-V0114-0D-1

  • X86VMS-LUA-V0503-5D-1

  • X86VMS-WEBUI-V0401-1-1

Основной пакет — X86VMS-WEBUI-V0401-1-1, а другие являются зависимостями для него. Все они представляют собой обычные ZIP-архивы и будут распакованы непосредственно на целевой системе. Чтобы не мешать всё в одну кучу, создадим для них отдельную директорию. Подключаемся через SSH, который мы настроили в прошлой статье, и создаём директорию SOFT:

$ CREATE /DIR DKA100:[SOFT]

Привычной команды cd (change directory) в OpenVMS нет. Вместо этого используется SET DEFAULT:

$ SET DEFAULT DKA100:[SOFT]

Открываем FileZilla, соединяемся по SFTP и заливаем скачанные пакеты:

Проверяем: 

$ DIR

Directory DKA100:[SOFT]

X86VMS-CIVETWEB-V0114-0D-1.ZIP;1
X86VMS-LUA-V0503-5D-1.ZIP;1
X86VMS-WEBUI-V0401-1-1.ZIP;1

Total of 3 files.

Установка Lua

Утилита распаковки уже установлена в операционной системе, но вот вызывать её привычной командой unzip нельзя. Так что упростим себе жизнь, создав соответствующий алиас:

$ UNZIP :== $SYS$COMMON:[SYSHLP.UNSUPPORTED.UNZIP]UNZIP.EXE

Теперь распакуем пакет с Lua:

$ UNZIP X86VMS-LUA-V0503-5D-1.ZIP

И выполним установку:

$ PRODUCT INSTALL LUA

Система попросит подтвердить установку пакета — просто нажмите клавишу Enter. После завершения установки на экране появится предупреждение, что для автоматического запуска Lua вместе с операционной системой потребуется внесение изменений в файл SYSTARTUP_VMS.COM:

VSI X86VMS LUA V5.3-5D: Lua for OpenVMS is based on Lua Version 5.3.5

    Post-installation tasks are required.

    To start the Lua runtime at system boot time, add the following
    lines to SYS$MANAGER:SYSTARTUP_VMS.COM:

        $ file := SYS$STARTUP:LUA$STARTUP.COM
        $ if f$search("''file'") .nes. "" then @'file'

    To stop Lua at system shutdown, add the following lines to
    SYS$MANAGER:SYSHUTDWN.COM:

        $ file := SYS$STARTUP:LUA$SHUTDOWN.COM
        $ if f$search("''file'") .nes. "" then @'file'

По SSH редактор EDIT работает некорректно, в частности, нельзя переключиться командой CHANGE. Сделаем так, чтобы при вызове команды EDIT приложение автоматически переключалось в нужный нам режим редактирования:

$ SET TERM/INQUIRE

Это сработает до перезагрузки. Если хочется, чтобы эта настройка срабатывала при загрузке OpenVMS, то загляните под спойлер:

Спойлер

Переходим в директорию SYS$LOGIN:

$ SET DEFAULT SYS$LOGIN

Открываем файл SYLOGIN.COM:

$ EDIT SYLOGIN.COM

Находим строку:

$ TT_NOINQUIR = "|TW|RT|WT|TK|WS|PY|FT|TN|"

Удаляем оттуда |FT, оставив всё остальное, чтобы строка приняла вид:

$ TT_NOINQUIR = "|TW|RT|WT|TK|WS|PY|TN|"

Сохраняемся и выходим из редактора сочетанием клавиш Ctrl + Z. Чтобы изменения сработали, нужно будет завершить текущую SSH-сессию и подключиться заново.

Теперь добавляем установленный Lua в автозагрузку. Открываем на редактирование файл:

$ EDIT SYS$MANAGER:SYSTARTUP_VMS.COM

Добавляем две строки в конец файла, но перед завершающей строкой со словом EXIT:

$ file := SYS$STARTUP:LUA$STARTUP.COM
$ if f$search("''file'") .nes. "" then @'file'

Обратите внимание, что в части ("''file'") символы "'' — это не две двойные кавычки, а одна двойная кавычка и два апострофа, а '" — это один апостроф и одна двойная кавычка.

Сохраняемся и выходим сочетанием клавиш Ctrl + Z. Чтобы демон корректно выключался при завершении работы ОС, проделаем то же самое с SYSHUTDWN.COM:

$ EDIT SYS$MANAGER:SYSHUTDWN.COM

Добавляем строки в конец файла перед EXIT:

$ file := SYS$STARTUP:LUA$SHUTDOWN.COM
$ if f$search("''file'") .nes. "" then @'file'

Так же (Ctrl + Z) сохраняемся и выходим. Можно или просто перезагрузиться, или стартовать Lua вручную:

$ @SYS$STARTUP:LUA$STARTUP.COM

Установка CivetWeb

Переходим к установке второго пакета X86VMS-CIVETWEB-V0114-0D-1. Действуем точно так же, а именно распаковываем архив:

$ UNZIP X86VMS-CIVETWEB-V0114-0D-1.ZIP

В процессе система спросит, заменить ли файл манифеста. Поскольку мы не создавали под каждый пакет отдельную директорию, просто отвечаем Yes. Затем устанавливаем сам CIVETWEB:

$ PRODUCT INSTALL CIVETWEB

Так же, как и в случае с Lua, потребуется внести пару строк в автозагрузку:

$ EDIT SYS$MANAGER:SYSTARTUP_VMS.COM

Добавляем строки:

$ file := SYS$STARTUP:CIVETWEB$STARTUP.COM
$ if f$search("''file'") .nes. "" then @'file'

Далее нажимаем Ctrl + Z и аналогично Lua прописываем в скрипт выключения:

$ EDIT SYS$MANAGER:SYSHUTDWN.COM

Вносим строки:

$ file := SYS$STARTUP:CIVETWEB$SHUTDOWN.COM
$ if f$search("''file'") .nes. "" then @'file'

Чудесно! Сохраняемся и выходим (Ctrl + Z). CivetWeb установлен, но пока у него нет конфигурации. Так что слегка повременим с запуском и вначале сконфигурируем его, используя установленные шаблоны. Чтобы предупредить возникновение ошибок при копировании, включаем расширенный парсинг имён файлов для файловой системы ODS-5:

$ SET PROC/PARSE_STYLE=EXTENDED

Переходим в директорию с CivetWeb:

$ SET DEFAULT CIVETWEB$ROOT:[CONF]

Там будут лежать два шаблона:

$ DIR

Directory CIVETWEB$ROOT:[conf]

civetweb^.conf.template;1
services^.conf.template;1

Total of 2 files.

Если вдруг их там нет или выдаёт ошибку, то просто запустите CivetWeb вручную:

$ @SYS$STARTUP:CIVETWEB$STARTUP.COM

Приложение при этом не заработает, но шаблоны будут сгенерированы. Скопируем их и дадим рабочие названия:

$ COPY CIVETWEB^.CONF.TEMPLATE CIVETWEB.CONF

$ COPY SERVICES^.CONF.TEMPLATE SERVICES.CONF

Теперь уже с чистой совестью можно запускать CivetWeb. Просто повторяем команду:

$ @SYS$STARTUP:CIVETWEB$STARTUP.COM

Открываем браузер и проверяем, что веб-сервер на порте 8082 заработал корректно:

Если вы видите такую картинку, то всё сделали правильно. Можно кликнуть по demo.lua и убедиться, что веб-страница откроется.

Установка WebUI

Возвращаемся в директорию, где лежит оставшийся пакет для установки WebUI:

$ SET DEFAULT DKA100:[SOFT]

Распаковываем его, соглашаясь на замену всех файлов с совпадающими именами:

$ UNZIP X86VMS-WEBUI-V0401-1-1.ZIP

Установка ничем не отличается от уже описанных выше действий:

$ PRODUCT INSTALL WEBUI

Спустя минуту веб-интерфейс будет установлен, а инсталлятор предупредит о необходимости выполнения дополнительных действий. Так же, как с Lua и CivetWeb, потребуется добавить WebUI в автозагрузку:

$ EDIT SYS$MANAGER:SYSTARTUP_VMS.COM

Идём в конец файла и добавляем ещё пару строк:

$ file := SYS$STARTUP:WEBUI$RESTART.COM
$ if f$search("''file'") .nes. "" then @'file'

Сохраняемся и выходим (Ctrl + Z). Особенность OpenVMS в том, что даже суперпользователь SYSTEM по умолчанию не будет иметь прав для использования WebUI. Так что предварительно надо будет позаботиться об этом. Переходим в директорию SYSTEM:

$ SET DEFAULT SYS$SYSTEM

Запускаем системную утилиту AUTHORIZE для управления пользователями и выделения им прав доступа:

$ RUN AUTHORIZE

UAF>

Создаём две записи, последовательно выполняя следующие команды:

UAF> ADD/IDENTIFIER WEBUI_READ
UAF> ADD/IDENTIFIER WEBUI_WRITE

Теперь присваиваем пользователю SYSTEM права на запись и выходим из утилиты:

UAF> GRANT/IDENTIFIER WEBUI_WRITE SYSTEM

UAF> EXIT

С правами разобрались. Осталось лишь создать конфигурационные файлы из поставляемых с WebUI шаблонов и подсунуть их CivetWeb. Переходим в директорию с конфигами CivetWeb:

$ SET DEFAULT CIVETWEB$ROOT:[CONF]

Поочерёдно создаём конфиги:

$ COPY CIVETWEB^.CONF.WEBUI CIVETWEB.CONF
$ COPY SERVICES^.CONF.WEBUI SERVICES.CONF
$ COPY ALERT_IMAGES^.CONF.TEMPLATE ALERT_IMAGES.CONF
$ COPY THREADS^.CONF.TEMPLATE THREADS.CONF
$ COPY WEBUI^.CONF.TEMPLATE WEBUI.CONF

И финально возвращаемся в директорию с пакетами приложений:

$ SET DEFAULT DKA100:[SOFT]

Стартуем:

$ @SYS$STARTUP:WEBUI$RESTART.COM

Это автоматически вызовет перезапуск CivetWeb и запустит WebUI. Открываем браузер и переходим по адресу:

http://<IP_OpenVMS>:8082

Вводим данные пользователя SYSTEM и нажимаем LOG IN:

Теперь рядовые операции можно делать вообще не притрагиваясь к консоли, а также наглядно оценивать загрузку системы:

Вместо заключения

На первый взгляд операционная система OpenVMS может показаться сложной и нелогичной. Но чем больше мы с ней экспериментируем, тем понятнее становятся те или иные приёмы работы. Установка веб-интерфейса управления стала ещё одним шагом к лучшему пониманию системы. В следующий раз мы попробуем использовать OpenVMS в нескольких рядовых сценариях — например, установим какие-нибудь популярные приложения с открытым исходным кодом и проверим их работу на практике.

Источник: https://habr.com/ru/companies/ru_mts/articles/760496/


Интересные статьи

Интересные статьи

Про SVD разложение и PCA. Решение задачи восстановления user-item matrix с помощью stochastic gradient descent.
В этой теме мы продолжим рассмотрение файловой системы BTRFS и рассмотрим такую сложную и неоднозначную тему как кэширование. Типичная проблема, которую пытаются решить с пользователи это использовани...
Результатом моей 3х годовой работы в качестве PO/Functional Architector в медицинском домене является следующий значимый и уникальный опыт. В ходе работы над техническими решениями мировых компаний, и...
Я много исследую зарубежный опыт, прохожу обучения, слежу за тенденциями и в этом материале хочу поделиться с вами 3 лучшими практиками, которые используют компании из Шт...
Поиски идеала это бесконечный поход по пустыне. Мы идем по бескрайнему морю песка, пересекая бархан за барханом, пока палящее солнце медленно, но верно отбирает у нас последние запасы...