Welcome

Welcome, thanks to look my blog

Friday, 18 April 2014

Tutorial Membuat Aplikasi UniGUI ISAPI Mode Pada Apache Dengan Delphi

Tutorial Membuat Aplikasi UniGUI ISAPI Mode Pada Apache Dengan Delphi


Kali ini kita akan melihat proses pembuatan aplikasi berbasis web dengan UniGUI yang membahas mulai memilih jenis aplikasi UniGUI untuk web, kompilasi menjadi modul ISAPI, sampai konfigurasi web server Apache untuk mengakomodasi aplikasi UniGUI.
Saran saya, sebaiknya Anda ikuti dulu tutorial pembuatan aplikasi database uniGUI dan integrasi FastReport sebelum melanjutkan dengan tutorial ini.
Memilih Jenis Aplikasi UniGUI Memilih Jenis Aplikasi UniGUI
Aplikasi jenis apa yang cocok untuk Anda? Mari kita lihat.
Saat membuat aplikasi UniGUI yang baru lewat Application Wizard, Anda akan diberi pilihan jenis aplikasi untuk dibuat.



Opsi pertama, seperti biasa, akan membuat aplikasi UniGUI yang berjalan sebagai aplikasi desktop dan/atau aplikasi web, sebagai executable tunggal yang memiliki web server internal sendiri dan tidak bergantung ke web server eksternal seperti Apache atau IIS.
Opsi kedua mirip opsi pertama, dilengkapi Delphi compiler directives yang dapat diedit untuk menentukan jenis ouput, apakah sebagai executable atau sebagai modul ISAPI (file DLL) yang dapat dijalankan oleh web server (Apache atau IIS)
Opsi ketiga hanya memberi pilihan output sebagai modul ISAPI untuk web server eksternal, berupa file DLL. Kita tahu bahwa file DLL lebih repot untuk di-debug daripada file EXE sehingga saran saya jangan memilih opsi ini bila Anda masih dalam tahap permulaan dengan Delphi dan UniGUI.
Opsi keempat akan memberikan output sebagai executable yang berjalan sebagai modul servis di Windows. Output tetap menjadi web server, tanpa GUI desktop, dan berjalan sebagai daemon.
Sesuai judul, kita akan membuat aplikasi web dengan UniGUI, yang targetnya adalah modul ISAPI untuk Apache. Kita dapat memilih opsi ketiga untuk pekerjaan ini, tapi ingat, untuk menghindari kerepotan saat debugging nanti maka kita akan memilih opsi kedua saja.
Kita mulai dengan membuat aplikasi baru dan pilih opsi kedua: VCL Application/Standalone Server/ISAPI Module. Bila Anda belum jelas tentang bagaimana membuat aplikasi baru UniGUI, silahkan ikuti tutorial pembuatan aplikasi UniGUI.
Di aplikasi baru yang telah dibuat, klik menu Project>View Source, dan perhatikan isinya:
Project Source
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031
0032
0033
0034
{$define UNIGUI_VCL}
 
{$ifndef UNIGUI_VCL}
library
{$else}
program
{$endif}
app1;
 
uses
  {$ifndef UNIGUI_VCL}
  uniGUIISAPI,
  {$endif}
  Forms,
  ServerModule in 'ServerModule.pas' {UniServerModule: TUniGUIServerModule},
  MainModule in 'MainModule.pas' {UniMainModule: TUniGUIMainModule},
  Main in 'Main.pas' {MainForm: TUniForm};
 
{$R *.res}
 
{$ifndef UNIGUI_VCL}
exports
  GetExtensionVersion,
  HttpExtensionProc,
  TerminateExtension;
{$endif}
 
begin
{$ifdef UNIGUI_VCL}
  Application.Initialize;
  TUniServerModule.Create(Application);
  Application.Run;
{$endif}
end.
Baris pertama pada kode di atas adalah {$define UNIGUI_VCL}, yang merupakan compiler directive untuk menentukan bagaimana proses kompilasi berjalan. Dengan {$define UNIGUI_VCL} di baris pertama, aplikasi kita akan dijalankan sebagai aplikasi desktop yang juga dapat diakses via web.
Buka unit Main.pas dan tampilkan formnya. Tambahkan sebuah TUniButton dan sebuah TUniMemo. Event OnClick pada UniButton1 diisi dengan kode seperti berikut:
0001
0002
0003
0004
0005
0006
0007
0008
procedure TMainForm.UniButton1Click(Sender: TObject);
begin
  UniMemo1.Clear;
  UniMemo1.Lines.Add('Tes.. 1');
  UniMemo1.Lines.Add('Tes.. 2');
  UniMemo1.Lines.Add('Tes.. 3');
  UniMemo1.Lines.Add('Tes.. 4');
end;
Kode di atas hanya mengisi beberapa baris teks ke UniMemo1. Tidak ada yang penting di sini.
Sekarang jalankan aplikasi:



Dan coba juga akses aplikasi kita via web dengan browse alamat http://localhost:8087/.



