одновременный запуск двух fb15 на разных портах

Администирование клиентской и серверной части InterBase, Firebird, Yaffil. Настройка файла конфигурации и т.п.

Модераторы: kdv, Alexey Kovyazin

Ответить
mx3
Сообщения: 7
Зарегистрирован: 23 май 2006, 16:27

одновременный запуск двух fb15 на разных портах

Сообщение mx3 » 23 май 2006, 18:56

Извините, если об этом говорилось кучу раз :-)
Сами понимаете, что если я набрал столько текста, то эта проблема мне встала поперек горла.

Вопрос ко всем и к kdv в частости (поскольку его статья не помогла).

Пытаюсь запустить ДВЕ ОДИНАКОВЫХ ВЕРСИИ Firebird (1.5.3) на одном компьютере разработчика.
Я так понимаю, что эта проблема "иногда" актуальна не только для одинаковых версий.

Попытался расписать проблему настолько подробно, наколько возможно :-) - возможно получилось более подробно, чем нужно.
В общем прошу не обижаться на тавтологию.

Итак имеется:
1) Firebird 1.5.3
2) Разрабатывается продукт, при инсталяции которого будут установлены клиентские программы и сервер по умолчанию(DefaultInstance:3050) - на любой NT платформе
3) имеем место разработчика - w2k sp4 (в принципе тоже любая NT платформа)

Хочется:
1) Иметь девелопмент Firebird Сервер, который не будет никуда исчезать при инсталляциях и деинсталяциях

Сразу оговорюсь, что разные сервера для разработки и отладки на разных компьютерах меня в принципе устраивают вполне.
Какими компьютерами при этом они являются, реальными и виртуальными(vmware) - мне все равно.
Но все таки хочется запустить ДВА Firebird-a ОДИНАКОВОЙ версии на одном компьютере.

Разрабатываю систему, "как обычно" - (DefaultInstance:3050) / IBExpert

Мешает то, что в процессе тестирования необходимо сравнительно часто проверять инсталяцию "полного продукта" (со "свежим" Firebird - свежие aliases.conf, firebird.conf)
- инсталяция идет по умолчанию в DefaultInstance:3050 - как обычно, как и будет(должно быть) в "окончательной" версии.
В моем случае это подразумевает "временную" остановку(удаления) основного "Development" сервера и соответствующей базы/(баз!!!!).

Это мешает мне разрабатывать новые версии данного продукта или других продуктов вообще, поскольку DEVELOPMENT сервер и его соответствующий .conf "на время" умирают при новой инсталяции.
тоесть я не могу одновременно работать с несколькими базами, поскольку установка продукта "убивает" мой девелопмент сервер и его конфигурацию (алиасы).

Тоесть мне желательно иметь сервер и базы на каком-то нестандартном порту, чтобы всякие другие инсталляции ( "стандартные" ) - мне не мешали.

Проверил обычную инсталяцию "install_super.bat" с измененными параметрами в "firebird.conf" и "aliases.conf".
Изменил порт на 3051 - IBExpert работает - мне в принципе больше ничего и не надо.
Все меня устраивает, за исключением того, что это - DefaultInstance, которая убивается моим инсталятором.

____________________________________
нижеприведенная статья
http://www.ibase.ru/devinfo/inst_manual.htm
по данной теме дала мне немного, а точнее ничего - не удалось запустить "такой" сервер, на который никак не будут влиять другие установки firebird-а по умолчанию.
_____________________________________


Экскремент был следующим:

Снес Delault Firebird

Разархивировал fb153 в D:\_dev\firebird153_\ - сервер для разработки (который никогда и никуда исчезать не должен)
Изменил
D:\_dev\firebird153_\firebird.conf
CreateInternalWindow = 0
RemoteServicePort = 3055

запускал и так
ibguardinst.exe INSTALL D:\_dev\firebird153_\bin\fbguard.exe
сервис гвардиана "InterBase Guardian":
1) установился
2) стартовал (по моей команде из Services.msc)
3) IBExpert : can't format message 13:98 - message file C:\Program Files\HK-Software\firebird.msg not found - Unable to complete network request to host "localhost". Failed to establish connection.
4) порт 3055 никто не слушает (netstat -a)

