Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Firebird, Interbase > Установка нескольких серверов Firebird


Автор: Golden Hands 23.6.2008, 13:22
Имеем два бинарных сервера Firebird, которые нужно зарегистрировать на одной машине.

Примерный состав файлов:

Firebird_2_0 - firebird.conf, firebird.msg, security2.fdb
Firebird_2_0\bin - все файлы (как в стандартной установке)
Firebird_2_0\intl - все файлы
Firebird_2_0\lib - все файлы
Firebird_2_0\UDF - все файлы


1) Нужно разнести сервера по разным портам. 2) Нужно зарегистрировать каждый сервер под своим именем. 3) Удалить информацию о Firebird из реестра. Совсем.


1) В firebird.conf находим строчку:
     
Цитата
RemoteServicePort = 3050

   Меняем это значение у каждого сервера. Например, первому можно назначить порт 3050, второму - 3051.
   После этого строка подключения на клиентах должна ОБЯЗАТЕЛЬНО содержать номер порта того сервера, с которым устанавливается соединение. Например:
      
Цитата
192.168.0.1/3051 


2) Для регистрации Firebird как сервера используем утилиту SC.EXE, включенную в поставку Windows, начиная с версии XP. Расположение -  
Цитата
%windir%\%systemdir%\sc.exe
. При регистрации используются те же параметры, что и при родной установке Firebird (архитектура, период рестарта при сбое и т.д.).

 
Цитата
sc.exe create Firebird_server_1 binpath= "Firebird_2_0_v1\bin\fbserver.exe -s" start= auto displayname= Firebird_server_1
sc.exe create Firebird_server_2 binpath= "Firebird_2_0_v2\bin\fbserver.exe -s" start= auto displayname= Firebird_server_2

sc.exe failure Firebird_server_1 reset= 10 actions= restart/1000
sc.exe failure Firebird_server_2 reset= 10 actions= restart/1000

sc.exe start Firebird_server_1
sc.exe start Firebird_server_2

;sc.exe stop Firebird_server_1     -     останов и удаление сервиса, пригодится при деинсталляции
;sc.exe delete Firebird_server_1


3)  
Цитата
Firebird_2_0_v1\bin\instreg.exe r
   Firebird_2_0_v2\bin\instreg.exe r 



Я таскаю со своим приложением файл SC.EXE, взятый из Resource Kit for Windows 2000. Если в системной директории нет этого файла, то я копирую его туда. Можно обойтись и без этого, а запускать все команды из папки, где он лежит.

Важно не забыть, что теперь, например, нужно использовать не  
Цитата
Firebird_2_0_v1\bin\instsvc.exe start 
, а  
Цитата
sc.exe start Firebird_server_1
. То есть все вызовы обращаются к системному сервису, а не к исполняемому файлу Firebird.

Автор: Akella 24.9.2009, 11:04
http://www.ibase.ru/devinfo/inst_manual.htm

Автор: Akella 7.10.2009, 13:07
thnx to Akina
http://akina.hop.ru/firebird.php3

Автор: tm1 12.12.2011, 21:52
Простой cmd-файл подходящий для установки версий Firebird от 1.5 до 2.5 на Windows XP/2003/7/2008 (x86/64) 

1) установка службы с запуском из любого каталога (с использованием instsvc.exe и поддержки instance)
2) с запуском службы от имени простого пользователя с именем Firebird (держать можно хоть в группе "Гости")
3) указанием необходимых для него прав на NTFS  (с использованием cacls.exe)
4) хоть сколько разных версий параллельно в реестре  (с использованием reg.exe)
5) open-source, feel free to modify (GPL)

Особенности использования:

Закинуть instsvc-fb25.cmd в подкаталог bin каталога, где установлен Firebird, 
например "C:\Program Files (x86)\Firebird\Firebird_1_5\bin\"

UPD: Хотя я тут попробовал и оказалось, что cmd-файл закидывать лучше просто
в каталог, где установлен Firebird (и лежит файл firebird.conf),
например "C:\Program Files (x86)\Firebird\Firebird_1_5\"
так как тогда в реестре пропишется "правильно" путь к "instance", без ".." в пути,
и будет срабатывать указание в firebird.conf относительных путей, например для UDF

то есть если cmd-файл запускать из подкаталога bin, то в реестре будет (Windows 64-bit для Firebird 32-bit)

Код

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Firebird Project\Firebird Server\Instances
    DefaultInstance    REG_SZ    C:\Program Files (x86)\Firebird\Firebird_1_5\bin\..
    SecondInstance    REG_SZ    C:\Program Files (x86)\Firebird\Firebird_2_5\bin\..


