Belajar Framework Zend

Beberapa hari ini lagi suka banget belajar ZEND, lumayan buat alternatif :-).

Dari sekian banyak framework di PHP, kalo menurut saya ini yang paling manusiawi, setidaknya cara kerjanya yang mirip dengan struts, dan hasil URL nya yang indah, setidaknya bila saya bandingkan dengan framework PHP yang lain seperti CodeIgniter.

Memang baru sekedar belajar hello world plus sedikit koneksi ke database, juga sedikit tentang pengaturan layout. Tapi saya bisa bilang bahwa saya “Jatuh Cinta” dengan framework ini.

Banyaknya library yang disediakan ZEND, memang masih mengharuskan saya untuk ber-eksplorasi lebih jauh, namun sekali lagi hanya waktu yang bisa menjawabnya :-)

Memasang Awstats di tomcat5.5 di Ubuntu 8.04

Awstats adalah salah satu tools yang powerfull untuk mengetahui statistik dari website kita , untuk memasangnya pun sangat mudah terutama untuk web server seperti apache dengan didukung oleh dokumentasi . Namun ini sepertinya tidak berlakuย  untuk tomcat, oleh karena itu saya merasa perlu untuk menulisakannya setidaknya ini yang saya terapkan dan terbukti running.

Sebelum dimulai ada beberapa hal yang perlu disiapkan :

Untuk installasi Perl, java, dan tomcat karena saya menggunakan menggunakan ubuntu sangat mudah untuk installasi, cukup menggunakan aptitude

apt-get install perl sun-java6-jdk tomcat5.5

Sedang untuk awstat karena default aptitude dari awstats adalah untuk apache, sehingga saya download manual

wget http://prdownloads.sourceforge.net/awstats/awstats-6.95.tar.gz

Awstats adalah tools yang dibuat dari script perl, itulah mengapa kita harus menginstall Perl seperti yang sudah saya sebutkan sebelumnya.

Setelah Semua siap kita masuk ke konfigurasi :

Secara default tomcat tidak mendukung program CGI untuk berjalan didalamnya oleh karena itu kita harus melakukan sedikit perubahan pada konfigurasi tomcat sebagai berikut,

vim /etc/tomcat5.5/web.xml

carilah baris yang kurang lebih seperti ini

 <servlet>
    <servlet-name>cgi</servlet-name>
    <servlet-class>org.apache.catalina.servlets.CGIServlet</servlet-class>
    <init-param>
       <param-name>debug</param-name>
       <param-value>0</param-value>
    </init-param>
    <init-param>
       <param-name>cgiPathPrefix</param-name>
       <param-value>WEB-INF/cgi</param-value>
    </init-param>
    <load-on-startup>5</load-on-startup>
 </servlet>

secara default ini di-disable, kita perlu untuk meng-enable nya.

kemudian cari juga baris sebagai berikut,