Sudah sesuai harapan? Tutup aplikasi dan kembali ke Delphi, save projek kita ke sebuah folder. Katakan Anda menyimpannya di C:\UniGUI\App1 dengan nama projek unigui1.dpr.
Kompilasi Sebagai Modul ISAPI Kompilasi Sebagai Modul ISAPI
Lanjutan dari compiler directive di atas, mari kita lihat bagaimana menghasilkan modul ISAPI dari aplikasi kita.
Caranya mudah, cukup dengan menjadikan compiler directive {$define UNIGUI_VCL} menjadi komentar.
Kembali klik menu Project>View Source dan ubah baris pertama, yaitu {$define UNIGUI_VCL} menjadi //{$define UNIGUI_VCL} (menjadi komentar) sehingga directive-directive di bawahnya tidak berpengaruh lagi pada kompilasi. Dengan begitu potongan kode akan menjadi:
0001
0002
0003
0004
0005
0006
0007
0008
0009
//{$define UNIGUI_VCL}
 
{$ifndef UNIGUI_VCL}
library
{$else}
program
{$endif}
app1;
........................
Dan di mata kompiler, source yang akan dikompilasi adalah:
0001
0002
0003
library
app1;
........................
Jadi ouput kompilasi nantinya adalah file DLL. Inilah modul ISAPI yang akan kita jalankan sebagai modul ISAPI Apache Web Server.
Mengatur Setting Apache Mengatur Setting Apache
Pastikan bahwa Anda telah menginstall Apache Web Server dengan benar dan telah berjalan baik.
Kita perlu mengatur Apache agar menghandle modul ISAPI kita, sehingga dapat diakses lewat browser. Anda perlu Apache yang sudah terinstall di komputer Anda, dan kita akan mengaturnya.
Di sini saya tidak akan menerangkan tentang instalasi Apache. Bila Anda belum paham tentang ini, silahkan ikuti tutorial instalasi Apache atau silahkan gunakan paket Xampp, WampServer atau AppServ yang telah menyediakan paket instalasi Apache lengkap dengan PHP dan database MySQL.
Kini masuk ke direktori instalasi Apache. Direktori ini berbeda-beda tergantung pada saat Anda menginstall Apache, direktori mana yang Anda tentukan sebagai direktori instalasi. Yang umum, direktori ini adalah:
  • Pada Xampp, terletak di C:\Xampp\Apache
  • Pada WampServer, berada di C:\Wamp\Apache
  • Pada AppServ, terletak C:\AppServ\Apache
  • Pada instalasi manual Apache, berada di C:\Program Files\Apache Group\Apache
Silahkan sesuaikan dengan direktori instalasi Apache di komputer Anda.
Nah, dalam direktori tersebut, masuk lagi ke direktori conf di mana file-file konfigurasi Apache berada. Buka file httpd.conf dengan teks editor. Anda boleh menggunakan Notepad, tapi sebaiknya gunakan teks editor yang “lebih canggih” seperti Notepad++ atau EditPlus, yang mampu membedakan antara baris baru Windows dan Unix.
Gunakan fasilitas Find, cari teks modules/mod_isapi.so. Bila ketemu, lihat apakah baris sepenuhnya adalah # LoadModule isapi_module modules/mod_isapi.so, dan bila ya, silahkan buang komentar di depannya (tanda #) untuk mengaktifkan modul isapi loader pada Apache. Dan bila tidak ada tanda komentar (tanda #) di depannya, Anda tidak perlu mengubahnya. Dalam kasus baris ini tidak ditemukan sama sekali, Anda boleh menambahkannya:
0001
LoadModule isapi_module modules/mod_isapi.so
Langkah berikut, kita atur Apache agar menggunakan isapi handler untuk menghandle file DLL dengan menambahkan baris berikut:
0001
AddHandler isapi-handler .dll
Lalu buat konfigurasi direktori di mana aplikasi kita berada dan memasukkannya ke entri direktori Apache dengan menambahkan baris-baris berikut:
0001
0002
0003
0004
0005
0006
<Directory "C:/UniGUI/App1">
Options Indexes FollowSymLinks ExecCGI
AllowOverride None
Order allow,deny
Allow from all
</directory>
Ingat bahwa C:/UniGUI/App1 adalah folder di mana kita menyimpan aplikasi kita.
Kemudian kita buat alias untuk direktori tersebut. Terserah apa. Katakan myunigui, dan kita buat alias dengan menambahkan:
0001
Alias /myunigui "C:/UniGUI/App1"
Dengan alias ini, saat kita meminta browser untuk membuka alamat URL http://server/myunigui, Apache akan mengarahkan kita C:\UniGui\App1 (di browser, tetap akan kita lihat sebagai http://server/myunigui).
Langkah terakhir, silahkan restart Apache. Saya melakukannya dari Windows via menu Start>Run (atau tekan tombol Windows + R) di keyboard dan isikan services.msc



Dan setelah muncul window Services, cari service dengan nama Apache (atau Apache x.x) dan klik kanan, pilih Restart.



Sudah?
Kembali lagi ke Delphi. Build ulang projek kita dan lihat apakah kompilasi sudah menghasilkan output dengan ekstensi DLL. Bila sudah berarti setting projek kita sudah ok. Untuk mengetes projek ini sebagai modul ISAPI, buka browser dan masukkan URL
http://server/myunigui/unigui1.dll
Lihat hasilnya dan bandingkan dengan punya saya:

 

sumber : http://dessystefanatic08.blogspot.com/2012/11/tutorial-membuat-aplikasi-unigui-isapi.html

1 comment:

  1. Access forbidden! You don’t have permission to access the requested object. It is either read-protected or not readable by the server. If you think this is a server error, please contact the webmaster. Error 403 localhost Apache/2.4.3 (Win32) OpenSSL/1.0.1c PHP/5.4.7 itu error yang saya peroleh.. tolong pencerahannya… terima kasih

    ReplyDelete