Автоматизированное место врача от Leybasoft®
Главная » 2015 » Ноябрь » 30 » Debian 8.2: как я ставил SuperClassic Firebird
7:18 PM
Debian 8.2: как я ставил SuperClassic Firebird

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

Примечание: в процессе написания этой заметки были использованы ценные замечания и советы из этой ветки форума SQL.ru.

Итак, для начала я поставил Debian 8.2 с DVD 1, взятого с официального сайта. В качестве рабочего стола поставил себе классический GNOME.

Поскольку я - хозяин своего компа и ничего ценного на тестовой ОСи у меня нет, то не стану обращать внимание на нарушение безопасности системы в результате следующих телодвижений. Если вы придерживаетесь другой точки зрения, можете не читать ниже написанное.

Для понимания того, что мы будет устанавливать дальше, давайте сразу определимся с понятиями: существует несколько архитектур сервера Firebird (ClassicServer, SuperServer и SuperClassic). Подробнее об их отличиях можно почитать, например, тут. И если резюмировать отличия, то их кратко можно выразить так (автор - Симонов Денис):


SS - один процесс на все коннекты, общий кэш, буфер сортировки общий
CS - на каждый коннект по процессу, раздельный кэш, буфер сортировки раздельный
SC - один процесс на все коннекты, раздельный кэш, буфер сортировки общий


Есть еще одна разновидность Firebird - embedded сервер, по выражению Кузьменко Дмитрия (aka kdv)", это фактически Classic в виде склеенных приложения и процесса классика. А еще, у двух разных ... embedded в отношении БД нет общего кэша сортировки и одного адресного пространства".

Так вот, речь ниже пойдет об установке ClassicServer.

 

1. Подготовительные работы.


Для начала необходимо дать права sudo для текущего юзера (ниже по тексту это <user>). По фен-шую достаточно сделать так:

<user>@leyba-debian: su
Пароль:
root@leyba-debian: adduser <user> sudo

Но при попытке установить что-то из-под текущего юзера при помощи команды sudo ОСь ругнется, что пользователь <user> отсутствует в файле sudoers. Поэтому правим его ручками (хотя все олдфаги от Линукса говорят, что это серьезная дыра в безопасности):

<user>@leyba-debian: su
Пароль:
root@
leyba-debian: sudo visudo


После этого visudo откроет искомый файл для редактирования. Вносим туда одну строку, позволяющую забыть о воде пароля (либо в конец файла, либо после строки root):

<user> ALL=(ALL) NOPASSWD:ALL
Жмем <Ctrl+X>, редактор сначала попросит нажать кнопку <Y> для подтверждения изменений, затем <Enter>, чтобы сохранить файл под именем sudoers.tmp. Перелогиниваемся и получаем нашу учетку без необходимости вводить пароль.

Идем дальше. Чтобы ОСь могла загружать из сети пакеты, необходимо указать сервера, откуда это можно делать. Для это придется отредактировать файл /etc/apt/sources.list:
<user>@leyba-debian:~$ su
Пароль:
root@leyba-debian:/home/<user># nano /etc/apt/sources.list

и после строки: deb-src http://security.debian.org/ jessie/updates main contrib добавить ссылку на любимый сервер (полный список серверов можно найти, например, тут)

deb http://ftp.ru.debian.org/debian jessie main


После чего сохраняем файл выше указанным способом.

Поскольку ClassicServer запускается только в момент подключения к базе данных (за это ответственны "системные суперсерверы" inetd или xinetd, причем предпочтительнее использование второго), то проверим наличие одного из них (xinetd).

<user>@leyba-debian:~$ su
Пароль:
root@leyba-debian:/home/<user># /etc/init.d/xinetd status
bash: /etc/init.d/xinetd: Нет такого файла или каталога

 


Ба-а-а-а!!! Он не только не запущен, но и не установлен! Исправляем это недоразумение:

root@leyba-debian:/home/<user># apt-get install xinetd


Проверяем, запущен ли он:

root@leyba-debian:/home/<user># /etc/init.d/xinetd status
● xinetd.service - LSB: Starts or stops the xinetd daemon.
 Loaded: loaded (/etc/init.d/xinetd)
 Active: active (running) since Чт 2015-12-03 12:49:11 MSK; 54s ago
 CGroup: /system.slice/xinetd.service
 └─2397 /usr/sbin/xinetd -pidfile /run/xinetd.pid -stayalive -inetd...

дек 03 12:49:11 leyba-debian xinetd[2397]: removing daytime
дек 03 12:49:11 leyba-debian xinetd[2397]: removing daytime
дек 03 12:49:11 leyba-debian xinetd[2397]: removing discard
дек 03 12:49:11 leyba-debian xinetd[2397]: removing discard
дек 03 12:49:11 leyba-debian xinetd[2397]: removing echo
дек 03 12:49:11 leyba-debian xinetd[2397]: removing echo
дек 03 12:49:11 leyba-debian xinetd[2397]: removing time
дек 03 12:49:11 leyba-debian xinetd[2397]: removing time
дек 03 12:49:11 leyba-debian xinetd[2397]: xinetd Version 2.3.15 started ....
дек 03 12:49:11 leyba-debian xinetd[2397]: Started working: 1 available s...e
Hint: Some lines were ellipsized, use -l to show in full.


