Saturday, March 16, 2013

ดตั้ง Tomcat 6, java sdk 6 เพื่อ run jsf บน ubuntu linux

พอดีมีปัญหาว่าจะ run jsf บน linux เลยติดตั้ง ubuntu ซึ่ง ubuntu มี tomcat กับ java ติดตั้งมาให้เรียบร้อย แต่พอลอง deploy jsf ขึ้นไป กลับไม่ start อ่ะครับ ก็เลยลองหลากหลายวิธี (แบบมั่ว ๆ )
ในที่สุด สรุปได้ว่า ต้องลง Tomcat version ที่ตรงกับ ที่เราพัฒนา jsf
คือผมพัฒนา jsf บน windows XP นะครับ แล้วติดตั้ง Tomcat บน windows แต่พอ deploy
ไปไว้ใน linux ก็ run ไม่ได้ ดังนั้นจึงลองติดตั้ง jdk ใหม่ กับ Tomcat ใหม่ ให้ version มันตรงกับที่
ใช้ใน windows XP ก็สามารถ Run ได้ ซึ่งคาดว่าน่าจะเป็นที่ Version ของ Tomcat นะ (คิดว่านะ ?)
เอาเป็นว่าถ้าใครมีปัญหาแบบนี้ ก็ไป download tomcat ใหม่ มาลงใหม่ละกัน ให้ version ตรงกันกับที่
เราพัฒนา ซึ่งผมใช้ Tomcat V.6.0.20 กับ jdk 1.6.0.14-b08  ไม่แน่ใจว่าปัญหามันเป็นที่ Tomcat หรือ
ว่า jdk เพราะตอนที่ติดตั้ง ubuntu มันจะมีให้เลือก ติดตั้ง Tomcat ด้วย แต่จะเป็น Version 6.0.18 ส่วน jdk ก็จะเป็น openJDK 1.6.0.0 อ่ะ แต่ขี้เกียจไปหาสาเหตุที่แท้แระ ฮ่า ๆๆ เอาเป็นว่าถ้าใครมีปัญหาอย่างนี้ก็ลง Tomcat ใหม่เลยละกัน แล้วก็ลอง run ดูถ้าได้แสดงว่าเป็นที่ Tomcat อ่ะ
วิธีติดตั้งตามนี้นะ
ถ้าเป็น jdk ผมใช้
#apt-get install sun-java6-sdk
ระบบจะไปติดตั้ง java ที่ directory 
/usr/lib/jvm/java-6-sun
เช็คว่าติดตั้งได้ไหม โดยใช้
#java -version
มันจะแสดงว่า
java version "1.6.0_0"
OpenJDK Runtime Environment (IcedTea6 1.4.1)(6b14-1.4.1-0ubuntu7)
OpenJDK Client VM (build 14.0-b08, mixed mode, sharing)
มันขึ้นอย่างนี้แสดงว่า ตัว JRE เป็น OpenJDK ที่ผมติดตั้งตอนแรก ยังไม่ได้เอาออก
แต่ถ้าไปดูใน  Directory  /usr/lib/jvm/ จะเห็น Directory jav-6-sun กับ java-6-sun-1.6.0.14
ด้วย ซึ่งเป็น versin ที่ผมใช้ใน windowsXP อ่ะครับ
จากนั้นติดตั้ง Tomcat6 ผมจะไม่ใช้วิธี apt-get นะเพราะวิธีนี้ จะได้ version 6.0.18 อ่ะ ไม่ใช่ 6.0.20
ไป download ที่ http://tomcat.apache.org แล้ว Click Tomcat6.x ตรงกลุ่ม download
menu ด้านซ้ายมือ แล้วเลือก tar.gz  ตรง core นะครับ จะได้ file
apache-tomcat-6.0.20.tar.gz มา 
copy ไปยัง ubuntu จากนั้น แตก file โดยใช้
#tar -xvf apache-tomcat-6.0.20.tar.gz
ซึ่งมันจะแตก file โดยสร้าง directory apache-tomcat-6.0.20 มาให้เรานะครับ
แต่ผมไม่อยากได้ชื่อยาวแบบนี้ เลยเปลี่ยนเป็น tomcat เฉย ๆ ดีกว่า โดยใช้
#mv apache-tomcat-6.0.20 tomcat
จากนั้น copy tomcat ไปไว้ที่ /home/opt อันนี้แล้วแต่ว่าใครอยากไปวางที่ไหนนะครับ
ไม่ตายตัว
แล้วจากนั้นก็ copy file catalina.sh ไปไว้ที่ /etc/init.d  จะเป็น file ไว้ run tomcat นะครับ
#cp /home/opt/tomcat/bin/catalina.sh /etc/init.d
จากนั้นแก้ไข file catalina.sh
#nano /etc/init.d/catalina.sh
ซึ่งจะเป็นการกำหนดค่าตัวแปรต่าง ๆ เอาไว้บนสุดก็ได้นะครับ เพิ่มตามนี้นะ
JAVA_HOME=/home/opt/tomcat
CLASSPATH=/home/opt/tomcat/jre/bin/rt.jar
CATALINA_HOME=/home/opt/tomcat
PATH=$PATH:/home/opt/tomcat/bin
export JAVA_HOME
export CLASSPATH
export CATALINA_HOME
export PATH
แล้วก็ไปแก้ไข file profile ที่ directory etc
#nano /etc/profile
โดยเพิ่ม ข้อความ เหมือนกับทำใน catalina.sh
JAVA_HOME=/home/opt/tomcat
CLASSPATH=/home/opt/tomcat/jre/bin/rt.jar
CATALINA_HOME=/home/opt/tomcat
PATH=$PATH:/home/opt/tomcat/bin
export JAVA_HOME
export CLASSPATH
export CATALINA_HOME
export PATH
โดยบรรทัดสุดท้าย มันจะมีข้อความ umask 022 อันนี้ในเว็บที่ไปหาอ่าน
เขาจะบอกว่าเป็น config แบบเก่า แต่ file ที่ผมเปิด มันจะมีบรรทัดนี้อยู่แล้วอ่ะครับ
จากนั้นก็ start tomcat โดยใช้
#/etc/init.d/catalina.sh start
มันจะแสดงข้อความ
Using CATALINA_BASE: /home/opt/tomcat
Using CATALINA_HOME: /home/opt/tomcat
Using CATALINA_TMPDIR: /home/opt/tomcat/temp
Using JAVA_HOME: /home/opt/tomcat
จากนั้นเรามาลองเช็คว่า Program ทำงานไหม โดยใช้
#netstat -lnt
มันจะแสดง
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address              Foreign Address        State
tcp6             0           0 :::8080                         :::*                              LISTEN
ซึ่งแสดงว่ามีการเปิด Port 8080 แล้ว ปรกติ Tomcat จะใช้ Port 8080 เป็นค่า default
ถ้าหากจะเปลี่ยน Port ก็ไปแก้ File server.xml โดยหาข้อความ port="8080" แล้วแก้
ให้เป็น port ที่ต้องการ โดยวิธีดูว่ามี port ไหนใช้ไปแล้วก็จาก คำสั่ง netstat ได้
เพราะมันจะแสดง port ที่ใช้มาให้ดู ผมเลือกเปลี่ยนเป็น 8090 อ่ะครับ
#nano /home/opt/tomcat/conf/server.xml
จากนั้นลองเปิด WebBrowser แล้วใส่ url ที่ Address ดังนี้
http://192.168.1.35:8090
โดยตัวเลข 192.168.1.35 เป็น เลข Ip ของ server ubuntu ของผมนะครับ
ถ้าจะเช็ค ip ของ ubuntu ให้ใช้
#ifconfig
จากนั้นเราจะ deploy web app ของเราผ่าน web admin ของ tomcat ก็ต้องมา
แก้ config ใน file tomcat-users.xml ก่อน ซึ่งอยู่ใน /home/opt/tomcat/conf
โดยเราจะเพิ่ม role manager กับ admin เข้าไปนะครับ แล้วก็เพิ่ม user root
เข้าไป โดยให้ roles เป็น manager กับ admin ซึ่ง ใน File เก่า เขาจะมี Comment
Block ข้อความของ ส่วน เซ็ท role นี้ เราก็ต้องเอาออกก่อนนะครับ คือที่เป็น
<!--           -->   แล้วเพิ่มข้อความเข้าไปจะได้ดังนี้ครับ
<tomcat-users>
       <role rolename="tomcat"/>
       <role rolename="role1"/>
       <role rolename="manager"/>
        <role rolename="admin"/>
       <user username="tomcat"  password="tomcat"  roles="tomcat"/>
       <user username="both"  password="tomcat"  roles="tomcat,role1"/>
       <user username="role1"  password="tomcat"  roles="role1"/>
       <user username="root"  password="root"  roles="manager,admin"/>
