บันทึกการติดตั้ง 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 แล้วหาตรงแทก
xmlValidation="false" xmlNamespaceAware="false">