<servlet-mapping>
    <servlet-name>cgi</servlet-name>
    <url-pattern>/cgi-bin/*</url-pattern>
 </servlet-mapping>

baris ini juga harus di-enable. Selain itu juga kita perlu merubah nama library perl di bawah direktori server

mv /usr/share/tomcat5.5/server/lib/servlets-cgi.renametojar /usr/share/tomcat5.5/server/lib/servlets-cgi.jar

mv /usr/share/tomcat5.5/server/lib/servlets-ssi.renametojar /usr/share/tomcat5.5/server/lib/servlets-ssi.jar

kemudian restart tomcat

/etc/init.d/tomcat5.5 restart

Tomcat telah siap untuk menjalankan program CGI .

Awstats yang telah kita download sebelumnya kita extract

unzip awstats-6.95.zip

kemudian masuk ke direktori awstats

cd awstats-6.95

kemudian copy kan direktori icon di dalam wwwroot ke dalam context path dari web kita, dalam hal ini saya sebut sebagai webku

cp -r wwwroot/icon /usr/share/tomcat5.5/webapps/webku/.

copy kan juga direktori cgi-bin ke direktori WEB-INF dibawah webku

cp -r wwwroot/cgi-bin /usr/share/tomcat5.5/webapps/webku/WEB-INF/.

rename direktori cgi-bin menjadi cgi, ini dikarenakan diawal konfigurasi CGI kita diset cgi

mv /usr/share/tomcat5.5/webapps/webku/WEB-INF/cgi-bin /usr/share/tomcat5.5/webapps/webku/WEB-INF/cgi

selanjutnya kita atur konfigurasi awstats :
masuk ke direktori cgi,

cd /usr/share/tomcat5.5/webapps/webku/WEB-INF/cgi

ubah awstats.pl menjadi awstats.cgi supaya dapat dijalankan oleh tomcat

mv awstats.pl awstats.cgi

kemudian buat awstats.www.domainku.com.conf dari duplikasi file awstats.model.conf

cp awstats.model.conf awstats.www.domainku.com.conf

ubah konfigurasi didalamnya sesuai dengan kebutuhan, tapi minimal ada 7 hal yang harus diatur,

LogFile="/var/log/tomcat5.5/domainku_access_log.%YYYY-24-%MM-24-%DD-24.txt"

LogType=W

LogFormat=1

LogSeparator=" "

SiteDomain="www.domaiku.com" [diisi ip atau Domain kita]

HostAliases="domainku.com www.domainku.com"

AllowToUpdateStatsFromBrowser=0

“LogFile” mengarah pada log dari domainku.com, karena awstats membaca log acces dari website kita, maka kita juga perlu meng-enable log acces di konfigurasi tomcat

buka kembali file server.xml di direktori tomcat

vim /etc/tomcat5.5/server.xml

kemudian cari baris seperti berikut,

<Host name="domainku" appBase="webku"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
</Host>

ubah menjadi,

<Host name="domainku.com" appBase="webku"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">

<Valve className="org.apache.catalina.valves.AccessLogValve"
directory="logs"ย  prefix="domainku_access_log." suffix=".log"
pattern="combined" resolveHosts="false"/>

</Host>

selanjutnya restart tomcat.

Buka alamat http://domainku.com/cgi-bin/awstats.cgi?config=www.domainku.com dibrowser

Membuat User Baru di Mysql

Pertama login ke server mysql

shell>mysql -u root -p

anda akan diminta password “root” dari mysql, masukkan password anda, bila benar anda akan masuk ke prompt mysql

Lakukan langkah berikut :

mysql>CREATE USER 'user'@'localhost' IDENTIFIED BY 'pass_user';
mysql>GRANT ALL PRIVILEGES ON namadatabase.* TO 'user'@'localhost'
   ย ->WITH GRANT OPTION;

“user” adalah nama user yang akan ditambahkan

“pass_user” adalah password yang diberikan kepada user tersebut

kemudian user tersebut diberikan hak akses hanya kepada database “namadatabase”

Belajar Java, Hello World

Langkah pertama yang disertakan di tutorial bahasa pemrograman biasanya dengan menuliskan “Hello World”, saya pun akan melakukan hal yang sama, sekedar biar tradisi ini tidak hilang :-)

Untuk menulis “Hello World”, saya akan membuat satu class dengan nama “Latihan1” dengan isinya sebagai berikut

public class Latihan1 {

/**
* @param args
*/
public static void main(String[] args) {
    System.out.println("Hello World");

}

}

Simpan class tersebut dengan nama “Latihan1.java”

Agar dapat dijalankan baris-baris kode tadi harus dikompilasi terlebih dahulu

Untuk kompilasi juga sangat sederhana karena kita tidak menggunakan library tambahan

javac Latihan1.java

Perintah ini berlaku sama, baik di windows atau pun unix like.

Sangat sederhana tapi power full, setidaknya itu menurut saya ๐Ÿ˜€

Menginstall VHCS di Ubuntu8.0.4

Harus sebagai “root”

