Долго я откладывал этот момент в дальний ящик, и, как оказалось, не зря. Учитывая, что вразумительных мануалов на эту тему в сети с гулькин нос и нет универсального алгоритма установки, я решил описать свой опыт тут - себе на память и другим в назидание :-р
Примечание: в процессе написания этой заметки были использованы ценные замечания и советы из этой ветки форума 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.
|