บันทึกการติดตั้ง Apache2 + Tomcat5.5 + mod_jk

ระบบ
และซอฟต์แวร์ที่ใช้

  • Fedora Core 4 (Kernel 2.6.12)
  • Apache Httpd 2.0.54
  • Java 2 Standard Edition 1.5 (http://java.sun.com/j2se/1.5.0/download.jsp)
  • Apache Tomcat 5.5.9 (http://jakarta.apache.org/tomcat)
  • mod_jk-1.2.14 (http://jakarta.apache.org/tomcat/connectors-doc)


ขั้นตอนการติดตั้ง

1. ติดตั้ง Java 2 Standard Editon 1.5
เมื่อดาว์นโหลดมา
แล้ว ก็ทำการ chmod เพื่อให้สามารถรันได้ครับ

#chmod +x jdk-1_5_0_04-linux-i586.rpm.bin

จาก
นั้นก็รันโปรแกรมเลยครับ ซึ่งมันจะทำการแตกไฟล์ออกมาเป็น jdk-1_5_0_04-linux-i586.rpm และติดตั้งให้โดยอัตโนมัติ

#./jdk-1_5_0_04-linux-i586.rpm.bin

เมื่อติดตั้งเสร็จ
แล้วพาธของ Java จะไปอยู่ที่ /usr/java/jdk1.5.0_04
ให้
เราทำการแก้ไขไฟล์ /etc/profile แล้วใส่ข้อความข้างล่าง ไว้ที่บรรทัดล่างสุดของไฟล์เลยนะครับ

export JAVA_HOME=/usr/java/jdk1.5.0_04
export PATH=$PATH:$JAVA_HOME/bin

บันทึกไฟล์
/etc/profile จากนั้นลองใช้คำสั่งข้างล่าง เพื่อตรวจสอบความถูกต้อง

#source /etc/profile
ลองตรวจสอบตัวแปรดูครับ
โดยใช้คำสั่ง echo
#echo $JAVA_HOME
/usr/java/jdk1.5.0_04


หลัง​จาก​ติดตั้งเสร็จ​แล้ว​ ​พาธหลักของโปรแกรม​ ​จะ​อยู่​ที่​ /usr/java/jdk1.5.0_06 ​นะครับ​ ​แต่ว่า​ ​เมื่อลอง​ใช้​คำ​สั่ง​ java -version ​เพื่อตรวจสอบ​ ​จะ​พบว่าตัว​ jre ​ยัง​เป็น​ของ​ gcj ​อยู่​นะ

#java -version
java version "1.4.2"
gij (GNU libgcj) version 4.0.2 20051125 (Red Hat 4.0.2-8)

Copyright (C) 2005 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

​และ​ลอง​ใช้​คำ​สั่ง​ alternative --display java ​ดู​เพื่อตรวจสอบครับ
#alternative – display java
java - status is auto.
link currently points to /usr/lib/jvm/jre-1.4.2-gcj/bin/java
/usr/lib/jvm/jre-1.4.2-gcj/bin/java - priority 1420
slave rmiregistry: /usr/lib/jvm/jre-1.4.2-gcj/bin/rmiregistry
slave jre_exports: /usr/lib/jvm-exports/jre-1.4.2-gcj
slave jre: /usr/lib/jvm/jre-1.4.2-gcj
Current `best' version is /usr/lib/jvm/jre-1.4.2-gcj/bin/java.

​ต่อมา​จึง​ทำ​การเพิ่ม​ sun java ​เข้า​ไป​ใน​ alternative ​ครับ

#alternative --install /usr/bin/java java /usr/java/jdk1.5.0_06/bin/java 2
​จาก​นั้น​ก็ทำ​การปรับแต่ง​ให้​ใช้​ sun java ​ครับ
# alternatives --config java
There are 2 programs which provide 'java'.
Selection Command
-----------------------------------------------
*+ 1 /usr/lib/jvm/jre-1.4.2-gcj/bin/java
2 /usr/java/jdk1.5.0_06/bin/java

Enter to keep the current selection[+], or type selection number: 2

​จาก​นั้น​ก็ลองตรวจสอบดูครับ
# alternatives --display java
java - status is manual.
link currently points to /usr/java/jdk1.5.0_06/bin/java
...
...

​และ​ลอง​ใช้​คำ​สั่ง​ java -version ​อีกครั้ง
#java -version
java version "1.5.0_06"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_06-b05)
Java HotSpot(TM) Client VM (build 1.5.0_06-b05, mixed mode, sharing)



2.
ติดตั้ง Tomcat 5.5.9

#tar xvfz jakarta-tomcat-5.5.9.tar.gz
#mv jakarta-tomcat-5.5.9 /usr/local
#cd /usr/local
#ln -s jakarta-tomcat-5.5.9 tomcat55

3.
ติดตั้ง JK Connector (mod_jk)
#tar xvfz jakarta-tomcat-connectors-1.2.14-src.tar.gz
#cd jakarta-tomcat-connectors-1.2.14-src
#cd jk/native
#./configure --with-apxs=/usr/sbin/apxs --enable-jni --enable-EAPI

สำ
หรับการคอนฟิก จะมีปัญหาเกิดขึ้นมาครับ ด้งนี้

need to check for Perl first, apxs depends on it...
checking for perl... /usr/bin/perl
configure: error: Invalid location for apxs: '/usr/sbin/apxs'

ซึ่ง
ระบบจะแจ้งว่า เราไม่มี /usr/sbin/apxs เราจะต้องติดตั้งแพคเกจ httpd-devel ก่อนนะครับ สำหรับผม จะใช้วิธีติดตั้งจาก apt-get ก็แล้วกันครับ การติดตั้งแบบ apt-get install นี้ จะง่ายในขั้นตอนของการค้นหา Dependency (การขึ้นต่อกัน) ของซอฟต์แวร์

#apt-get install httpd-devel
apt-get install httpd-devel
Reading Package Lists... Done
Building Dependency Tree... Done
The following extra packages will be installed:
apr-devel (0.9.6-3.1)
apr-util-devel (0.9.6-2)
The following NEW packages will be installed:
apr-devel (0.9.6-3.1)
apr-util-devel (0.9.6-2)
httpd-devel (2.0.54-10.1)
0 upgraded, 3 newly installed, 0 removed and 0 not upgraded.
Need to get 927kB of archives.
After unpacking 6409kB of additional disk space will be used.
Do you want to continue? [Y/n]

จาก
นั้นก็ลองทำการคอนฟิก ./configure และใช้ออฟชันเหมือนข้างบน อีกรอบ ก็ผ่านครับ ต่อมาก็ทำการ make ได้เลย ดังนี้
#make

จาก
นั้นก็ทำการทำสำเนาไฟล์ mod_jk.so ไปไว้ในโมดูลไดเรคเทอรีของ apache ครับ
#cp apache-2.0/mod_jk.so /etc/httpd/modules/

4.
สร้างไฟล์ workers.properties
#vi /etc/httpd/conf/workers.properties

workers.tomcat_home=/usr/local/tomcat55
workers.java_home=$JAVA_HOME
ps=/
worker.list=default

worker.default.port=8009
worker.default.host=localhost
worker.default.type=ajp13
worker.default.lbfactor=1

5.
สร้างไฟล์ mod_jk.conf
#vi /etc/httpd/conf.d/mod_jk.conf


LoadModule jk_module modules/mod_jk.so

#
# Mod_jk settings
#

JkWorkersFile "conf/workers.properties"
JkLogFile "logs/mod_jk.log"

JkLogLevel error

JkMount /jsp-examples default
JkMount /jsp-examples/* default

# End of mod_jk settings

6.
ทดสอบ
#cd /usr/local/tomcat55/bin
#./catalina.sh start
#/etc/init.d/httpd restart

ทดลองเปิดเว็บบราวเซอร์
แล้วเรียกไปที่ http://localhost:8080/jsp-examples
จาก
นั้นทดลองเรียกไปที่ http://localhost/jsp-examples ผลลัพธ์ที่ได้ต้องออกมาเหมือนกันทั้งสองหน้านะครับ

เพิ่มเติมครับ
ในกรณีที่เราต้องการให้ผู้ใช้คนอื่นๆ สามารถใช้งาน jsp/servlet ในโฮมไดเรคเทอรีของตัวเองได้ เราต้องทำดังนี้ครับ

แก้ไขไฟล์ server.xml แล้วหาตรงแทก ครับ ซึ่งจะมีลักษณะแบบนี้
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">