запустил так:
ibguardinst.exe INSTALL D:\_dev\firebird153_\bin\fbserver.exe
на случай, если kdv ошибся в статье при указании того, что (какой EXE) должно быть зарегистрировано.

опять netstat -a | grep 3055
выдает полный ноль



Куда копать?

ЗЫ: один раз случайно вродебы получилось установить, но я не понял закономерности и не проследил последовательности установки :-)

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 23 май 2006, 19:26

Тоесть мне желательно иметь сервер и базы на каком-то нестандартном порту
для девелопмента - да. то есть. тестовые инсталляции-деинсталляции - стандартный порт. А твоя нестандартная инсталляция - просто запускаемый из абстрактного каталога FB с измененным номером порта в конфиге.
Проверил обычную инсталяцию "install_super.bat" с измененными параметрами в "firebird.conf" и "aliases.conf".
типа, посмотреть внутрь bat нельзя? :)
запускал и так
блин, ну зачем я все время пишу, что ДЕВЕЛОПЕРУ сервер КАК СЕРВИС нафиг не нужен??? fbserver -a, и все. Ты его заодно будешь видеть в таскбаре, и можешь останавливать и запускать когда вздумается.
и для твоего девелоперского сервера на порту 3055 (а например на 3070 слабо? чего вы жметесь с номерами портов?) кроме изменения порта и createinternalwindow в firebird.conf больше ничего менять не надо.
ibguardinst.exe INSTALL
нельзя пускать даже instreg/instsvc для девелоперского сервера. Да и не надо.

Делаешь так -
кидаешь архив с файлами FB в любую папку. Например
C:\DevSrv
потом, правишь firebird.conf - указываешь RemoteAuxPort = 3070
пускаешь
c:\DevSrv\bin\fbserver -a

ВСЕ. Сервак работает по порту 3070.

коннект к нему, разумеется, через localhost/3070, а не через localhost.

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 23 май 2006, 19:32

так. секунд. сейчас разберемся.

mx3
Сообщения: 7
Зарегистрирован: 23 май 2006, 16:27

Сообщение mx3 » 23 май 2006, 19:35

в принципе я не против запускать девелопмент сервер через -а,
но он как бы на то и девелопмент, чтобы работать постоянно

Добавлено:
и у меня инсталятор NSIS при установке делает то, что в install_super.bat
конечно я видел содержимое этого бат файла.
проблема втом, что у комманд
instreg
instsvc
нету имен сервисов в комбинации с путями к каталогу bin

Еще раз добавлено:
поэтому пытался использовать указанный Вами ibguardinst.exe

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 23 май 2006, 19:46

тот мой ответ, в принципе, можно удалить.
Потому что, как только instreg прописывает ключ FB в реестр, все последующие копии FB начинают открывать конфиг оттуда.
Тут только если Еманов ответит, что это за фигня (почему FB не может брать конфиг просто из каталога выше bin, а если там его нет, то в defaultinstance), будет понятно.

Запустить два FB 1.5 можно только если НЕ стартовать instreg. То есть, если в реестре не будет записи про FB.
Соответственно, всякие "инсталляции-деинсталляции" FB идут лесом.

И. В этом случае не надо мудрить, надо просто использовать поочередный запуск серверов. Создал свой C:\FBDevel, ну и когда его надо запустить, делай instsvc stop, instsvc remove, instreg remove для "тестируемого" проинсталлированного сервера, а потом instreg install для C:\FBDevel. ну и fbserver -a.
то есть, все как описано в статье про поочередный запуск, как я и работаю с IB 7.x, FB 1.x, FB 2.

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

mx3
Сообщения: 7
Зарегистрирован: 23 май 2006, 16:27

Сообщение mx3 » 23 май 2006, 19:54

перезапускать fb сервер при разработке мне обычно не нужно.

только редкие остановки , чтобы забрать последний fdb

у меня в проекте в комплекте к fb идут моих - 3 сервиса и 3 клиентских програм GUI

мне ОЧЕНЬ редко приходится останавливать firebird, поэтому я хочу, чтобы он работал сервисом, хотя можно сказать:
1) "ну хотишь - хоти" :-)
2) и поскольку я не заказчик - могу стартовать и останавливать, как и когда хочу

