Fihrist

25 Mayıs 2010 Salı

Apache Gerisinde Tomcat Çalıştırmak

Apache güzel bir sunucu. Tomcat ise java tabanlı web projelerinde kullanılıyor. Sadece tomcat yükleyip de direk kullanabilirsiniz. Ama ben apache'yi önde bir geçiş sunucusu olarak kullanamak istedim. Böylelikle php de interpret edebiliyorum.

Şimdi gelelim teknik detaylara. Dışardan rahatça erişmek için port olarak 80 yani http portunu kullanmak lazım. Kimse web sitesine girerken www.bilmemne.com:12345 yazmak istemez. Neyse Apache zaten default olarak http portuna kuruluyor. Redhat türevi sunucularda

$yum install httpd

diyerek apache sunucusunu kurabilirsiniz. İsterseniz veya özel bir sürüm kurmak istiyorsanız apache sitesinden de indirebilirsiniz. tar.gz uzantılı dosyayı indirip çıkartıyoruz. Sonra Tomcat'i kurmamız lazım. Sonra derken, aslında sıra farketmez. Onun için de

$yum install tomcat6

diyebilirsiniz. Benim zamanımda son sürümler Apache için 2.2 Tomcat için 6 idi. Hangi programların hangi versiyonlarının yum'da yüklü olduğunu

$yum search httpd

veya

$yum search tomcat

diyerek de kontrol edebilirsiniz. Neyse konumuza geri dönelim. yum ile yüklediğiniz zaman /etc klasörüne yüklüyor. İsterseniz taşıyabilirsiniz de. Mesela /opt'a taşıyabilirsiniz. Yum'suz kurmak için

$wget http://godel.cs.bilgi.edu.tr/apache/tomcat/tomcat-6/v6.0.26/bin/apache-tomcat-6.0.26.tar.gz

deyip indirebilirsiniz. Yalnız bu link sürekli değişebilir. O yüzden Apache sitesinden kontrol edin. Sonra

$tar xzvf apache-tomcat-6.0.26.tar.gz

deyip çıkartın. İsterseniz her defasında apazche-tomcat-6.0.26 yazmak istemiyorsanız sembolik link oluşturabilirsiniz. Bir nevi kısayol olarak düşünülebilir.

$ln -s /opt/apache-tomcat-6.0.26 tomcat

Şimdi teknik detaylara devam edelim. Tomcat'in varsayılan portu 8080. (Bunu da değiştirebilirsiniz. Değiştirmek için tomcat klasörü içinde conf klasöründe server.xml dosyasını açın. Orada comment edilmemiş vaziyette bulunan 8080 portunu değiştirebilirsiniz. Değiştirmeye filan gerek yok aslında ama 8080 başkasına atanmışsa veya illa başka port kullanmak istiyorsanız o sizin bileceğiniz iş.) Benim kullandığım metod proxy. Yani Apache içindeki bir klasörü direk Tomcat'a yönlendirmek. Bunun için Apache'nin httpd.conf doyasını değiştireceğiz.

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so

Bu satırlar zaten vardır. Yoksa ekleyin. Bunlardan sonra

ProxyPass /apac_dir/ http://localhost:8080/tomcat_dir/
ProxyPassReverse /apac_dir/ http://localhost:8080/tomcat_dir/

satırlarını yazın. Bunlar şu manaya geliyor. Apache'ye apac_dir dizini üzerinden gelen istekler direk olarak 8080 portunda çalışan sunucunun tomcat_dir dizinine yönledirilir. Burada Tomcat'e bir bağımlılık yok, porta bir bağımlılık yok, hatta localhost'a bile bağımlılık yok. Yani istediğiniz bir sunucunun istediğiniz bir portuna 'port' edebilirsiniz. Bunu yapmanız sonucunda artık www.mysiteadress.com/apac_dir dediğiniz zaman bu isteği Tomcat karşılar ve Tomcat'in webapps/ROOT içindeki tomcat_dir çalışır. Ha unutmadan b işemleri yaptıktan sonra tomcat ve apache'yi yeniden başlatmayı unutmayın.

Bu yaptığımız yöntem belli bir dizini tamamen apache üzerinden tomcat'e yönlendirmeye yaradı. Fakat apache statik dataları tomcatten daha verimli işlediği için bir dizine gelen bütün istekleri tomcat'e yönlendirmek mantılı olmayabilir. 'Daha verimli bir yol yok mu?' 'Sadece gereken dataları tomcat'e yönlendirsek?' diye düşünenler varsa mod_jk metodunu kullabilirler.