Intraweb Uygulamalarının dağıtımı
Arkadaşlar merhaba aslında ben IntraWeb Makalelerine geşlişmiş JavaScript örnekleri ile devam edip finalde de IntraWeb ile
AJAX ı bütünleştirmeyi anlatmayı düşünüyordum ama talep üzerine bu konuyu araya sıkıştırmam gerektiği kanısına vardım diğer konulara da kaldığımız yerden devam ederiz artık.
Intraweb uygulamalarının birkaç farklı şekilde dağıtımını yapabilirsiniz, bunları sıralayacak olursak
1. Standalone ( Tek bir çalıştırılabilir sunucu uygulama)
2. Windows service Application( Windows Hizmet Uygulaması)
3. ISAPI Extension( ISAPI Uzantısı )
4. Apache DSO ( Apache Dynamic Shared Object )
5. Linux daemon olarak
1 - Standalone ( Tek bir çalıştırılabilir sunucu uygulama)
Bu dağıtım şekillerinin hepsi de çok basit olarak uygulanabilir. Bunlardan en basiti bizimde makalelerde kullandığımız standalone(tek bir exe dosya) çalıştırılabilir dağıtım şeklidir. Bu tür dağıtım da anlatılacak pek bir şey yok delphi de oluşturduğumuz .EXE dosya bizim sunucu uygulamamamızdır yani sunucu olarak kullanacağımız makine da çalışır durumda olması gerekir diğer makinalardan sunucu uygulamamızın sağladığı IntraWeb web uygulamasına erişmek için yapılacak tek şey ilgili sunucu makine IP adresi ve uygulamayı oluştururken ServerController nesnesinde belirlediğimiz sunucu port numarasın dan oluşan web uygulama adresini girmek tir. Sunucu port u varsayılan olarak daha öncede belirttiğimiz gibi 8888 dir protun varsayılan olduğunu kabul edersek adresimiz aşağıdaki gibi olacaktır.
http: //127.0.0.1:8888
işte bu kadar basit yukarıdaki adresi tarayıcımızın adres satırına girip ENTER tuşuna basınca sunucu uygulamamız sayfalarımızı yayınlamaya başlayacaktır.
Bu konu ile ilgili daha önce örnekler verdiğimiz için extra ekran görüntüleri veya örnekler vermeye gerek duymuyorum eminim herkes bunun nasıl yapıldığını gayet iyi bilmektedir.
2 - Windows service Application( Windows Hizmet Uygulaması)
Service Application olarak oluşturmamız gerekiyor. Bunun için delphi de
File->New->Other… sırasını takip ederek açacağımız Delphi
New Items penceresinde soldan IntraWeb i seçip sağdan da IntraWeb Application Wizard ı seçerek OK button ına tıklıyoruz Normalde tüm IW uygulamalarında buraya kadarki işlemleri standart olarak yapıyoruz.
Daha sonra açılan
IntraWeb application Wizard ta
Application Type kısmında
Service Application radio button ını seçip Application Name kısmınada IWServiceApp yazarak
OK e tıklıyoruz.
Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.
Delphi IDE si bu işlemden sonra bize Intraweb hizmet uygulamamız için gereken dosyaları oluşturacaktır.bundan sonra yapılacak bir iki ufak ayar dışında yapılması gerekenler daha önce IW uygulamaları hazırlarken yapılanlardan farklı değildir.
Uygulamamıza formlar, bileşenler vs ekleyip istediğimiz gibi tasarlayıp son olarak derler ve kullanıma hazır hale getiririz.
Burada dikkat edilmesi gereken şeyler ise şunlardır. Öncelikle Uygulamamız bir
Windows servis uygulaması olduğu için
Windows Yönetim Konsolunda Hizmetlere bakarken bizim IW servis uygulamamızı görünür olmasını sağlamak ve yönetim konsolu üzerinden ayarlarını yapabilmemiz için
ServerController unitimizin
ObjectInpector de
AppName ve
Description özelliklerini ayarlamamız gerekmektedir.
Ben
AppName özelliğine “
IWServis”
Description özelliğini de “
Intraweb Windows Servis Uygulaması
Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.
delphidunyasi . net” olarak değiştirdim şimdilik yapacağım şey sadece bu kadar artık uygulamadaki formalarımı hazırlayacağım projeye göre dizayn edip ilgili bileşenleri ekleyip ilgili kodlarımı yazdıktan sonra projemi derliyorum, evet derliyorum çünkü hazırladığımız proje bir hizmet programı(
service application) olduğu için delphi IDE sinden çalıştırdığınızda eğer kodlama da bir problem yoksa çalışıp duracaktır zaten kodlamada hata varsa gerekli hata mesajlarını alacaksınız.
Dedim ya projeyi derliyoruz ve sonuç olarak
IWServiceApp.exe adlı Windows hizmeti olarak çalışacak olan sunucu uygulamamız ortaya çıkmış oluyor.
Artık bu aşamadan sonra hizmet uygulamamızı Windows ta kurmamız gerekiyor Intraweb hizmet uygulamasının Windows hizmetlerine kurulması ve kaldırılması çok basittir, yapacağımız tek şey aşağıdaki kodları ilgili hizmet uygulamamızın bulunduğu dizinde vermek o kadar
Hizmet_uygulaması_adı.exe –install
Hizmet_uygulaması_adı.exe –uninstall
Buna göre bizim projemizin .exe adı
IWServiceApp.exe olduğuna göre proje dizininde komut isteminde vermemiz gereken komut;
IWServiceApp.exe –install
Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.
Yukarıda benim DOS komut isteminde IW Windows hizmet uygulamamın kurulumunu görüyorsunuz gördüğünüz gibi hizmet uygulamamın Windows a başarılı bir şekilde kurulduğuna dair bir uyarı mesajı aldım, aynı uyarıyı hizmet uygulamasını kaldırdığınızda da almalısınız. Artık servisimiz kurulu şimdi servisimi başlatıp kullanmak için
Windows Yönetim Konsolu nu açıp servisimizi başlatmamız gerekiyor direk hizmetlere ulaşmak için eğer başlat menüsünde
Yönetimsel Araçlar menüsü varsa buradan
Hizmetleri seçiyoruz veya
Başlat->Çalıştır sonra Çalıştır penceresinde Aç kısmına
Kod: Kodu kopyalamak için üzerine çift tıklayın!
%SystemRoot%\system32\services.msc /s
yazarak servis yönetim konsolunu açabilirsiniz veya
bilgisayarım simgesini
sağ tıklıyoruz açılan menüde
Yönet i seçip bilgisayar yönetim penceresinde sol Treeview de
Hizmetler ve Uygulamalar Node u altında bulunan
Hizmetler Node unu seçtiğimizde sağ tarafta sistemimizde bulunan tüm hizmetler hakkında gerekli bilgileri bulabiliriz.
Projeyi tasarlarken biz
ServerController nesnemizin
AppName özelliğine
IWServis yazmıştık Hizmet yönetim konsolun da bizim IW hizmet programımızı listeden IWServis adı ile buluyoruz ve yönetim konsolunda hizmet listesinin sol üst köşesindeki Hizmeti
Başlat linkini tıklayarak uygulamamızı Windows hizmet uygulaması olarak başlatıyoruz. Aşağıda uygulamamızın Hizmet konsolundaki görünümü yer almaktadır.
Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.
Artık uygulamamız bir Windows hizmeti oldu yani işletim sistemi başladığında başlatabilir veya elle başlatabiliriz, kısacası bir Windows hizmet programına ait tüm ayarlamaları bizim hizmet uygulamamız için de yapabiliriz. Aşağıda uygulamamızın özellik penceresi gözükmektedir
Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.
Pencerede dikkat ederseniz proje tasarım anında ServerController nesnemizin AppName ve Description özelliklerinin yansımları aşağıdaki gibi olmuş
Görüntü adı : ServerController.AppName(aynı zaman da hizmet adı)
Açıklama : ServerController.Description
Resimden de anlaşılacağı gibi hizmetimiz başlamış durumda. Şimdi yapmamız gereken şey diğer tüm IntraWeb uygulamalarında olduğu gibi uygulamamızın başlangıç URL sini proje tasarım anında belirlediğimiz
ServerController.Port özelliğine uygun olarak tarayıcı adres satırına girmek ve hizmet uygulamamızı kullanarak oluşturduğumuz IntraWeb uygulamamızın WebFormlarına erişmek olacaktır.
http: //HizmetinÇalıştığıMakinaIP:port http: //192.168.1.41:8888
hizmet windowsta çalıştığı sürece uygulamamı gönül rahatlığı ile kullanabilir, sayfalarıma ulaşabilirim.
3 - ISAPI Extension( ISAPI Uzantısı ) olarak dağıtım
IntraWeb
ISAPI uygulamaları da normal ISAPI (Internet Server Application Programming Interface) uygulamaları gibidir.
Normalde bir önceki dağıtımlar uygulamalarınızın genellikle bir IntraNet te kullanımına olanak sağlarlar fakat IntraWeb ISAPI uygulamalarını ISAPI uzantılarını destekleyen sunucularda rahatlıkla kullanıp uygulamalarınızı dünyaya açabilirsiniz.
Biz burada yerel sunucu da çalışacağımız için dağıtımın anlatımını
MS IIS (Microsoft's Internet Information Services) e göre anlatacağız.
Şimdi herhangi bir IntraWeb uygulaması hazırlar gibi Delphi IDE sinde
File->New->Other… seçeneği ile Delphi New Items penceresini açalım Soldan IntraWeb i seçip Sağdan da IntraWeb Application Wizard ı seçtikten sonra OK i tıklayalım artık aşina olduğumuz
IntraWeb Application Wizard penceresinde
Application Type olarak
ISAPI Extension radio button ını seçip Project Name kısmına da I
WISAPIApp yazarak
OK i tıklayalım, malumunuz Delphi bizim için her zaman olduğu gibi projeyi ve gerekli standart unitleri oluşturacaktır.
Bu aşamaya gelince delphi Project Manager penceresinde uygulamamızın adının IWISAPIApp.exe değil de
IWISAPIApp.dll olarak eklendiğini fark edeceksiniz.
Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.
Bir diğer önemli değişiklik ise daha önceden hazırladığımız
Standalone uygulamalarda Proje kaynağına baktığımızda
Kod: Kodu kopyalamak için üzerine çift tıklayın!
program IWEposta;
uses
Forms,
IWMain,
uMain in 'uMain.pas' {frmEposta: TIWAppForm},
ServerController in 'ServerController.pas' {IWServerController: TIWServerControllerBase};
{$R *.res}
begin
Application.Initialize;
Application.CreateForm(TformIWMain, formIWMain);
Application.Run;
end.
Benzeri bir kod ile karşılaşırken ISAPI uzantısı şeklinde hazırladığmız projemizin kaynağına bakınca ise
Kod: Kodu kopyalamak için üzerine çift tıklayın!
library IWISAPIApp;
uses
ISAPIApp,
IWInitISAPI,
Unit1 in 'Unit1.pas' {IWForm1: TIWAppForm},
ServerController in 'ServerController.pas' {IWServerController: TIWServerControllerBase},
UserSessionUnit in 'UserSessionUnit.pas' {IWUserSession: TIWUserSessionBase};
{$R *.RES}
exports
GetExtensionVersion,
HttpExtensionProc,
TerminateExtension;
begin
IWRun;
end.
Şeklinde bir kod ile karşılaşacaksınız. Bunun haricinde temelde başka hiçbir değişiklik yok yine uygulamamıza yeni form lar ve bileşenler ekleyip programlama yapabiliriz, bu farklılıklar sadece uygulama dağıtımı açısından önem arz eder.
Diğer tüm ayarlarınızı normal uygulamalarda yaptığınız gibi yapabilirsiniz. Burada ufak bir ayrıntıyı eklemek istiyorum aslında gerekli olmasada ben ISAPI uygulamalarınız için bir
başlangıç komutu tanımlamanızı tavsiye ederim yani
ServerController nesnemizin
StartCmd özelliğine bir değer girmenizde fayda var ben bu özelliğe
Baslat değerini giriyorum genellikle. Bu uygulama URL sini biraz uzatır ama pratikte faydası olduğu kanaatindeyim.
Bu ufak açıklamanın ardından uygulamamız da gerekli tasarımı yapalım ve derleyerek ISAPI uzantısı olan
IWISAPIApp.dll kütüphanemizi oluşturalım ben tasarım için Form üzerine bir
IWButton birde
IWLabel koydum, Porjeyi test etmek için IWButton ın sunucu taraflı
OnClick olay işleyicisinde
Aşağıdaki kodu yazdım
Kod: Kodu kopyalamak için üzerine çift tıklayın!
procedure TIWForm1.IWButton1Click(Sender: TObject);
begin
IWLAbel1.Caption := ' Bu benim IntraWeb ISAPI Uygulamam ';
end;
bu basit şeyler için fazladan ekran görüntüsü eklemedim, sanıyorum hepimiz bunu ve daha fazlasını rahatlıkla yapabiliriz.
Neyse artık uygulamamın tasarımı bitti ve Projemi Derliyorum, çünkü proje derlendiğinde bir
.DLL oluşturacağı için delphi IDE sinden çalıştıramayız.
Projemizi derledikten sonra işin püf noktası olan
IIS e uygulamamızı tanıtma aşamasına gelmiş oluyoruz. Uygulamamızı IIS e tanıtmak için öncelikle Windows ta IIS in kurulu olması gerekmektedir sanırım burada bunu anlatmaya gerek yok ben kurulu olduğunu varsayarak anlatmaya devam ediyorum.
Windows IIS(Internet Information Services) Yönetim Konsolunu açıyoruz. Bu işide Windows Hizmet yönetim konsolunu açtığımız üç yöntemle(Yönetimsel Araçlar, Bilgisayar Yönetimi veya Çalıştır) de yapabiliriz ben en basiti olan
Başlat->Çalıştır yolu ile açacağınız uygulama çalıştırma penceresinde Aç kısmına;
Kod: Kodu kopyalamak için üzerine çift tıklayın!
%SystemRoot%\system32\inetsrv\iis.msc
Satırını ekleyerek Tamamı tıklıyorum, bu işlem sonucunda IIS yönetim konsolu açılıyor
Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.
Şimdi IIS yönetim konsolu da az önce hazırladığımız ISAPI uygulamamızın bulunduğu konuma işaret edecek bir
Sanal dizin(virtual directory) oluşturmamız gerekmekte aksi taktirde uygulamamızı çalıştıramayız. Şimdi konsolun sol tarafında bulunan
Yerel Bilgisayarı solundaki (+) işaretine tıklayarak aşağı doğru açıp
Web Siteleri - > Varsayılan Web Sitesi Node unu buluyoruz ve üzerinde sağ tıklayıp açılan menüden
Yeni->Sanal Dizin… i seçiyoruz.
Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.
Sanal Dizin… tıklandıktan sonra
Windows Sanal Dizin oluşturma Sihirbazı bizi karşılayacaktır.
İlk pencerede
İleri> yi tıklayıp geçiyoruz ikinci pencerede oluşturacağımız Sanal dizinimize bir
takma ad(alias) vermemiz isteniyor ben burada
MyIWISAPI adını kullandım sizde isterseniz başka ad kullanabilirsiniz, Takma adı belirledikten sonra tekrar
İleri> yi tıklıyoruz bir sonraki aşamada oluşturacağımız sanal dizinin fiziksel yerini yani hazırladığımız ISAPI uygulamanın yerinini, bir başka deyişle
IWISAPIApp.dll in bulunduğu dizini Sanal Dizin Oluşturma Sihirbaz nın 3. Aşamasında giriyoruz buraya kadar her şey normal sihirbazın 4. Aşamasında ise dikkat etmemiz gereken varsayılan olarak seçili gelmeyen
çalıştır(Örn. ISAPI Uygulaması veya CGI) checkbox ını seçmek ayrıca bu uygulama için geçerli değil ama daha sonra oluşturacağınız uygulamalarda sunucuda bulunan Veritabanlarına veya diğer dosyalara istemci tarafından veri yazabilmek için
Yazma izninide vermelisiniz. Bu işlem sonucunda Sihirbazın 4. Aşaması aşağıdaki gibi olacaktır.
Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.
(Bu aşamada Yazma iznide verirseniz Sihirbaz bunun sakıncalı olduğu konusunda bir uyarı verecektir, dikkate almadan geçebilirsiniz. )
Yukarıdaki gibi seçimleri yaptıktan sonra tekrar
İleri> yi tıklıyoruz ve Sihirbazın son aşamasında
Son u tıklayarak sanal dizin oluşturma işlemini bitirmiş oluyoruz.
Bu aşamadan sonra son olarak olşturduğumuz sanal dizin için kendimize yetki vermemiz gerekecek aksi taktirde Sanal dizini oluşturmuş olsak bile uygulamamızı çalıştıramayız. Bunun için IIS yönetim konsolunda oluşturduğumuz sanal dizin adı üzerine
sağ tıklayarak açılan menüden
Özellikler itıklayıp Sanal dizinimizin özellik penceresini açıyoruz, özellik penceresi açıldıktan sonra pencerenin üst kısmından
Dizin Güvenliği sekmesine geçiyoruz. Bu sekmede
Anonim Erişim ve Doğrulama Denetimi bölümündeki
Düzenle… button ına tıklayarak
Kimlik doğrulama yöntemleri penceresini açıyoruz;
Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.
Burada kullanıcı Adı kısmında dikkat ederseniz
IUSR_Bilgisayar_Adı şeklinde standart bir kullanıcı tanımlı bu kullanıcı yetkileri çok kısıtlı olan
Internet Konuk Hesabı dır
(ek olarak Bu kullanıcıyı kendi makinanızda güvenlik açışından devredışı bırakmanızıda tavsiye ederim) , ben burada IIS yönetiminin detaylarına girmeyeceğim sadece hazırladığımız uygulamayı IIS in kurulu olduğu makinadan erişimi sağlayacak şekilde ayarlayacağım uygulamanızı gerçek hayat uygulaması olarak dağıtacağınız zaman IIS tabanlı sunucunuzda gerekli kullanıcı ve grupları ayarlarsınız artık.
Şimdi Internet Konuk Hesabı nın yanındaki
Gözat… button ına tıklayarak Kullanıcı Seçimi penceresini açalım bu pencerede
Gelişmiş… button ına tıklayalım ve sağ taraftaki
Şimdi Bul button ını tıklayarak makinamızda tanımlı tüm kullanıcıların listesini döktürelim.
Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.
Ben maiknamda
Admin olarak oturum açtığım için
Administrator u seçip
Tamam ı tıklıyorum sizde kendinize göre kullanıcıyı seçin ve tamam ı tıklayın bir sonraki pencerede de değişiklik yapmadan tekrar Tamam ı tıklayın. Artık
kimlik Doğrulama Yöntemi Penceresinde Kullanıcı adı kısmında
Bilgisayar_Adı\Kullanıcı_Adı
şeklinde kullanıcı adınız belirecektir aslında direk bu pencerede yukarıdaki formatta kullanıcı yı girebilirsiniz fakat ben bilmeyen arkadaşlar için biraz daha açıklayıcı olması açısından uzun yolu tercih ettim.
Bu aşamadan sonra tüm pencerelerde Tamam ı tıklayarak IIS yönetim konsoluna kadar gelin ve onuda kapatın artık uygulamamızı deneyebiliriz.
Uygulamamızın URL adres formatı
Kod: Kodu kopyalamak için üzerine çift tıklayın!
http: //Sunucu_Adresi/Sanal_Dizin/Uygulama_adı.dll/Varsa_Başlangıç_Komutu
bizim uygulamamıza göre URL yi dizersek eğer
Kod: Kodu kopyalamak için üzerine çift tıklayın!
http: //localhost/MyIWISAPI/IWISAPIApp.dll/
Ben birde
ServerController ın
StartCmd özelliğine
Baslat değerini vermiştim benim URL adresimde;
Kod: Kodu kopyalamak için üzerine çift tıklayın!
http: //localhost/MyIWISAPI/IWISAPIApp.dll/baslat
şeklinde olacak. Artık sunucuya erişebilen tüm tüm istemcilerde yukarıdaki URL leri yazarak IntraWeb uygulamamıza erişebiliriz.
Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.