В прошлых статьях мы установили 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 в нескольких рядовых сценариях — например, установим какие-нибудь популярные приложения с открытым исходным кодом и проверим их работу на практике.

Комментарии (4)


  1. fedorro
    12.09.2023 15:28
    +13

    Наконец смогу своей атомной станцией с телефона рулить, спасибо! ????


    1. NicolyaLS
      12.09.2023 15:28
      +1

      Кевин Митник наверняка одобрил бы такой подход XD


  1. cbagpipe
    12.09.2023 15:28
    +1

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


  1. GeSha64
    12.09.2023 15:28
    +2

    Я всю жизнь проработал с этой ОС. По многим характеристикам эту ОС до сих пор никакая другая из коммерческих не превзошла. Крайне стабильная, администраторам прощает даже серъёзные просчёты! Удивлён, Виктор, что Вы так быстро сориентировались в ней - ведь она не похожа ни на какую иную ОС! Спасибо!