Установка клиента для поиска порта сервиса
Если вы установили ваш сервер с инсталляционными значениями по умолчанию (сервис gds db прослушивает порт 3050), то конфигурирование не требуется. Если сервер прослушивает другой порт или используется другое имя сервиса порта, то приложение клиента и/или хост-машины требуют некоторых изменений конфигурации, чтобы помочь клиентской библиотеке Firebird найти прослушиваемый порт.
Строка соединения, используемая клиентом, может включать информацию для опроса прослушиваемого порта сервера разными путями. Клиенты Firebird 1.5 могут использовать локальную копию firebird.conf. Изменения также могут понадобиться и для файла services.
Использование строки соединения
Если были изменены только номер порта или имя сервера, включите альтернативный номер порта или имя сервера в строку соединения. Это работает для всех версий Firebird.
Синтаксис соединения TCP/IP
Для соединения с сервером базы данных, названным hotchicken, связанным с портом 3050 и сервисом fb_db, строка соединения в POSIX должна быть следующей:
hotchicken/fb_db:/data/leisurestore.fdb
Если же сервер имеет имя gds db, а номер порта 3051, то строка соединения должна быть следующей:
hotchicken/3051:/data/leisurestore.fdb
В Windows строка соединения должна быть:
hotchicken/3051:D:\data\leisurestore.fdb hotchicken/fb_db:D:\data\leisurestore.fdb
Обратите внимание, что разделитель между именем сервера и портом наклонная черта, а не двоеточие. Двоеточие требуется в строке физического пути после имени диска.
Синтаксис соединений Wnet
В сети Wnet используйте стиль нотаций UNC:
\\hotchicken@3051\d:\leisurestore.fdb
или
\\hotchicken@fb_db\d:\leisurestore.fdb
Если номер порта или имя сервиса были изменены, то вам нужно создать запись в файле services.
Использование синтаксиса порта для алиасов базы данных
Для соединения через порт, не являющегося портом по умолчанию, с помощью алиаса базы данных добавьте номер порта или имя сервиса к имени сервера, а не к алиасу. Предположим, что алиас базы данных был сохранен в aliases.conf в виде:
hotstuff = /data/leisurestore.fdb
Строка соединения вашего приложения с сервером hotchicken будет следующей:
hotchicken/fb_db:hotstuff
или
hotchicken/3051:hotstuff
Использование копии firebird.conf
В Firebird 1.5 и выше вы можете скопировать на клиентскую сторону в корневой каталог Firebird файл firebird.conf и сконфигурировать RemoteServiceName или RemoteServicePort для помощи клиенту в поиске серверного порта.
Вы можете конфигурировать один из этих двух параметров; изменение значения другого параметра можно выполнить через строку соединения (см. ранее). Вы можете перекрыть значение только RemoteServiceName или RemoteServicePort без использования строки соединения.
Если вам не нужно передавать имя сервиса порта или номер порта в строке соединения, а сервер не использует значения по умолчанию для обоих параметров, вы можете конфигурировать оба RemoteServiceName и RemoteServicePort. Вы можете использовать эту технику, если вашему клиентскому приложению нужно сохранить возможность соединяться с серверами InterBase или Firebird 1.0.
Размещение данных Firebird на клиентах
Если вы используете на клиентских машинах файл firebird.conf, нужно, чтобы клиентская библиотека знала, где его найти. Вам необходимо создать корневой каталог Firebird и проинформировать систему о его местонахождении. Используйте для этого переменную среды FIREBIRD таким же образом, как и для серверов (см. главу 3). Клиенты Windows могут также использовать запись в реестре. При правильной установке клиента вы можете также сделать доступной локальную версию файла сообщений. Более подробную информацию см. в разд. "Инсталляция клиентов" в главе 7.
Конфигурирование файла services
Вам не нужно изменять запись сервиса порта для сервера или клиентов Firebird, если сервер использует значения по умолчанию, заданные при инсталляции - gds db для порта 3050. Если gds db - имя сервиса порта, который не может использовать любой другой порт, то он будет применять порт 3050 автоматически.
Если вы изменили номер порта или имя сервиса, вы должны сделать явные изменения для сервера и клиентов, чтобы отобразить эти изменения. В Linux и Windows данная информация хранится в файле services.
Местонахождение файла services
Местонахождение файла services на разных платформах:
* в Windows NT/2000/XP этот файл находится в C:\winnt\system32\drivers \etc\services;
* в Windows 95/98/ME файл находится в C:\Windows\services;
* в Linux/UNIX файл находится в /etc/services.
Записи файла services выглядят следующим образом:
gds_db 3050/t.cp # Firebird Server 1.5
Откройте файл в текстовом редакторе и добавьте новую строку или измените существующую запись gds db.
* Для сервера или клиента Firebird 1.0.x измените имя сервиса или номер порта для согласования с параметрами запуска сервера.
* Для сервера Firebird 1.5 или выше отредактируйте или добавьте нужную строку. Если у вас инсталлирован сервер Firebird 1.0 или InterBase на том же хосте, сохраните нужные для них записи и добавьте новую запись для согласования с параметрами запуска сервера.
! ! !
ПРИМЕЧАНИЕ. Если данная строка является последней в файле services, то рекомендуется в конце файла добавить пустую строку.
. ! .
Проверка соединения с помощью ping
Вы сделали все нужные изменения. Последняя проверка нужна, чтобы убедиться, что ваша клиентская машина может связываться с сервером. Вы можете быстро проверить, что ваш клиент TCP/IP связывается с сервером, используя в окне командной строки команду ping:
ping имя-сервера// подставьте имя, которое вы записали в файле HOSTS
Если соединение прошло хорошо, и все правильно сконфигурировано, вы увидите приблизительно следующее:
Pinging hotchicken [10.10.0.2] with 32 bytes of data
reply from 10.10.0.2: bytes=32 time<10ms TTL=128
reply from 10.10.0.2: bytes=32 time<10ms TTL=128
reply from 10.10.0.2: bytes=32 time<10ms TTL=128
reply from 10.10.0,2: bytes=32 time<10ms TTL=128
Нажмите комбинацию клавиш <Ctrl>+<C> для прекращения сообщений ping.
Если ping выдает ошибку
Если вы получили нечто вроде
Bad IP address hotchicken (Неверный IP-адрес hotchicken)
то имя хоста в записи файла для имя-сервера (в этом примере hotchicken) может быть отсутствует или неверно написано. К примеру, все идентификаторы в Linux/UNIX являются чувствительными к регистру. Другая причина может заключаться в том, что имя хоста вашего сервера просто не было сконфигурировано.
Если вы увидите:
Request timed out
то это означает, что адрес IP, на который ссылается имя хоста в вашем файле, не может быть найден в подсети. Проверьте следующее:
* нет ошибок в имени хоста в записи файла;
* сетевой кабель подключен, провод и контакты не повреждены и не ржавые;
* конфигурация сети позволяет направлять сетевой трафик между клиентом и сервером. Ограничения подсети или системы сетевой защиты могут препятствовать серверу в получении данных от клиента.
• Ограничения подсети: TCP/IP может быть сконфигурирован для ограничения трафика между подсетями. Если ваша клиентская машина является частью сложной сети или подсети, уточните у сетевого администратора, имеет ли она неограниченный доступ к серверу.
! ! !
ВНИМАНИЕ! WNet не позволяет направлять сетевой трафик между подсетями.
. ! .
• Система сетевой защиты (firewall): ваша проверка соединения может дать ошибку, если сервер базы данных находится под программной или аппаратной системой сетевой защиты, которая блокирует порт 3050 или сконфигурированный вами порт.
Проблемы с событиями
Несмотря на то, что каждый клиент соединяется с сервером через один канал, события Firebird - механизм обратной связи, который позволяет передавать сообщения о событиях назад клиентам с помощью триггеров и хранимых процедур, - используют произвольные доступные порты. В статических замкнутых сетях без внутренних систем сетевой защиты это обычно не вызывает проблем. В сетях, где существует множество подсетей, динамическая IP-адресация и строго сконфигурированная система сетевой защиты, передача событий может закончиться неудачей.
В Firebird 1.0.x ваш сетевой администратор должен установить некий способ, чтобы гарантировать наличие доступного порта, который всегда свободен, открыт и является статическим. Проблема может быть решена тем или иным образом в большинстве сетей.
Firebird 1.5 упрощает дело. Он делает возможным явно задавать IP-адрес в сети для трафика событий. Используйте параметр RemoteAuxPort в файле firebird.conf с целью статической установки IP-адреса для интерфейса (карта, маршрутизатор, шлюз и т.д.), который будет доступен для направления событий.
Более подробно о событиях Firebird см. главу 32.
Другие сетевые проблемы
Если дела идут плохо, вы можете найти немало советов в приложении 2.
Пора дальше
Куда дальше? Если у вас все в порядке с установками сети, и вам не терпится идти дальше, переходите прямо к главе 4 для изучения "основ", которые помогут вам соединиться с базой данных. Если же вы инсталлировали Firebird в мультипроцессорной системе, или вы подозреваете, что некоторые элементы конфигурации вашей машины могут вызвать проблемы, читайте дальше. Несмотря на то, что редко бывает нужным изменять конфигурацию Firebird для основных операций, в главе 3 описывается несколько опций конфигурации, которые могут помочь вам избавиться от головной боли.
ГЛАВА 3. Конфигурирование Firebird.
После инсталляции Firebird, как правило, готов к запуску. Конфигурирование не требуется или минимально. Если инсталляция и настройка сети прошли по плану, нет необходимости что-нибудь делать для нового пользователя, нужно лишь продолжать узнавать возможности Firebird и экспериментировать с программным обеспечением. Вы можете просто пропустить эту главу и перейти к следующей.
Тем не менее, это заявление может оказаться не совсем верным для некоторых платформ, или когда определенная операционная система заблокировала одну или две функции автоматического конфигурирования инсталляционного скрипта или программы. Данная глава будет интересна новым пользователям при решении некоторых из этих проблем.
В первом разделе главы указано, как конфигурировать переменные окружения и ресурсы файловой системы для использования Firebird. Здесь описывается проверка параметров конфигурации сервера, как их модифицировать в случае особого использования и требований совместимости.
Конфигурация на уровне базы данных
Эта глава посвящена конфигурации на уровне сервера. Один сервер Firebird может работать с несколькими базами данных одновременно. Каждая база данных может быть сконфигурирована таким образом, чтобы соответствовать предъявляемым к ней требованиям. Конфигурирование на уровне базы данных см. в главах 15 и 39.
Переменные окружения
Переменные окружения - глобальные установки системы, которые используются при первоначальной загрузке операционной системы. В Windows, Linux и в большинстве систем UNIX сервер Firebird распознает и использует некоторые переменные окружения, если они установлены. Процессы fbserver (архитектура Суперсервера) и fb inet server (архитектура Классического сервера) не распознают установок, которые ссылаются на сетевые ресурсы (диски и файловые системы), не управляемые физически серверной машиной.
Где устанавливаются переменные окружения
Windows
Тип переменных окружения и способ их установки меняется от одной версии Windows к другой. В табл. 3.1 показаны типы (если применимы) и способы установки значений переменным окружения.
Таблица 3.1. Установки переменных окружения для Windows
Версия Windows | Тип переменной | Описание | Наличие |
Windows 95/98 | He применяется | Используйте Блокнот и установите переменные окружения в autoexec.bat или config.sys. Формат установки: SET <имя переменному = значение переменному. Пример: SET FIREBIRD=C:\PROGRAM\FIREBIRD. Для просмотра всех текущих установок переменных окружения наберите SET в командной строке | Нет |
Windows NT/2000/XP | Переменные пользователя. Делает переменные доступными для приложений, запускаемых конкретным пользователем, если этот пользователь подключен | Используется для ограничения видимости переменных определенным пользователям. Диалоговое окно Свойства системы (System Properties), доступное через апплет Система (System applet) на Панели управления или через контекстное меню, появляющееся при щелчке правой кнопкой мыши на объекте Мой Компьютер и выборе элемента Свойства | Да |
Windows NT | -//- | Выберите Расширенное окружение | Новое (Advanced Environment | New) | |
Windows 2000/XP | -//- | Выберите Расширенное окружение | Переменные окружения | Новое (Advanced Environment | Variables | New) | |
Windows NT/2000/XP | Системные переменные. Доступны для всей системы (все сервисы, все пользователи). Команды SET записаны в командной строке. Переменные доступны только процессам, запущенным из командной строки | Используйте, если Firebird запущен как сервис. Выберите Расширенное окружение | Переменные окружения | Новое (Advanced Environment | Variables | New) или Редактировать (Edit), если доступно | Да |
-//- | -//- | Полезно для установки переменной окружения для временного использования (например, ISC_USERH ISC_PASSWORD для упрощения доступа из утилит командной строки при выполнении задач администратора). Используйте SET <имя_переменной> = <значение переменной> для установки значения переменной; используйте SET <имя_переменной> =, чтобы установить пустое значение | Нет |
POSIX
В Linux и UNIX самый простой путь установления переменных окружения - добавить их определения в общесистемный профиль значений по умолчанию.
Пользователь root также может:
* выдать команды setenv() из командной строки wu командного скрипта;
* для временного использования установить и экспортировать переменную из командной строки, например, export ISC_USER=SYSDBA.
ISC_USER и ISC_PASSWORD
Эффект этой опасной пары переменных окружения - дать доступ с правами пользователя SYSDBA к серверу Firebird и его базам данных через утилиты командной строки или клиентские приложения любому, кто может соединиться с хост-машиной. Они удобны для разработчиков.
Если вы не указываете имя пользователя и пароль при локальном соединении с базой данных, или когда вы запускаете утилиты командной строки, такие как gbak, gstat или gfix, Firebird проверяет, установлены ли переменные окружения ISC_USER и ISC PASSWORD. Если установлены, Firebird позволяет вам соединиться без указания пароля. Никогда не оставляйте эти переменные установленными на сервере, который содержит важные базы данных, если помещение, где располагается сервер, не является физически хорошо защищенным!
Переменная FIREBIRD (или INTERBASE)
Если установлена переменная окружения FIREBIRD (INTERBASE для версии 1.0.x), то она используется и при инсталляции, и в процессе работы на всех платформах для указания корневого каталога сервера Firebird. Если она присутствует, то перекрываются все другие установки - значения по умолчанию инсталляционного пакета, установки в реестре Windows, конфигурация в firebird.conf, значения глобальных путей операционной системы и т.д.
В процессе инсталляции она указывает на каталог, в котором должен быть установлен Firebird. Значение переменной должно задавать полный путь, который существует в физической файловой системе на хост-машине. При старте сервер читает значения в файле конфигурации firebird.conf (или ib_config/isc_config в версии 1.0.x), который должен находиться в каталоге, назначенном переменной FIREBIRD (ИЛИ INTERBASE). Этот каталог должен быть родительским для каталога bin, где размещаются двоичные файлы Firebird. Здесь также по умолчанию находятся файлы сообщений и замков: firebird.msg (interbase.msg) и hostname.lck.
! ! !
ПРИМЕЧАНИЕ. Вы можете указать другое размещение файлов firebird.msg (interbase.msg) и firebird.lck (interbase.lck), установив переменные окружения FIREBIRD_MSG (INTERBASE_MSG) и FIREBIRD_LOCK (INTERBASE_LOCK). см. следующие разделы.
. ! .
Если переменная FIREBIRD не установлена, будут использованы значения по умолчанию:
* /opt/firebird - для платформ Linux/UNIX;
* C:\Program FilesXFirebird (версия 1,0.x) или C:\Program Files\Firebird\Firebird_1_5 (версия 1.5) - для платформ Windows.
В табл. 1.2-1.5 в главе 1 указаны точные пути. Если Firebird установлен в каталоге, отличном от каталога по умолчанию, и задана переменная FIREBIRD, то клиентская библиотека будет читать значение переменной для определения пути инсталляции.
В Windows клиентские приложения могут также найти путь инсталляции, читая в реестре поле Defauitmstance, которое создается, если проводилась инсталляция только клиента.
HKEY_LOCAL_MACHINE\SOFTWARE\Firebird Project\Firebird Server\Instances
Более подробное обсуждение способов поиска сервером размещения этих файлов см. далее в этой главе в разд. "Корневой каталог Firebird". Информацию об установках только клиента см. в разд. "Установка клиентов" главы 7.
FIREBIRD_TMP
По умолчанию Firebird будет использовать глобальное пространство временных файлов, обычно задаваемое как системное значение по умолчанию переменной окружения TMP (обсуждается далее). Переменная окружения FIREBIRD_TMP (В версии 1.0.x - INTERBASE TMP) задает пользовательское размещение для файлов сортировки Firebird. Значение должно указывать полный путь, который существует в физической файловой системе хост-машины.
Доступны также другие способы определения размещения этих файлов. Конфигурирование параметра TempDirectories (TMP_DIRECTORY в версии 1.0.x) описано в разд. "Файл конфигурации Firebird" и разд. "Параметры для конфигурирования пространства временной сортировки" главы 36.