wget http://mirrors.penguinfriends.org/VHCS2/vhcs.sh

chmod 755 vhcs.sh

./vhcs.sh

File script juga sudah aku backup, barang kali link asal telah hilang :-)

http://riri.blog.unsoed.ac.id/files/2010/04/vhcs.sh

Ikuti langkah yang diperlukan :-)

Setting Virtual Host Tomcat5.5 di Ubuntu8.0.4 LTS

Beberapa bulan yang lalu sempat mengutak-atik settingan virtual hostnya tomcat di ubuntu untuk website. Tapi yang aneh adalah ketika aplikasi web nya ditaruh di direktori default “webapps” setting virtual host tidak mau terbaca. Pada waktu itu solusi praktisnya adalah dengan menaruhnya di luar direktori tomcat, kemudian direktori tsb dijadikan sebagai kepunyaan user tomcat55, sebagai user sistem tomcat.

Solusi praktis tadi bukan tanpa kelemahan, karena letak aplikasi web bukan di direktori default “webapps” sebagai akibatnya adalah aplikasi tersebut tidak bisa dipantau langsung dari “tomcat manager”.
Namun karena satu dan lain hal, settingan tsb saya biarkan.

Tadi pagi, ternyata masalah sama tersebut muncul lagi, kali ini karena menge-set virtual host di tomcat untuk server baru. Setelah googling ngalor-ngidul tidak menemukan solusi yang diharapkan.

Sempet nemu suatu pernyataan di dalam panduan instalasi tomcat6 di dokumentasinya ubuntu

For security reasons, the tomcat6 user cannot write to the /etc/tomcat6 directory by default. Some features in these admin webapps (application deployment, virtual host creation) need write access to that directory. If you want to use these features execute the following, to give users in the tomcat6 group the necessary rights :
sudo chgrp -R tomcat6 /etc/tomcat6
sudo chmod -R g+w /etc/tomcat6

Mesikpun hal tersebut ditulis untuk tomcat6, kayaknya si untuk tomcat5 juga sejalan, sehingga dilakukanlah eksperimen sederhana, memberikan acces kepada user tomcat ke direktori yang dimaksud :

sudo chgrp -R adm /etc/tomcat5.5
sudo chmod -R g+w /etc/tomcat5.5

Grup “adm” merupakan grup dari user “tomcat55”
kemudian tomcat direstart

Namun ternyata virtual host tetap tidak terbaca, akhirnya saya juga memberikan hak acces ke user tomcat untuk direktori “/usr/share/tomcat5.5” :

sudo chgrp -R adm /usr/share/tomcat5.5
sudo chmod -R g+w /usr/share/tomcat5.5

Tomcat di-restart

Ternyata dengan hal tersebut virtual host bisa terbaca sesuai dengan keinginan ^_^

Catatan instalasi tomcat5.5 di Ubuntu 8.04.4 LTS

untuk aplikasi yang menjalankan report jasper(.jrxml) bila dipadukan dengan java5 akan bermasalah :

javax.servlet.ServletException: /usr/lib/jvm/java-1.5.0- sun-1.5.0.15/jre/lib/i386/libawt.so: libmlib_image.so: cannot open shared object file: No such file or directory

dst…..

untuk mengatasi ini, java di upgrade ke versi java6
setting JAVA_HOME di “/etc/default/tomcat5.5” ke java6

JAVA_HOME=/usr/lib/jvm/java-6-sun

Haproxy, The Load Balancer (in jowo Language: Mas Paijo tukang mikul karung …. :D)

Hummm,….., setelah sekitar satu minggu disibukkan dengan urusan penyelesaian studi akhir (sebenernya masih belum selese si :D). Malam tadi akhirnya dengan mendaki gunung menyebrangi sungai, lewati lembah jreng…jreng….jreng… (lebay MODE ON ).

