Автоматизация магазина: установка сервера Firebird 2.5 Печать

Автоматизация магазина на базе сервера Firebird является экономически выгодной, поскольку, несмотря на свою бесплатность, это полноценный SQL сервер, достаточно мощный и надежный, чтобы удовлетворить потребности среднего холдинга.

В нашей практике система Storehouse Explorer на базе сервера Firebird использовалась для автоматизации холдинга из 50 магазинов по всей России. Размер базы данных превышал 30 Гб, база содержала информацию за 10 лет и одновременно обслуживала от 70 до 120 пользователей (проведение торговых операций и аналитика).

>> Скачать демо-версию <<

Установка сервера Firebird на UNIX имеет свои особенности, которые мы бы хотели отразить в данной статье.

Автоматизация магазина на базе сервера Firebird 2.5 на POSIX (UNIX, LINUX) платформах

Предисловие
I.   Выбор дистрибутива
II.  Выбор метода установки
III. Установка сервера Firebird 2.5
IV. Если что-то пошло не так
V. Установка Firebird на платформах Solaris, FreeBSD, Debian
Литература

Предисловие

В статье описывается установка сервера Firedird 2.5.2 в  POSIX (Unix-подобных) операционных системах, таких как Linux, Unix.

Перед установкой необходимо учесть следующее.

  1. Для установки сервера Firebird Вам понадобятся права пользователя root.
  2. Если вы устанавливаете Firebird на Линукс, то  прежде чем производить установку вы должны убедиться, что в системе имеется  run-time библиотека libstdc++.so.5. Если это не так, то следует установить compat-glibc пакет (RedHat, CentOs, OpenSuse, Debian) или libstdc++5 пакет (Mandriva).
  3. Eсли вы планируете установку Firebird c архитектурой SuperServer на Линукс, который поддерживает новую POSIX модель потоков, то следует выбираль  NPTL билд Firebird.

I. Выбор дистрибутива

Существует достаточно много дистрибутивов Firebird различных версий и разработанных для разных операционных систем.
На момент написания этой статьи доступен стабильный билд этого сервера версии 2.5.2, который может работать на
32-x и 64-х разрядных платформах Windows, LINUX и MacOSX.
Однако прежде чем выбрать нужный дистрибутив необходимо сделать небольшое отступление.
Существует несколько вариантов исполнения или вариантов архитектуры сервера Firebird, в именно Classic, SuperServer
и Еmbeded. Различаются они способом использования машинных и сетевых ресурсов. Не вдаваясь глубоко в подробности отметим, коротко, особенности этих архитектур:
Classic - формально можно описать формулой "n коннектов к базе - n процессов на сервере", т.е. каждый коннект к базе

запускает свой *процесс* на сервере. Работает это так. На POSIX платформах запускается  [x]inetd демон, который
слушает порт (по умолчанию это порт 3050, но при необходимости, можно назначить другой). Этот демон запускает для каждого успешного коннекта *отдельный* процесс fb_inet_server. Под каждый процесс расходуются определенные ресурсы сервера,  создается отдельный кеш памяти.

Более экономно расходует ресурсы компьютера  архитектура SuperServer.
SuperServer можно коротко описать  формулой "n коннектов к базе - один процесс и n *потоков* на сервере". В POSIX системах это процесс fbserver. Суперсервер - это многопоточное приложение, в отличие от архитектуры Classic. Каждое соединение обслуживается в отдельном потоке.
Embeded - это архитектура, которая работает в составе отдельного приложения и в обычном понимании не является "полным сервером", т.е. не предназначена для работы как сервер, который обслуживает множество коннектов.
Скорее всего, вы будете делать выбор между архитектурой Classic и Cуперсервер. Если нет возможности глубоко вдаваться в подробности, то можно сделать выбор произвольно. Формат самой базы данных никак не привязан к конкретной архитектуре Сlassic или Superserver и всегда есть возможность, в случае необходимости, переустановить сервер, выбрав другую архитектуру.
И хотя, скорее всего, вам подойдет любая архитектура из этих двух, есть мнение, что для новичков, которые только начали работать с Firebird, архитектура Classic более предпочтительна для изучения и экспериментов с Firebird, как более устойчивая к неверным действиям пользователя.
Заметим, что Суперсервер использует общий кэш памяти и может иметь некоторые преимущества в случае одновременной работы большого числа пользователей. Cуперсервер ограничен по размеру используемой оперативной памяти, на момент написания статьи он не может использовать память свыше 2Gb.
Архитектуре Classic можно также отдать предпочтение, если "железо" использует несколько процессоров и имеет значительную оперативную память (> 2 GB).
В данной статье не стоит задача подробного анализа и сравнения этих архитектур, более подробную информацию об этом можно найти в интернете.

II. Выбор метода установки

Для установки Firebird вы должны иметь права пользователя root.
Сервер Firebird  относится к числу бесплатных продуктов, дистрибутив  для его установки можно скачать с официального сайта Firebird Foundation www.firebird.org.
Дистрибутивы сформированы как  файлы  *.rpm или *.tar.gz, например:

FirebirdCS-2.5.2.26539-0.i686.rpm

или

FirebirdCS-2.5.2.26539-0.i686.tar.gz

Необходимо отметить, что не все сборки Linuх поддерживают rpm-установку, уточнить это можно в документации к платформе в разделе  "Менеджер rpm-пакетов"("RPM Package Manager"). В таких случаях рекомендуется использовать "tar.gz" файлы.
В интернете есть описания ручных способов установки путем распаковки архива и копирования файлов, однако такие способы, при наличии инсталляторов от разработчика, не рекомендуются.

III. Установка сервера Firebird 2.5

