Установка DataExpress Web Server в Ubuntu 22.04

Прежде чем переходить к установке веб-сервера, убедитесь что у вас установлена СУБД Firebird. Инструкции по установке вы можете найти здесь и здесь. В качестве операционной системы будем использовать Ubuntu 22.04.

Хотя веб-сервер может быть установлен отдельно от Firebird, рекомендуется устанавливать их вместе — отзывчивость веб-сервера будет значительно выше.

Русификация системы

Сначала русифицируем систему:

# apt install language-pack-ru
# dpkg-reconfigure locales

В первом окне находим и отмечаем строчку ru_RU.UTF8, во втором тоже выбираем ru_RU.UTF8. Перезагружаем систему:

# reboot

Установка веб-сервера

Установку веб-сервера будем производить в каталог /opt/dxwebsrv_linux64. Введите в терминале следующие команды:

# cd /opt
# wget https://mydataexpress.ru/files/dxwebsrv_linux64.tar.gz
# tar -xzf dxwebsrv_linux64.tar.gz
# cd dxwebsrv_linux64

Теперь настроим автоматический запуск веб-сервера при загрузке системы. В папке веб-сервера есть файл dxwebsrv.service. Копируем его в каталог /etc/systemd/system:

# cp dxwebsrv.service /etc/systemd/system

Включаем сервис и стартуем его:

# systemctl enable dxwebsrv
# systemctl start dxwebsrv

Проверить работает ли веб-сервер можно следующей командой:

# systemctl status dxwebsrv

Вывод будет примерно таким: Статус веб-сервера

Если у вас чистая система, то проблем с запуском быть не должно. В случае успешного запуска статус будет active (running). А статус active (exited), например, говорит о том, что при запуске веб-сервера возникли проблемы. Все ошибки записываются в файл dxwebsrv.log. Посмотрите его, чтобы понять причину сбоя.

По умолчанию, веб-сервер использует порт 80 — HTTP. Если он будет занят каким-то процессом, то веб-сервер не запустится. Если порт занят, то нужно задать другой порт.

Базовая настройка веб-сервера

Все настройки веб-сервера находятся в конфигурационном файле dxwebsrv.cfg. Откройте файл в редакторе:

# mcedit /opt/dxwebsrv_linux64/dxwebsrv.cfg

Конфигурация веб-сервера

Поменять порт можно в параметре Port. В параметре Firebird введите версию вашей СУБД Firebird. Возможные значения: 2.5 и 5. Если вы укажете неверную версию, то веб-сервер не запустится.

Теперь введите сведения о вашей базе данных. Для каждой базы данных создается своя секция. Название секции может быть любым. В названии допускается использовать латинские символы, цифры и знак подчеркивания. Например:

[DemoDB]
Database=127.0.0.1:/opt/bases/DEMO_DB.DXDB

В параметре Database указывается строка подключения к базе данных. Строка подключения указывается точно так же, как и в настольной версии, в формате IP-адрес:ПолныйПутьКБазеДанных.

Обратите внимание на IP-адрес. Т. к. веб-сервер и Firebird установлены на одной системе, вводим именно указанный выше адрес. Также допустимо указывать localhost.

После изменения файла конфигурации требуется перезапустить веб-сервер:

# systemctl restart dxwebsrv

Проверка связи

Откройте браузер и введите в строке IP-адрес вашего сервера или имя домена.

Заглавная страница веб-сервера

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

Страница входа

Если порт веб-сервера отличается от 80, то обязательно укажите его после IP-адреса. Например: http://18.23.2.76:8080/demodb/

Безопасность веб-сервера

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

Создаем нового пользователя:

# useradd dxweb
# passwd dxweb

В конфигурационный файл сервиса добавляем параметр User:

[Unit]
Description=DataExpress Web Server
After=network.target

[Service]
Type=simple
User=dxweb
ExecStart=/opt/dxwebsrv_linux64/dxwebsrv -r
RemainAfterExit=yes
TimeoutSec=25
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target

Убедитесь, что только у владельца есть права на запись.

# ls -l
-rw-r--r-- 1 root  root   11572 May 14  2024 LICENSE.txt
-rw-r--r-- 1 root  root    1619 May 14  2024 NOTICE.txt
drwxr-xr-x 3 dxweb root    4096 Jan  8 10:38 cache
-rwxr-xr-x 1 root  root 8707536 Jan  8 10:37 dxwebsrv
-rw-r--r-- 1 root  root     201 Aug 25  2024 dxwebsrv.service
-rw-r--r-- 1 root  root    8317 Apr  5  2024 except.dic
-rw-r--r-- 1 root  root    1150 May  1  2022 favicon.ico
drwxr-xr-x 2 root  root    4096 Jan  6 22:21 fb5
drwxr-xr-x 2 root  root    4096 Jan  6 22:21 html
drwxr-xr-x 2 root  root    4096 Jan  6 22:21 img
drwxr-xr-x 2 root  root    4096 Jan  6 22:21 languages
-rw-r--r-- 1 root  root 4226888 Apr 10  2024 libPadeg.so
-rw-r--r-- 1 root  root  862048 Jun 19  2019 libfbclient.so
drwxr-xr-x 2 dxweb root    4096 Jan  6 22:25 logs
-rw-r--r-- 1 root  root       0 Jan  8 10:55 out.txt
drwxr-xr-x 2 root  root    4096 Jan  7 11:20 templates

Каталоги cache и logs должны быть доступны для записи. Сделать это можно, например, сменив владельца на dxweb:

# chown dxweb cache
# chown dxweb logs

Перезапускаем сервис:

# systemctl restart dxwebsrv

Если у вас в системе нет разрешения на запись для прочих пользователей, то скрипты веб-сервера могут записывать и создавать файлы только в каталогах cache и logs.

Чтобы запретить чтение из важных каталогов, можно воспользоваться списками контроля доступа ACL. Например:

# apt-get install acl
# setfacl -m u:dxweb--- /etc