Intraweb Uygulamalarının Dağıtımı Gönderen: kocaturk Tarih: 13 July 2007 04:12:50

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:8888iş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ı)
Intraweb uygulamalarını Windows servis uygulaması olarak ta dağıtmakta mümkündür. Bunu yapmak için tabiî ki uygulamamızı oluştururken
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.
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ı www . 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 –uninstallBuna göre bizim projemizin .exe adı
IWServiceApp.exe olduğuna göre proje dizininde komut isteminde vermemiz gereken komut;
IWServiceApp.exe –installYukarı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
%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.
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
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.DescriptionResimden 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:porthttp: //192.168.1.41:8888hizmet 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.
Bir diğer önemli değişiklik ise daha önceden hazırladığımız
Standalone uygulamalarda Proje kaynağına baktığımızda
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
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
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;
%SystemRoot%\system32\inetsrv\iis.mscSatırını ekleyerek Tamamı tıklıyorum, bu işlem sonucunda IIS yönetim konsolu açılıyor
Ş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.
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 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;
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.
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ı
http: //Sunucu_Adresi/Sanal_Dizin/Uygulama_adı.dll/Varsa_Başlangıç_Komutubizim uygulamamıza göre URL yi dizersek eğer
http: //localhost/MyIWISAPI/IWISAPIApp.dll/ Ben birde
ServerController ın
StartCmd özelliğine
Baslat değerini vermiştim benim URL adresimde;
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.
Apache ve Linux dağıtımılarını makinamda Apache olmadığından ve yakınımda Linux kurulu bir makinada olmadığından anlatamıyorum ama ileride bunlara da değiniriz.
Bir başka makalede görüşmek dileğiyle.
Ynt: Intraweb Uygulamalarının Dağıtımı Gönderen: babahayati Tarih: 13 July 2007 08:41:34
Teşekkürler Oktay Abi, hiç kimse sadece localhostta çalışan bir web sayfası olsun istemezdi.
"Bir başka makalede görüşmek dileğiyle." bu cümle; diğer üyleri bilmiyorum ama bana huzur veriyor.
Ynt: Intraweb Uygulamalar?n?n Da??t?m? Gönderen: ahmetkılıç Tarih: 16 July 2007 11:43:19
Üstadım teşekkür ediyorum. zaman ayırdığın için sağol hakkını helal et saygılar.
Ynt: Intraweb Uygulamalarının Da�?ıtımı Gönderen: olsunartik Tarih: 16 July 2007 21:48:44
Çok teşekkürler . Ellerine saglik hocam.