Для примера, возьмем установку сервера архитектуры Classsic.
Войдите в систему под пользователем root.
Для инсталяции *.rpm файла следует набрать:

$rpm -ivh FirebirdCS-2.5.2.26539-0.i686.rpm

Для инсталяции *.tar.gz файла следует набрать:

$tar -xzf FirebirdCS-2.5.2.26539-0.i686.tar.gz
$cd FirebirdCS-2.5.2.26539-0.i686.tar.gz
$./install.sh


После запуска скриптов установки будут произведены следующие действия:

  1. Будет сделана попытка остановить все работающие сервера Firebird.
  2. Если еще не созданы, будут созданы пользователь "firebird"  и группа "firebird".
  3. В каталог /opt/firebird будет установлено программное обеспечение, в каталоге /usr/lib будут созданы ссылки
  4. для библиотек,  в каталог /usr/include будут помещены заголовки файлов.
  5. В каталог /etc/services будет добавлена запись gds_db для порта 3050, если такой записи еще нет.
  6. Будут добавлены localhost.localdomain  и HOSTNAME в каталог /etc/gds_hosts.equiv.
  7. Если устанавливается SuperServer, то будет установлен только скрипт запуска сервера /etc/rc.d/init.d/firebird.
  8. Если устанавливается Classic, то будет установлен скрипт запуска /etc/xinet.d/firebird или, для некоторых младших версий inetd-систем, будет добавлена запись в /etc/inetd файл.
  9. Будут прописаны новые ссылки в /usr/bin для скрипта init.d и будет создана конфигурационная запись сервера Firebird в etc/rc.config.
  10. Будет выполнен старт сервера/службы и Firebird должен стартовать автоматически.
  11. Будет сгенерирован случайным образом пароль пользователя SYSDBA и записан в файл /opt/firebird/SYSDBA.password.
  12. Будет добавлен алиас для тестовой базы данных employee.fdb в aliases.conf.

На этом этапе можно проверить корректность установки сервера Firebird. Для этого нам потребуется пароль учетной записи SYSDBA, который можно извлечь из файла /opt/firebird/SYSDBA.password.
Наберем в командной строке:

$cd /opt/firebird/bin
$./isql -user sysdba -password <password>
SQL>connect localhost:employee.fdb;
SQL>select * from sales;
SQL>quit;

По этим командам сервер Firebird соединяется с тестовой базой данных employee.fdb и извлекает все записи из таблицы sales.
Firebird сервер, по умолчанию, запускается от имени пользователя "firebird". Ранее, по умолчанию, сервер выполнялся от имени "root". Запуск сервера от имени "root" - не очень правильно с точки зрения безопасности, поскольку, у пользователя "root" самые высокие права в системе и он может создавать и удалять любые файлы и каталоги в пределах всей файловой системы. Такие права для сервера Firebird являются излишними, поэтому следует проверить и настроить конфигурацию сервера для работы от имени пользователя "firebird".

Для этого:

  1. пользователь "firebird" должен иметь права на запись в каталог, в котором будут создаваться базы данных.
  2. параметр DatabaseAccess из файла /opt/firebird/firebird.conf должен быть настроен таким образом, чтобы запретить доступ ко всем файлам и каталогам, за исключением тех, которые предназначены для хранения баз данных. Если в файле aliases.conf мы создаем алиас для файла, то  в файле  firebird.con мы должны дать к этому файлу доступ.
  3. рекомендуется (желательно, но не обязательно) всегда использовать алиасы для  указания абстрактных ссылок на файлы баз данных, не указывая их конкретное физическое расположение.

На примере создания пустой базы данных test.fdb убедимся, что создание сервера Firebird прошло успешно.  
Существует не один способ создания пустой базы, (например на клиенте, с помощью приложения IBExpert),
здесь предлагается самый простой способ, штатными средствами Firebird на сервере.
Каталог для размещения выберем var/firebird.
Итак, надо:
1. проверить наличие и при отсутствии создать каталог /var/firebird. Если владельцем этого каталога является не пользователь "firebird", то следует сменить владельца на "firebird":

$su - root
$mkdir -p /var/firebird
$chown firebird:firebird /var/firebird

2. В  файле /opt/firebird/firebird.conf  добавить разрешение для создания базы в каталоге /var/firebird.

DatabaseAccess = Restrict /var/firebird

3. создать базу

$/opt/firebird/bin/isql -u SYSDBA - p <password>
SQL>connect '/var/firebird/test.fdb';
SQL>quit;

В практической работе с сервером Firebird могут пригодиться некоторые инструменты:
- changeDBAPassword.sh - скрипт для смены пароля SYSDBA.
- createAliasDB.sh - скрипт для создания пустой базы данных, создания алиаса и его записи в aliases.conf;
Пример использования:

$createAliasDB.sh <dbname> <dbpath>

IV. Если что-то пошло не так...

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

V. Установка Firebird на платформах Solaris, FreeBSD, Debian

На момент написания статьи установка Firebird 2.5 для операционных систем Solaris, FreeBSD, Debian пока не доступна, используйте предыдущие версии Firebird, например 2.0.

10 февраля 2013 г.

(c) Милькевич Тарас
Polaris-Soft team,
www.polaris-soft.ru

Литература:

1. Firebird 2 Migration & Installation, Helen Borrie (Collator/Editor) 6 April 2008 - Document v. mi210_20 - for Firebird 2.1.
2. Мир Interbase. Архитектура, администрирование и разработка приложений баз данных в Interbase/Firebird/Yaffil. Издание 2-е, дополненное. Алексей Ковязин, Сергей Востриков, КУДИЦ-ОБРАЗ, Москва 2003.