Категории публикаций
Подписка на рассылку по Email
новости (подписчиков: 4)
комментарии (подписчиков: 2)

Отменить подписку
Популярные публикации
Интересный опрос
Что вас больше всего интересует?

Заработок в интернете
Радиоэлектроника
Программирование
Операционные системы
Информационная безопасность
Саморазвитие, лайфхак
Спорт
Другое
Поблагодарить автора
donate
1B4ZZ2PXUd9E7AqEB82AqFnkpk2bt5hQG7

Установка Firebird Server Classic 1.5 на Linux Ubuntu 12 (64-бита)

Размещено в категории: Linux

ubuntu logo titsВ данной заметке хочу тебе, мой читатель, поведать о том как поднять на 64-битной операционной системе Linux классический, уже устаревший сервер баз данных Firebird 1.5. Сразу отвечу на встречный вопрос: А зачем ставить версию 1.5 если есть 2я ветка и уже все стабильно на ней работает? - ответ прост:  Бывает такое что есть старый софт написанный под файрбьорд 1.5 и съехать на 2ю ветку нет возможности. Вот в таких случаях и приходиться искать разные варианты как завести старый софт в новом окружении и на новом оборудовании.

Я сам столкнулся с подобной проблемой, так как в компании где я работаю, написанное программное обеспечение работает под версией Firebird 1.5, а чтобы перейти на 2ю версию придется переписывать и тестировать столько всего что программистов нашего партнера-разработчика бросает в дрожь только от одной мысли о переходе на 2.х Firebird, да и наша компания жмет постоянно денег на оборудование, ресурсы...часто доходит до маразма...да Х с ними. Пришлось искать выход из ситуации самостоятельно. Будем поднимать классическую версию Firebird 1.5 на свежей ОС Linux Ubuntu 12, 64-битная сборка(так как памяти у меня на сервере 4+ Гектара).

 

Ну что ж, поехали... Предполагается что у тебя уже установлена Linux Ubuntu 12+ версии и твой сервер имеет выход в интернет.

Переходим в режим Бога(root):

$ sudo -i
password:

Обновляем дерево пакетов и их источников:

# apt-get update
# apt-get dist-upgrade

Устанавливаем набор библиотек для поддержки 32-битного софта в 64-битной среде и необходимые примочки для компиляции нашего сервера баз данных. Внимание! - ставить нужно в строго указанной последовательности.

# apt-get install libstdc++5
# apt-get install openbsd-inetd
# apt-get install lib32ncurses5
# apt-get install ia32-libs

Теперь будем компилировать из исходных кодов сам Firebird 1.5 Classic. Идем на оффициальный сайт на страничку загрузки пакетов и исходных кодов: http://www.firebirdsql.org/en/firebird-1-5/#Linux

Качаем оттуда при помощи Wget или другой качалки архив: FirebirdCS-1.5.6.5026-0.i686.tar.gz (Classic for Linux, compressed tarball) - текущая версия на момент написания этой статьи, в любом случае качаем самый свежий архив с исходниками.

Распаковываем и запускаем скрипт для компиляции всего этого добра... По окончании сборки будет задан запрос на смену суперпользователя для БД  - если у вас нет продуманных средств защиты сервера снаружи и внутри то в целях безопасности настоятельно рекомендую сменить логин и пароль по умолчанию(SYSDBA masterkey) на что нибуть другое, сложное к перебору.

# tar xzvf FirebirdCS-1.5.6.5026-0.i686.tar.gz
# cd FirebirdCS-1.5.6.5026-0.i686
# ./install.sh

Теперь, когда установка прошла успешно и без ошибок, нужно дать знать операционной системе путь где лежат бинарные файлы и утилиты нашего сервера БД, например чтобы можно было вызывать gbak(бекап/восстановление баз из консоли), gfix(ремонт БД) без указания полного пути:

# nano /etc/profile

Добавляем в конец файла строчку:

PATH=$PATH:/opt/firebird/bin

Чтобы новый путь вступил в силу нужно разлогиниться и потом наново залогиниться на консоли.

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

# reboot

Проверяем слушает ли наш сервер БД порт 3050:

# netstat -na | grep 3050

Если строчка, приведенная ниже, присутствует - значит все в порядке, сервер готов принимать соединения:

tcp  0  0 0.0.0.0:3050 0.0.0.0:*  LISTEN

Подключаемся Телнетом к порту 3050 и проверяем ответит-ли нам сервер БД:

# telnet localhost 3050

Если все работает то должны увидеть следующее:

Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.

Создадим тестовую пустую базу данных(логин пароль я не менял):

# isql -user SYSDBA -pass masterkey

Войдя в режим запросов выполняем следующий запросик:

CREATE DATABASE '/tmp/TEST.FDB' page_size 8192;

Чтобы выйти нужно набрать quit; и потом Ентер, после этого вернемся в командную строку.

Подключимся к новосозданной БД:

# isql -user SYSDBA -pass masterkey /tmp/TEST.FDB

Выполняем запрос:

SELECT * FROM RDB$RELATIONS;

