Uygulama sunucuların önüne web sunucu koymak, hem ince ayar yapabileceğimiz değişkenleri arttırıyor, hem de statik sayfaları sunmada apache gibi web sunucuları glassfish gibi uygulama sunucularından daha başarılı.
En basit şekilde, mod_proxy kullanılabilir, fakat bu sefer işi “daha doğru” yapıp AJP üzerinden bağlantı yapmaya karar verdim.
Kullanacağım sanal makine, Amazon EC2 üzerindeki bir ubuntu 10.10 dağıtımı.
Öncelikle apache web sunucusu ve mod_jk’yı yüklemek için
ubuntu@ip-10-10-10-75:~$ sudo apt-get install libapache2-mod-jk
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following extra packages will be installed:
apache2 apache2-mpm-worker apache2-utils apache2.2-bin apache2.2-common libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap ssl-cert
Suggested packages:
apache2-doc apache2-suexec apache2-suexec-custom tomcat6 libapache-mod-jk-doc openssl-blacklist
The following NEW packages will be installed:
apache2 apache2-mpm-worker apache2-utils apache2.2-bin apache2.2-common libapache2-mod-jk libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap ssl-cert
0 upgraded, 11 newly installed, 0 to remove and 2 not upgraded.
Need to get 3,573kB of archives.
After this operation, 11.9MB of additional disk space will be used.
Do you want to continue [Y/n]? y |
ubuntu@ip-10-10-10-75:~$ sudo apt-get install libapache2-mod-jk
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following extra packages will be installed:
apache2 apache2-mpm-worker apache2-utils apache2.2-bin apache2.2-common libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap ssl-cert
Suggested packages:
apache2-doc apache2-suexec apache2-suexec-custom tomcat6 libapache-mod-jk-doc openssl-blacklist
The following NEW packages will be installed:
apache2 apache2-mpm-worker apache2-utils apache2.2-bin apache2.2-common libapache2-mod-jk libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap ssl-cert
0 upgraded, 11 newly installed, 0 to remove and 2 not upgraded.
Need to get 3,573kB of archives.
After this operation, 11.9MB of additional disk space will be used.
Do you want to continue [Y/n]? y
daha sonra /etc/apache altında jk isimli bir dizin açıyoruz ve içerisinde workers.properties isimli bir dosya yaratıyoruz. Bu dosyanın içeriği şu şekilde:
worker.list=worker1
worker.worker1.type=ajp13
worker.worker1.host=localhost
worker.worker1.port=8009
worker.worker1.lbfactor=50
worker.worker1.cachesize=10
worker.worker1.cache_timeout=600
worker.worker1.socket_keepalive=1
worker.worker1.socket_timeout=300 |
worker.list=worker1
worker.worker1.type=ajp13
worker.worker1.host=localhost
worker.worker1.port=8009
worker.worker1.lbfactor=50
worker.worker1.cachesize=10
worker.worker1.cache_timeout=600
worker.worker1.socket_keepalive=1
worker.worker1.socket_timeout=300
workerimizi tanımladıkdan sonra, /etc/apache2/conf.d/ altına jk isimli bir dosya oluşturuyoruz; içeriği:
JkWorkersFile /etc/apache2/jk/workers.properties
JkLogFile /var/log/apache2/mod_jk.log
JkLogLevel info
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
JkRequestLogFormat "%w %V %T"
JkShmFile /etc/apache2/jk/jk.shm |
JkWorkersFile /etc/apache2/jk/workers.properties
JkLogFile /var/log/apache2/mod_jk.log
JkLogLevel info
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
JkRequestLogFormat "%w %V %T"
JkShmFile /etc/apache2/jk/jk.shm
Apache tarafında son olarak, /etc/apache2/sites-available/default dosyasında VirtualHost tanımı altına hangi klasörün workera bağlanacağını yazıyoruz:
JkMount /GFTest/* worker1 |
JkMount /GFTest/* worker1
Apache’de yapılacaklar bu kadar. Sıra geldi glassfish’e; sadece komut satırından iki komut çalıştıracağız. GlassFish kurulum klasöründeki bin klasöründe iken,
./asadmin create-http-listener --listenerport 8009 --listeneraddress 0.0.0.0 --defaultvs server jk-connector
./asadmin set configs.config.server-config.network-config.network-listeners.network-listener.jk-connector.jk-enabled=true |
./asadmin create-http-listener --listenerport 8009 --listeneraddress 0.0.0.0 --defaultvs server jk-connector
./asadmin set configs.config.server-config.network-config.network-listeners.network-listener.jk-connector.jk-enabled=true
Hepsi bu.
GlassFish sunucuda GFTest altına deploy edeceğimiz herhangi bir uygulamaya artık apache üzerinden erişebiliriz.