</tomcat-users>
แล้วลองเข้าไปที่ Tomcat Manager ดูครับ
http://192.168.1.35:8090/manager/html
ซึ่งจริง ๆ ในหน้าแรกของ tomcat ก็จะมี link อยู่ในส่วน Administration ชื่อ Tomcat Manager
นะครับ เมื่อเข้าไปจะมี ให้ใส่ user name password เมื่อใส่แล้ว เราก็ deploy file ได้ที่ WAR file to deploy
จะอยู่ส่วนล่างสุดนะครับ ก็ browse file ที่เรา deploy จะเป็นนามสกุล .war  แล้วกดปุ่ม deploy
ในรายการด้านบนที่เป็นส่วนของ Application จะเพิ่มชื่อของ WebApp ที่เราเพิ่มเข้าไป และ Column
Running จะต้องเป็น true ก็ทดสอบลองพิมพ์ url เป็น web ที่เรา deploy ดูนะครับ โดยของผมเป็น WebApplication01
ก็จะพิมพ์
http://192.168.1.35:8090/WebApplication01
ก็จะแสดง web application มาให้เราได้หายเหนื่อยอ่ะครับ ฮ่า ๆๆๆ เหนื่อยกว่าจะหาข้อมูลนี้ได้
พอดีเพิ่งเป็นมือใหม่สำหรับ linux นะครับ ^L^

0 comments:

Post a Comment

 
Design by GURU