Seorang riri Harus kembali ke ritme kehidupan :-P, memasang server uji aplikasi SIA dengan dengan menu utama load balancer memakai Haproxy.
Dengan sedikit ngalor-ngidul dan seperti biasa merepotkan banyak orang :D. akhirnya dapet juga komputer buat dijadiin server uji. Yang lebih beruntung lagi ada satu komputer yang udah diinstall ubuntu 9.04, asik2 ndak usah nginstall dung he…..7x.

Sekitar jam 7 malem mulailah petualangan ke barat mengambil Haproxy dari server repository. Seperti biasa karena pakenya ubuntu segalanya jadi lebih mudah ๐Ÿ˜€ , :
Bener penuturan Pak Hari Siswantoro, gak sampe 5 menit untuk masang Haproxy
1. Pertama jalankan perintah “aptitude search haproxy”, karena ndak ada paket “haproxy”, update dulu dong Om
2. Jalankan perintah “apt-get update”, setelah update, ulangi langkah pertama, dan paket “haproxy” ternyata udah ada
3. Jalankan perintah “apt-get install haproxy”, tunggu beberapa detik jadi deh ๐Ÿ˜€

Kayanya cuman itu cara nginstalnya gampang banget, nah yang jadi masalah adalah
“Piye iki nganggone…..??????” (dorong dong dong dong………)

Seperti biasa, target utama adalah tanya sama “Mbah Google”
……………………..

……………………..……………………..……….
……………………..……………………..……………………..……….
……………………..……………………..……………………..……….
(ting tong)…. lah ketemu iki catetane Om Grig Gheorghiu, slirane wong LA, alamete blognya iki :
http://agiletesting.blogspot.com/2009/02/load-balancing-in-amazon-ec2-with.html

Rada gak mudeng si dengan apa yang ditulis. la wong nganggo boso londo je ๐Ÿ˜›
Tapi dengan sedikit meraba-raba bagian-bagian tertentu :D, akhirnya bisa sedikit mudeng, intinya adalah
1. set koneksi maksimal
2. definisikan listening IP nya
3. tentukan algoritma balancing nya
4. Definisikan server-server yang akan di load balancing

Setting udah selese, sekarang tinggal jalankan “haproxy”
dugaan awal yo biasa nganngo perintah “/etc/init.d/haproxy start”, tapi kok gak jalan
ndak tau opo sing salah, daripada bingung akhirnya jalanin manual
dengan perintah “haproxy -F /etc/haproxy/haproxy.cfg -D”
hohohoooo…… bisa jalan juga akhirnya ๐Ÿ˜€

Tapi kok rada aneh yo, hampir setiap refresh dilempar ke server yang berbeda-beda
hum………, ternyata yang jadi masalah adalah algoritma yang dipake “roundrobin”
Kalo menurut Om Grig kae mau lah,
round-robin: requests are rotated among the servers in the backend — note that servers declared in the backend section also accept a weight parameter which specifies their relative weight in that backend; the round-robin algorithm will respect that weight ratio
<nek ditranslate karo boso jowo>
round-robin : Mas paijo mubeng-mubeng nggoleti siti ning pasar, mbuh piye carane takon bakul-bakule karo tukang parkire sing penting ketemu.
<lha opo meneh iki, mbuh ra weruh>

akhirnya algoritma balancing aku ganti ke “source”
menurut Om Grig maning,
source : a hash of the source IP is divided by the total weight of the running servers to determine which server will receive the request; this ensures that clients from the same IP address always hit the same server, which is a poor man’s session persistence solution.
<translate boso jowone>
source : Si Siti nimbang abote neng bakul beras, karo mlayu-mlayu malah ketemu karo tukang njaluk-njaluk, tapi ora aweh mergo duite wis dicopet.

<tambah ora mudeng aku :D>

Dengan mengganti algoritma akhirnya client, akan selalu mendapat koneksi ke IP server sumber yang sama, dengan session yang konsisten, lah nek iki berarti session gak ilang, mungkin aman