а так будет, если запускать из каталога, где установлен Firebird

Код

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Firebird Project\Firebird Server\Instances
    DefaultInstance    REG_SZ    C:\Program Files (x86)\Firebird\Firebird_1_5
    SecondInstance    REG_SZ    C:\Program Files (x86)\Firebird\Firebird_2_5


Если использовать для параллельной работы не архивы с дистрибутивом (Firebird*.zip), а установщики (Firebird*.exe), 
то желательно ставить сначала раннюю версию (1.5), удалить его службу (сами файлы оставить конечно), 
а затем поздние (> 1.5) в разные каталоги конечно, также удаляя их службы, так как все они ставятся как DefaultInstance.

Команда для удаления экземпляра DefaultInstance

Код

instsvc-fb25.cmd remove


или

Код

"C:\Program Files (x86)\Firebird\Firebird_1_5\instsvc-fb25.cmd" remove DefaultInstance


Затем установить службы, при этом надо ставить 1.5 как экземпляр по умолчанию (DefaultInstance), 
так как он по другому сам не ставится (через instsvc.exe)

вот так например суперсервер 1.5

Код

"C:\Program Files (x86)\Firebird\Firebird_1_5\instsvc-fb25.cmd" install-ss DefaultInstance


затем классик 2.0

Код

"C:\Program Files (x86)\Firebird\Firebird_2_0\instsvc-fb25.cmd" install-cs SecondInstance


а дальше суперклассик 2.5

Код

"C:\Program Files (x86)\Firebird\Firebird_2_5\instsvc-fb25.cmd" install-im ThirdInstance


само собой не забудьте указать разные значения портов для соединений в файлах firebird.conf

параметры

RemoteServicePort = 3050
RemoteServicePort = 3051
RemoteServicePort = 3052

и рекомендую для работы Event-ов

RemoteAuxPort = 3060
RemoteAuxPort = 3061
RemoteAuxPort = 3062

Для баз установите права доступа на NTFS сами, 
пользователю под которым запускается служба (его имя в cmd-файле "Firebird", можно менять там же) 
надо дать права записи на файл базы.

Кажется "в этот раз" ничего не забыл ;)

UPD: скрипт обновился, старая версия 0.2.4 прикреплена здесь для истории,
а новая версия 0.2.5 сообщением ниже.

Устранено надеюсь 3 бага smile

Первый баг был в добавлении конец пути к каталогу Firebird двойной кавычки вместо обратного слэша
при сохранении в реестре. Из-за этого Firebird 1.5 не запускался, так как не мог найти файл
"firebird.conf". А вот Firebird 2.5 работал при таком неправильном" указании пути.

Второй баг был в добавлении пользователя Firebird для запуска службы от его имени, в Windows 7
почему-то не сработало при установке скриптом с "нуля", сейчас переделано. Хотя я думаю, что
проблема не в Windows 7 была.

Если что добавляем пользователя вручную в "админской" командной строке например так :

Код

net user Firebird password1234 /add


ну или через GUI ("mmc compmgmt.msc"), группы для запуска достаточно "Гости", право на запуск службы
добавляет сам instsvc.exe  от Firebird 1.5 и выше.

Не забудьте про настройки "устаревание пароля" и "запрет смены пароля самим пользователем".

Также не забудьте поменять пароль пользователя Firebird, "зашитый" в самом cmd-файле.
Ну и потом запускаем сам скрипт из каталога, где установлен Firebird, как было выше описано.

Третий баг был в том, что я забыл (!), что в Firebird 1.5 нет параметра "-n" для "instsvc.exe".
Он всегда устанавливает службу с именем экземпляра "DefaultInstance". Сейчас, если имя передаваемое скрипту
в параметрах равняется "DefaultInstance", то оно не передается через параметр "-n" далее для "instsvc.exe".

Пока все на этом.

Автор: tm1 17.2.2012, 17:58
"Простой cmd-файл подходящий для установки версий Firebird от 1.5 до 2.5 на Windows XP/2003/7/2008 (x86/64)"

Новый скрипт "instsvc-fb25.cmd" версии 0.2.5

echo ----------------------------------------------------------------------
echo Firebird DBMS (1.5, 2.0, 2.5, greater) Windows Service installer ver. 0.2.5
echo .     This utility should be located and run from the 'bin' directory
echo .     of your Firebird installation.
echo ----------------------------------------------------------------------

...

Изменения описаны в сообщении выше smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)