mx3
Сообщения: 7
Зарегистрирован: 23 май 2006, 16:27

Сообщение mx3 » 23 май 2006, 19:57

спасибо за ответ,
хотя мне кажется, что на него должен быть вполне нормальный ответ в стиле "ibguardinst"

Dimitry Sibiryakov
Заслуженный разработчик
Сообщения: 1436
Зарегистрирован: 15 сен 2005, 09:05

Сообщение Dimitry Sibiryakov » 24 май 2006, 09:24

Во-первых, сразу возникает вопрос: а зачем "девелоперский" FB держать на сервере? Поставил себе на комп и живи с ним сколько угодно.
Во-вторых, я хоть и не Еманов, но могу посоветовать использовать переменную окружения FIREBIRD. У нее приоритет выше чем у настроек в реестре.

dimitr
Разработчик Firebird
Сообщения: 888
Зарегистрирован: 26 окт 2004, 16:20

Сообщение dimitr » 24 май 2006, 12:39

для multi-instance установки *не надо* делать две вещи:
- устанавливать второй сервер как сервис
- прописывать оба в реестре

при соблюдении этих двух правил все прекрасно работает.

mx3
Сообщения: 7
Зарегистрирован: 23 май 2006, 16:27

Сообщение mx3 » 24 май 2006, 12:56

dimitr писал(а):для multi-instance установки *не надо* делать две вещи:
- устанавливать второй сервер как сервис
- прописывать оба в реестре

при соблюдении этих двух правил все прекрасно работает.
спасибо. НО

запустил девелопмент сервер через -a и не увидел иконки на таскбаре, поэтому нормально потушить сервер похоже не могу.

w2k sp4

риторический вопрос: если я менял базу, а потом убью сервер через taskManager, что что я получу в базе???
я так понимаю, что если я укажу CreateInternalWindow = 0,
то при shutdown "fbserver -a" тоже нормально не завершится

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 24 май 2006, 13:16

запустил девелопмент сервер через -a и не увидел иконки на таскбаре
потому что CreateInternalWindow = 0.
риторический вопрос: если я менял базу, а потом убью сервер через taskManager, что что я получу в базе???
это не риторический вопрос, а ... Отсоединись от сервера, и прибей его в taskmanager. Если хочешь убедиться, что база НЕ открыта сервером - запусти ProcessExplorer с sysinternals.com, посмотри на файлы, открытые процессом fbserver.exe.
я так понимаю, что если я укажу CreateInternalWindow = 0,
то при shutdown "fbserver -a" тоже нормально не завершится
1, а не 0. По меню shutdown из таскбара серевер нормально завершится.

hvlad
Разработчик Firebird
Сообщения: 1244
Зарегистрирован: 21 мар 2005, 10:48

Сообщение hvlad » 24 май 2006, 14:19

dimitr писал(а):для multi-instance установки *не надо* делать две вещи:
- устанавливать второй сервер как сервис
...при помощи instsvc
Можно создать сервис любым другим способом и задать ему любое другое имя

mx3
Сообщения: 7
Зарегистрирован: 23 май 2006, 16:27

Сообщение mx3 » 24 май 2006, 14:28

hvlad писал(а):
dimitr писал(а):для multi-instance установки *не надо* делать две вещи:
- устанавливать второй сервер как сервис
...при помощи instsvc
Можно создать сервис любым другим способом и задать ему любое другое имя

я начал эту тему о fb153
О какой версии говрите Вы?

Код: Выделить всё


D:\_dev\firebird153_\bin>instsvc.exe

Usage:
  instsvc i[nstall] [ -s[uperserver]* | -c[lassic] ]
                    [ -a[uto]* | -d[emand] ]
                    [ -g[uardian] ]
                    [ -l[ogin] username [password] ]

          sta[rt]   [ -b[oostpriority] ]
          sto[p]
          q[uery]
          r[emove]

  This utility should be located and run from the 'bin' directory
  of your Firebird installation.

  '*' denotes the default values
  '-z' can be used with any other option, prints version
  'username' refers by default to a local account on this machine.
  Use the format 'domain\username' or 'server\username' if appropriate.
где тут можно задать имя?

Ответить