DataExpress Web Server

DataExpress Web Server (далее веб-сервер) позволяет работать с базой данных через браузер на любом устройстве. Веб-сервер может работать с несколькими базами данных одновременно, обрабатывая запросы множества удаленных пользователей.

В настоящее время доступны альфа-версии для Windows 32-bit и Linux 64-bit, которые можно использовать в том числе в коммерческих целях. Еще не реализовано:

  1. свойство объекта «заполнить таблицу» (не планируется);
  2. диаграммы;

Для корректной работы на устройствах требуется современный браузер на основе Chromium (Google Chrome, Yandex, Microsoft Edge и т. д.). Веб-интерфейс адаптируется под экран устройства, что обеспечивает удобную работу как на компьютере, так и на смартфоне.

Веб-сервер поддерживает два режима запуска: консольное приложение и сервис (поддерживается только Linux). В первом случае достаточно просто запустить файл dxwebsrv. Но для постоянной работы лучше запускать программу, как сервис (будет рассказано ниже).

Для более быстрой работы рекомендуется устанавливать веб-сервер на тот же компьютер (виртуальный сервер), где и база данных. В системе Windows даже необязательно устанавливать СУБД Firebird 2.5, если планируется работать исключительно с веб-сервером. В Linux установка Firebird обязательна (статья по теме - http://dataexpress.wiki/stati:bd_v_oblake).

Установка в Windows

Программа будет работать во всех версиях Windows, начиная с Windows XP. Распакуйте архив с программой в любую папку. Для запуска веб-сервера просто запустите файл dxwebsrv.exe из проводника.

Установка в Linux (Ubuntu 16.04)

Сервер тестировался только в Ubuntu Linux 16.04, но скорее всего будет работать и в других сборках. Требования в окружению минимальны (графический интерфейс не требуется), так что запустить веб-сервер можно даже на самом дешевом VDS.

Убедитесь, что на вашем сервере установлена СУБД Firebird 2.5. О том, как установить Firebird, читайте здесь.

Распакуйте содержимое архива в любую удобную папку, например: /home/user/dxwebsrv_linux64. В консоли перейдите в папку программы, например:

cd /home/user/dxwebsrv_linux64

Для корректной работы веб-сервера с демобазой, да и вообще любой базой данных, необходимо сменить владельца файла базы данных на пользователя firebird.

sudo chown firebird DEMO_DB.FDB

В правах доступа к файлу dxwebsrv должен быть разрешен запуск:

sudo chmod 744 dxwebsrv

Чтобы запустить веб-сервер как консольное приложение, введите следующее:

./dxwebsrv

Установка сервиса

В папке программы есть файл dxwebsrv.service. Это файл настроек нашего сервиса. Файл имеет следующее содержимое:

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

[Service]
Type=simple
ExecStart=/var/web/dxwebsrv -r
RemainAfterExit=yes
TimeoutSec=25

[Install]
WantedBy=multi-user.target

В параметре ExecStart заменить путь к исполняемому файлу программы на реальный. Затем скопируйте файл в системную папку:

sudo cp dxwebsrv.service /etc/systemd/system

После этого можно запускать сервис:

sudo systemctl enable dxwebsrv
sudo systemctl start dxwebsrv

Если веб-сервер был установлен на виртуальном сервере (VDS), то для проверки работы в адресной строке вашего браузера введите IP-адрес виртуального сервера. Например: http://80.60.12.8/demodb/

Проблемы с локалью

В Ubuntu 16.04 для корректной работы сервера требуется русификация системы. Для этого выполняем следующие команды (требуются права админа):

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

Вторая команда запустит диалог настройки локали. Выбираем в списке ru_RU.UTF-8 UTF-8. Более подробно о русификации можно узнать, перейдя по следующей ссылке: https://obu4alka.ru/rusificziruem-ubuntu-server-16-04-lts.html.

Работа в демобазе

Откройте браузер и наберите в адресной строке: http://IP-адрес веб-сервера/demodb/. Если вы открыли веб-браузер на том же компьютере, где установлен веб-сервер, то в адресной строке наберите: http://127.0.0.1/demodb/. Должна появится страница ввода имени пользователя и пароля. Ничего не вводите, просто нажмите кнопку «Вход».

Чтобы подключиться к базе данных с другого компьютера, находящегося в той же локальной сети, введите в браузере IP-адрес машины с веб-сервером, например: http://192.168.0.11/demodb/.

Настройка веб-сервера

Для настройки веб-сервера нужно отредактировать файл dxwebserv.cfg. Файл имеет формат ini-файла и состоит из секции «Server» и секций с произвольными именами, описывающих параметры подключения к базам данных. В секции Server всего 2 параметра:

  • Language - язык интерфейса, может принимать значения en, ru. Возможны и другие значения, например by, ua, если есть соответствующий файл языка languages\dxwebserv.XX.po.
  • Port - порт сервера. По умолчанию - 80. Если порт отличается от 80, то его всегда нужно указывать в адресной строке браузера, например http://192.168.1.10:8080.

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

[MyDB]
Database=127.0.0.1:/home/user/bases/MyDB.FDB
Templates=templates
SessionTime=30
DBPwd=anypassword

В параметре Database пропишите путь к файлу базы данных, в формате IP-адрес сервера БД:полный путь к файлу базы данных. Так как обычно веб-сервер будет устанавливаться вместе с СУБД Firebird, IP-адресом обычно будет петлевой IP-адрес компьютера 127.0.0.1, как в примере выше. Обратите внимание, что в Linux регистр имеет значение. В параметре Templates пропишите путь к папке шаблонов. Путь может быть задан относительно папки программы. Параметр SessionTime задает время простоя сессии. Если пользователь указанное время был неактивен, то ему нужно будет повторно подключаться к базе данных. Параметр DBPwd задает пароль пользователя SYSDBA. Если вы не меняли пароль SYSDBA для СУБД Firebird, то параметр можно не задавать.

В примере выше для подключения к базе данных используется порт Firebird по умолчанию 3050. Если порт отличается, то его можно задать следующим образом:

Database=127.0.0.1/3055:/home/user/bases/MyDB.FDB

Чтобы изменения в cfg-файле вступили в силу, надо перезапустить веб-сервер:

sudo systemctl restart dxwebsrv

Теперь, чтобы подключится к базе MyDB, введите в адресной строке браузера: http://192.168.0.10/mydb/, где 192.168.0.10 - IP-адрес компьютера, с установленным веб-сервером.

Особенности работы

  1. Сервер всегда запрашивает логин и пароль к базе данных. Если в базе нет пользователей, просто нажмите кнопку «Вход».
  2. Сервер позволяет заходить пользователям под одним и тем же логином, несмотря на запрет в настройках доступа.
  3. Монитор пользователей можно назначить на кнопку, а можно ввести адрес вручную. Например: 192.168.0.10/demodb/?usermon. Монитор пользователей показывает подключенных пользователей как веб, так и десктопных.
  4. Данные формы отображаются в представлении «только таблица».
  5. Вывод данных формы осуществляется постранично: по 20 записей.
  6. Записи редактируются на отдельной странице. Вы можете редактировать одновременно несколько записей, каждая в отдельной вкладке.
  7. Сервер игнорирует блокировку записей от редактирования. Вы всегда можете отредактировать запись, даже если кто-то другой в этот момент ее редактирует или просматривает. При этом если пользователи редактировали разные поля, будут сохранены изменения обоих пользователей.
  8. Нельзя загрузить изображение/файл, если указан способ хранения «Ссылка».
  9. Сервер запоминает 10 последних редактируемых записей (для каждой формы).
  10. Возможность создавать закладки на формы, отчеты, записи (средствами браузера).
  11. Некоторые элементы интерфейса имеет имеют фиксированное оформление и не зависят от свойств компонентов, например шрифт и фон таблицы на странице просмотра списка записей формы (табличная часть формы) задается в файле form.css.
  12. В списках, как и в объектах, можно фильтровать по фрагментам текста. Содержимое списков подгружается частями, по 100 элементов.
  13. Старайтесь минимизировать количество записей, выводимых в запросах на формах, т. к. сервер может потреблять много оперативной памяти при формировании ответа клиенту.