Firebird'ün farklı sürümlerini aynı anda çalıştırmak

Yazdığınız makaleleri ve üyelerimizin işine yarayacağını düşündüğünüz kodlarınızı gönderebilirsiniz. Bu foruma soru sormayın!
Cevapla
hgunes
Üye
Mesajlar: 27
Kayıt: 01 Nis 2007 03:40
Konum: Çorum

Firebird'ün farklı sürümlerini aynı anda çalıştırmak

Mesaj gönderen hgunes »

Merhabalar, Bu makale Stefan Heymann'a ait http://www.destructor.de sitesinden alıntıdır

Sunucu Bilgisayarda birden çok veya farklı Firebird Sürümlerini çalıştırmak

Bu makalede bir bilgisayarda birden fazla Firebird kopyasının çalıştırılması anlatılacaktır. Örn. İki farklı sürüm için (1.5 ve 2.0 gibi). Bu durum Firebird'ün yeni çıkan sürümünü test etmek istediğinizde ya da farklı sunucu sürümleri ile çalışan programlarınızı aynı sunucu bilgisayarda kullanmak istediğinizde önemli olacaktır.

Linux konusunda deneyim ve bilgim çok zayıf olduğundan bu makale ,sadece Windows kurulu makineler için geçerlidir.

Firebird Servisi
FireBird'ü kendi kurulum programı ile ya da instsvc.exe aracı ile kurduğunuzda, Firebird Sunucusu için bir servis ve bir servis de Firebird Guardian için kurulur.

Firebird'ün tüm sürümlerinde bu servislerin isimleri aynıdır:

* Firebird Guardian - DefaultInstance
* Firebird Server - DefaultInstance

Bu servisleri başlatmak ve sonlandırmak için NET START ve NET STOP komutlarını komut satırından kullanabilirsiniz, Örn.:

NET START "Firebird Guardian - DefaultInstance"
NET STOP "Firebird Guardian - DefaultInstance"
Firebird'ün belirli bir sürümünü servis olarak kurmak için, Firebird ile beraber gelen instsvc.exe aracını kullanabilirsiniz ve bu araç Firebird kurulumunun bin alt klasöründe bulunur.

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]
instsvc install -s komutu ile Firebird'ü SuperServer şeklinde kurabilirsiniz. Ya da kurulan servisi kaldırmak için instsvc remove şeklinde kullanabilirsiniz. Servisi başlatmak ya da sonlandırmak için start ve stop seçeneklerini kullanabileceğiniz gibi aynı işi NET START ve NET STOP ile de gerçekleştirebilirsiniz.

Tüm Firebird sürümleri aynı servis ismini kullandıklarından, tek bilgisayarda sadece bir Firebird kopyasını servis olarak kurabileceğinizi aklınızda bulundurmalısınız.

Kendi kurulum programı ile Firebird'ü servis olarak kurmak son derece kolaydır.

Firebird'ü sadece program olarak başlatmak
Firebird sunucusunu bir program olarak da başlatabilirsiniz:

fbserver -a
komutu Firebird'ü bir program olarak başlatır, görev çubuğunda bir simge ile gösterilir. Bu simge üzerinde sağ tıklayıp çalışan Firebird kopyasını sonlandırabilirsiniz.

İki Kopyayı birden çalıştırmak
İki Firebird kopyasını aynı anda çalıştırabilmek için iki yol vardır:

* Bir tanesini Servis ve diğer(ler)ini program olarak çalıştırmak
* Tümünü program olarak çalıştırmak

Aynı anda tüm kopyaların Servis olarak çalıştırılamayacağı bilinmelidir.

Port Çakışmaları
Firebird için varsayılan TCP portu 3050'dir, Varsayılan servis ismi gds_db 'dir. Aynı anda birden fazla Firebird kopyası çalıştırıldığında bu kopyaların her biri farklı portları dinliyor olmalıdır. Bunu ayarlamak için iki yol vardır:

* firebird.conf dosyasında (Üzerinde değişiklik yapılacak Firebird kopyasına ait firebird.conf dosyası), RemoteServicePort veya RemoteServiceName ayarını değiştirin. RemoteServiceName ayarını değiştirseniz, o servisi services dosyasında tanımlamanız gerekir (\Windows\System32\Drivers\etc\services).

* Firebird’ü bir program olarak çalıştırırken -p <port> seçeneğini kullanın:

fbserver -a -p 3051

İstemciden bağlantının kurulması
Sunucunun port numarasını sunucu isminden bir '/' karakteri ile ayırmak suretiyle veritabanı bağlantı stringi içinde belirtebilirsiniz:

dbserver/3051:D:\DB\MyDb.fdb
elvis/3052:rocknroll
Aynı zamanda servis ismini vererek de bağlantıyı sağlayabilirsiniz:

dbserver/gds_db:D:\DB\MyDb.fdb
elvis/fb2:rocknroll
Bu durumda her istemci bilgisayar için ayrı ayrı olmak üzere services dosyasında bu servis isimlerini tanımlamanız gerekecektir.

