В прошлых статьях мы установили 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;1X86VMS-LUA-V0503-5D-1.ZIP;1X86VMS-WEBUI-V0401-1-1.ZIP;1 Total of 3 files. Утилита распаковки уже установлена в операционной системе, но вот вызывать её привычной командой 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 Переходим к установке второго пакета 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;1services^.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: $ 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_READUAF> 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 в нескольких рядовых сценариях — например, установим какие-нибудь популярные приложения с открытым исходным кодом и проверим их работу на практике.