Теперь для работы с базами Firebird нам понадобится инструмент визуального администрирования (под консоль или в случае сомнений лучше использовать isql, идущий в штатном комплекте к птичке). Под никсы, ИМХО, лучшим является FlameRobin (а вот под винду - IBExpert). Итак ставим его:

<user>@leyba-debian:~$ su
Пароль:
root@leyba-debian:/home/<user>#apt-get install flamerobin
После окончания установки эту программку можно найти в меню в подпункте "Программирование"


 


2. Установка сервера.

Подготовительная работа проведена. Поэтому теперь можно приступить непосредственно к установке Firebird на нашу ОСь.
Скачиваем последний стабильный релиз ClassicServer i386 (на момент написания текста это версия 2.5.5) с официальной страницы проекта и распаковываем его штатными средствами куда-нибудь в домашнюю папку, например в папку /home/<user>/downloads (мы помним, что <user> - наша учетка, так ведь?). Для простоты дальнейшей работы в консоли я переименовал распакованную папку, например, в fb_255_cs.

<user>@leyba-debian:~$ cd ~/downloads/fb_255_cs
<user>@leyba-debian:~/downloads/fb_255_cs$ sudo ./install.sh
[sudo] password for <user>:

Firebird classic 2.5.5.26952-0.i686 Installation

Press Enter to start installation or ^C to abort  

Жмем <Enter>

Extracting install data
Please enter new password for SYSDBA user:

Введем пароль для SYSDBA (мы ведь помним, что адреса, явки, логины и пароли для этого экземпляра сервера хранятся файле security2.fdb, да?):

Please enter new password for SYSDBA user: cooladmin
Install completed
<user>@leyba-debian:~/downloads/fb_255_cs$

Теперь добавим текущего пользователя <user> в группу firebird, чтобы он мог (помимо root'a) подключаться к базам данных:


<user>@leyba-debian:~$ su
Пароль:
root@leyba-debian:/home/<user># usermod -G firebird <user>


Проверим, попали ли мы туда:


root@leyba-debian:/home/<user># grep firebird /etc/group
firebird:x:84:<user>


Теперь проверяем содержимое файла /etc/xinetd.conf (который является конфигурационным файлом для "суперсервера" xinetd, который, в свою очередь, управляет соединениями ко многим сервисам, в нашем случае, Firebird).
Xinetd.conf у меня сейчас имеет следующее содержание:

# Simple configuration file for xinetd
#
# Some defaults, and include /etc/xinetd.d/

defaults
{

# Please note that you need a log_type line to be able to use log_on_success
# and log_on_failure. The default is the following :
# log_type = SYSLOG daemon info

}

includedir /etc/xinetd.d


Смотрим каталог /etc/xinetd.d и находим там файлик firebird со следующим содержимым:

service gds_db
{
 disable = no
 flags = REUSE
 socket_type = streame
 wait = no
 user = firebird
#These lines cause problems with Windows XP SP2 clients
#using default firewall configuration (SF#1065511)
# log_on_success += USERID
# log_on_failure += USERID
 server = /opt/firebird/bin/fb_inet_server
}


Опции файла можно посмотреть здесь

Примечание: если перед установкой сервера Firebird не были установлены ни inetd, ни xinetd, то скрипт Firebird сначала выдаст предупреждение, а потом создаст файл /etc/inetd со следующим содержимым:

gds_db stream tcp nowait.30000 firebird /opt/firebird/bin/fb_inet_server # Firebird Database Remote Server

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

Проверить порт, который будет "слушать" наш сервис gds_db можно тут /etc/services. Если открыть его в редакторе, то можно увидеть две искомые строки

gds-db          3050/tcp        gds_db          # InterBase server
gds-db          3050/udp        gds_db

Ну, и напоследок, дадим текущей учетке и группе firebird права на папку, где будет лежать у меня база firebird (опция -R позволит раздать права на вложенные файлы, в том числе и вновь создаваемые):

<user>@leyba-debian:~$ su
Пароль:
root@leyba-debian:/home/<user># chown -R firebird:<user> /home/<user>/test_db


Вот и все. Коннектимся к нашей базе (вот тут-то нам и пригодится FlameRobin) и получаем результат:



 

регистрируем имеющуюся базу


Выбираем из расшаренной папки базу и вводим параметры коннекта


 

Жмем "Save", получаем желанный результат.


И напоследок. Для оптимальной работы сервера нужна оптимальная настройка параметров. Готовые оптимизированные конфиги, подходящие в большинстве случаев, можно раздобыть тут.


На этом можно перевести дух. Далее пойдем изучать суперсервер и embedded (встроенный) сервер Firebird.





 
Категория: Firebird | Просмотров: 4043 | Добавил: leyba | Рейтинг: 0.0/0
Всего комментариев: 0
avatar