Uygun İstemci Kütüphanesinin Kullanılması
İstemciden sunucuya bağlantı fbclient.dll dosyası ile sağlanır. Firebird'ün her sürümü, yeni sürüm bir fbclient.dll dosyası ile dağıtılır. Bununla beraber fbclient.dll dosyalarının yeni sürümleri geriye uyumluluk (eski sürümlere) göstermekte olup, son sürümdeki fbclient.dll dosyasını her çeşit(sürüm) Firebird sunucusuna bağlantı için kullanabilirsiniz. Yani Firebird 2.0 istemci kütüphanesini, Firebird 1.5 ve hatta Firebird 1.0 sunucusuna bağlanmak için kullanabilirsiniz

Düzgün yazılmış bir Firebird programı Registry'de Firebird Client path'ini arayacaktır. Registry anahtarı HKEY_LOCAL_MACHINE\SOFTWARE\Firebird Project\Firebird Server\Instances dır ve bu anahtar altındaki DefaultInstance Firebird kurulumunun path'ini içermektedir.



Yukarıda bahsedilen Registry anahtarına doğru path'i atamak için Firebird'ün bin klasörü içindeki instreg.exe aracını kullanabilirsiniz:


instreg i[nstall]
komutu Registry Key'i atayacak, ve

instreg r[emove]
komutu da yapılan atamayı kaldıracaktır.

Örnek
Kendi bilgisayarımda çalışmakta olan iki farklı Firebird sürümü var : 1.5.3 (Kurulum programı ile servis (otomatik başlayan) şeklinde yüklenmiş sürümü) ve 2.0.0 RC-5, download edip zip dosyasından çıkarttığım ve ihtiyaç duyduğumda bir program olarak çalıştırdığım sürümü.

1.5.3 sunucusu 3051/tcp portunu kullanacak şekilde ayarlı (eski projelerde ihtiyaç duyduğum InterBase 6.0 sürümü ile port çakışmalarını önlemek için varsayılan port yerine 3051 tercih ettim). Aynı zamanda 3051/tcp portu için services dosyasında "firebirdsql" servis ismini kullandım.

2.0.0 sunucusu 1.5.3 kopyası ile port çakışması yaşamamak için 3052/tcp portuna ayarlandı. Aynı zamanda 3052/tcp portu için services dosyasında " fb2" servis ismini kullandım. 2.0.0 sunucusu fbserver.exe -a komutu kullanılarak başlatıldı.



Tüm programların varsayılan olarak 1.5.3 sürümlü fbclient.dll dosyasını kullanabilmeleri için Registry'e 1.5.3 sunucusu kaydedildi. 2.0 sürümüne uyumlu programlarımın bulunduğu klasörlerde ayrı birer 2.0 sürümlü fbclent.dll dosyası bulundurmakla programlarımın Registry'de path'i kayıtlı fbclient.dll dosyasını değil program klasöründe mevcut fbclient.dll dosyasını tercih etmesini sağladım.

Her halükarda tüm programların connection stringleri içinde port numarasını belirtmeleri gerekmektedir( aksi halde programınız, çoğu zaman çalışmayan InterBase sunucusuna bağlanmaya çalışacaktır)

InterBase ve Firebird'ü tek bilgisayarda çalıştırmak
Bu konuda fazlaca bir araştırmam olmadı ama en azından benim bilgisayarımda çalışıyor.

InterBase servis ismi:

* InterBase Guardian

* InterBase Server

InterBase'i 3050 port'tan çalıştırmak en iyisi çünki InterBase client library GDS32.dll dosyası slash-portnumber sözdizimini tanımıyor.

InterBase program olarak çalıştırılmak istenirse:

ibserver.exe -a
InterBase, servis ve client library için farklı isimler kullandığından, Interbase sunucusunu Firebird 1.5 veya 2.0 sunucusu ile paralel kullanmakta bir sakınca yoktur.

Umarım ihtiyacı olan arkadaşlara faydası olur. Denedin mi derseniz hayır denemedim yaptığım çeviriyle foruma katkıda bulunmak istedim sadece.
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Mesaj gönderen sabanakman »

Hoş geldin sn hgunes. Bu faydalı bilgi paylaşımın için önce teşekkür eder katılımlarının devamını dilerim.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
Kullanıcı avatarı
Lost Soul
Üye
Mesajlar: 1064
Kayıt: 01 Nis 2007 02:55
Konum: mekan ANKARA toprak ELAZIĞ
İletişim:

Mesaj gönderen Lost Soul »

paylaşım için teşekkürler. ama ben o sorunu daha farklı şekilde halletim :)

Firebirdin sonu pdb ile biten bir versiyonu eski sürümleri de çalıştırıyor.
şu an makinemde gerek 1.5 de gerekse 2.0 da olan versiyonları aynı anda çalışabiliyor.

İyi çalışmalar.
Cevapla