В результате на экран должно быть выведено множество данных, если так и случилось то это значит что все связано и работает. Отсоединимся от базы и удалим тестовую БД чтобы не захламлять /tmp :

# rm /tmp/TEST.FDB

На этом все, у вас теперь есть рабочий сервер баз данных Firebird 1.5 на современной ОС Linux Ubuntu 64bit, с чем я вас и поздравляю!

 (0/5) голосов: 0   просмотров: 1455


Тематика:  linux  firebird  server

Комментарии к публикации (5)
mocha 1 mocha 
03 Апрель 2013 22:32

Спасибо за мануал. Сделал как написано (даже 3 полных инсталляции).

Вот что не совпадает:
1) "isql -user SYSDBA -pass masterkey localhost" не работает потому что isql не находит, он хранится в /opt/firebird/bin
2) если то же самое запускать из /opt/firebird/bin тогда получаем "Statement failed, SQLCODE = -902" и предупреждение что такой базы данных как localhost нет.

Остальное +/- так как вы предсказали но если пытаюсь подключиться из другого PC, тогда получаю опять sql message=-902
Если правильно понимаю - то это что-то неверно с Permissions. Пробовал по разному - не удается.

Порт открыт, firebird user/group создается автоматически, дал permision на /tmp/TEST.FDB и для root, и для firebird - но никак не работает.

Что я делаю нетак?

0 
ph0en1x 2 ph0en1x 
04 Апрель 2013 09:34

Здравствуйте, попробуем разобраться:

1) isql не находит потому что не прописан глобальный путь для поиска бинарных файлов или он не загружен.
Как я писал - редактируем файл /etc/profile и добавляем в конец строчку PATH=$PATH:/opt/firebird/bin , после этого нужно разлогиниться и потом залогиниться чтобы изменения вступили в силу и новый путь был добавлен для нашей сессии(добавил примечание в статью).

2) Перепроверил, действительно localhost не нужно указывать когда мы подключаемся локально - внес поправки в статью.
Теперь насчет SQLCODE = -902: причиной может быть неверно указанные логин или пароль. Также может быть что по какой-то причине не установились права на доступ к базе авторизации security.fdb - запускаем следующую команду и смотрим пермишны на файл:

# ls -la /opt/firebird/ | grep security.fdb

У меня команда выводит вот такие права

-rw-rw----  1 firebird firebird  647168 Apr  4 09:29 security.fdb

Если права отличаются то установите полный доступ на этот файл для пользователя и группы firebird и после этого уже пробуйте подключиться.

0 
mocha 3 mocha 
04 Апрель 2013 13:58

Спасибо за поддержку.
Я не очень разбираюсь в nix, поэтому и такие, наверное, глупые вопросы и проблемы.

1) проблема решена, сегодня все хорошо, хотя файл не менял и рестарт вчера делал много раз. Моя ошибка, наверное
 мой /etc/profile файл вот такой: link to pastebin

2) Для подключения использую Flamerobin из win-pc на той же подсети.
На сервере порт проверен и открыт как и писал, проверил из win-pc - тоже 3050 открыт.

permisions на security.fdb тоже все нормально:
-rw-rw---- 1 firebird firebird 643072 Apr 4 13:04 /opt/firebird/security.fdb
-rw-rw---- 1 firebird firebird 1097728 Apr 4 13:05 /tmp/TEST.FDB

Использую username SYSDBA и пароль masterkey, правильно? Что-то далаю я не правильно...

0 
ph0en1x 4 ph0en1x 
04 Апрель 2013 16:53

1) На вашем Win-PC должен быть установлен Firebird Client, проверьте!

2) Возможно сервер недоступен с вашего win-PC или порт на сервере закрыт файрволом. Вот как проверить:
На win-PC запускаем cmd.exe, кстати для Win7 программа telnet по умолчанию не установлена, нужно установить: Пуск - Панель управления - Программы и компоненты - Включение или отключение компонентов windows - Клиент Telnet (ставим галочку).

Пингуем(проверяем связь с хостом) наш сервер:

ping xxx.xxx.xxx.xxx

где xxx.xxx.xxx.xxx есть IP-адрес вашего сервера. Смотрим идут ли ответы от сервера и нет ли потерь.

Далее проверяем открыт ли нам снаружи порт 3050 на вашем сервере Firebird

telnet xxx.xxx.xxx.xxx 3050

Если все ОК то получим пустой экран, если нет то появится сообщение с ошибкой. В таком случае надо искать почему порт 3050 закрыт для внутренней подсети.

3) А вы верно настраиваете соединение во Flamerobin?
Нужно вот так: клацаем правой клавишей мыши(ПКМ) на Home и выбираем пункт Register Server, там где Hostname пишем IP-адрес сервера с Firebird, а там где Port Number - 3050, потом сохраняем. Теперь на новосозданной записи нового сервера клацаем ПКМ и выбираем Register Existing Database и дальше заполняете как на представленном вами скриншоте.

0 
modris 5 modris 
10 Апрель 2013 17:07

Проблема заключалась в Flamerobin. Когда регистрируешь сервер - не надо указывать порт,  тогда все хорошо. Если указал порт (3050) тогда = error.

0 

Добавить комментарий captcha