Tapi dengan sedikit testing lho kok pembagian requestnya gak sama, server1 lebih banyak nerima request daripada server2,
Akhirnya algoritma diganti lagi dengan “leastconn”
merujuk lagi ke tulisan Om Grig
leastconn : the request is sent to the server with the lowest number of connections; round-robin is used if servers are similarly loaded
<boso jowone >
leastconn : Siti tuku kangkung seiket regane satus seket.

Request baru, akan dilempar ke server dengan jumlah koneksi paling sedikit,
lah iki sepertinya paling cocok. Setelah dijalankan juga mendapat hasil yang valid, sementaun pake yang ini dulu :)

Agenda selanjutnya adalah pengujian, semoga lancar gak ada halangan :).
Matur nuwun buat
Om Waluyo yang udah krimping kabel2nya(Sorry ya om, jadi menunda kepulanganmu)
mas Wiratmoko yang udah bantu nyetting server1, server2, dan server database
Pak Dayat(yang ngrewangi gotong2)

Oke lah kalo begitu, kita sudahi dulu, kita sambung lain waktu…….^_^

Setting domain di tomcat

terbagai menjadi 3 langkah mudah :
1. Setting DNS harus sudah diarahkan ke ip server kita(ini tdk bisa dilakukan sendiri, terutama kalo kita ndak punya server DNS sendiri ๐Ÿ˜€ )

2. ubah settingan server.xml di direktori conf dari tomcat, tambah kan domain kita dan arahkan ke aplikasi kita
<Engine name=”Catalina” defaultHost=”localhost” debug=”0″>
<Host name=”localhost” debug=”0″ appBase=”webapps”>
</Host>
<Host appBase=”webapps” name=”domainku.co.id”>
</Host>
</Engine>

3. tambahkan direktori di bawah direktori $tomcat_home/conf/Catalina

dengan nama “domainku.co.id”

4. buat file xml baru dengan nama “ROOT.xml” di dalam direktori yang kita buat barusan, isi file tersebut adalah :
<?xml version=’1.0′ encoding=’utf-8′?>
<Context docBase=”aplikasiku” path=””>
</Context>

5. Restart tomcat
6. jika benar, maka bila kita membuka “domainku.co.id” maka akan diarahkan ke “aplikasiku”
7. ^ _ ^

Memperbaiki Database Interbase yang Corrupt

Repotnya kalau pake database dengan tipe file, sekali corrupt maka ndak bisa dibuka sama sekali ^_^

Berikut Langka-langkah yang mungkin bisa dilakukan untuk memperbaiki database interbase/firebird yang corrupt :

1. Buka Command Prompt
2. Arahkan current directory ke Path bin dari Interbase, di windows kira2 seperti ini
$ >cd “C:\Program Files\Borland\InterBase\bi

n”
3. Set username dan password agar tidak berulang kali menuliskan perintah ketika menulis perintah :\
$>SET ISC_USER=SYSDBA
$>SET ISC_PASSWORD=masterkey
4. Copi database asli sehingga yang kita proses adalah database copi-an, yang asli tetep simpan
sewaktu-waktu bisa dipakai sebagai pembanding
$> copy databaseasli.gdb databasepalsu.gdb
5. Lakukan pengecekan database yang corrupt tsb :
$>gfix -v -full databasepalsu.gdb
6. Jika setelah pengecekan ternyata terdapat masalah, lakukan perintah :
$>gfix -mend -full -ignore databasepalsu.gdb
7. Periksa ulang kondisi database dengan perintah :
$>gfix -v -full databasepalsu.gdb
8. Bila masih terdapat error jalankan perintah backup :
$>gbak -backup -v -ignore databasepalsu.gdb databasepalsu.gbk
9. Langkah selanjutnya, membuat database baru dari hasil backup tadi
$>gbak -create -v databasepalsu.gbk database_anyar.gdb
10. Berdoa semoga ndak ada masalah lagi ๐Ÿ˜€

Sumber rujukan :
http://www.ibphoenix.com/main.nfs?a=ibphoenix&page=ibp_db_corr