Apache Tomcat เซิร์ฟเวอร์สำหรับ Java Web App ที่ใช้กันมากที่สุด
ถ้าเขียน Web Application ด้วย Java แล้วต้อง Deploy ขึ้นเซิร์ฟเวอร์ Apache Tomcat คือตัวเลือกยอดนิยมที่ใช้กันทั่วโลก เป็น Open-source Web Server และ Servlet Container จาก Apache Software Foundation รองรับ Java Servlet, JSP และ WebSocket ด้วยความเบาและตั้งค่าง่าย เหมาะกับทั้ง Development และ Production

Tomcat แตกต่างจาก Apache HTTP Server ตรงที่ออกแบบมาเพื่อรัน Java Application โดยเฉพาะ ไม่ใช่แค่ Serve Static Files ฟรี Open Source ไม่มีค่าลิขสิทธิ์ ใช้ Resource น้อย มี Community ใหญ่ และอัปเดตแก้ช่องโหว่ Security เร็ว
ขั้นตอนติดตั้ง Tomcat บน Ubuntu
ติดตั้ง Java ก่อน
Tomcat ต้องการ Java Runtime Environment (JRE) หรือ JDK
sudo apt update
sudo apt install default-jdk -y
java -version
เห็น Version ของ Java แสดงว่าติดตั้งสำเร็จ
สร้าง User สำหรับ Tomcat
เพื่อความปลอดภัย ไม่ควรรัน Tomcat ด้วย root สร้าง User แยก
sudo useradd -m -U -d /opt/tomcat -s /bin/false tomcat
ดาวน์โหลดและติดตั้ง
ดู Version ล่าสุดที่เว็บ Apache Tomcat แล้วดาวน์โหลด
cd /tmp
wget https://downloads.apache.org/tomcat/tomcat-10/v10.1.20/bin/apache-tomcat-10.1.20.tar.gz
sudo tar -xzf apache-tomcat-10.1.20.tar.gz -C /opt/tomcat --strip-components=1
sudo chown -R tomcat:tomcat /opt/tomcat
sudo chmod +x /opt/tomcat/bin/*.sh
สร้าง Systemd Service
สร้างไฟล์ /etc/systemd/system/tomcat.service ให้ Tomcat เริ่มทำงานอัตโนมัติเมื่อ Boot
[Unit]
Description=Apache Tomcat
After=network.target
[Service]
Type=forking
User=tomcat
Group=tomcat
Environment=JAVA_HOME=/usr/lib/jvm/default-java
Environment=CATALINA_HOME=/opt/tomcat
ExecStart=/opt/tomcat/bin/startup.sh
ExecStop=/opt/tomcat/bin/shutdown.sh
[Install]
WantedBy=multi-user.target
เปิด Service
sudo systemctl daemon-reload
sudo systemctl start tomcat
sudo systemctl enable tomcat
sudo systemctl status tomcat
เห็น active (running) ก็โอเค เปิด Browser ไปที่ http://your-server-ip:8080 จะเห็นหน้าแรกของ Tomcat
ตั้งค่า Tomcat Manager
Tomcat มี Web-based Manager สำหรับ Deploy และจัดการ Application แก้ไข /opt/tomcat/conf/tomcat-users.xml เพิ่ม User
<role rolename="manager-gui"/>
<role rolename="admin-gui"/>
<user username="admin" password="your-strong-password" roles="manager-gui,admin-gui"/>
ถ้าเข้า Manager จากเครื่องอื่นไม่ได้ แก้ context.xml ใน /opt/tomcat/webapps/manager/META-INF/
Deploy WAR Files
ผ่าน Tomcat Manager
เข้า Manager ผ่าน Browser เลือก WAR File to Deploy อัปโหลด .war File ได้เลย
ผ่าน Command Line
วาง .war File ไว้ใน /opt/tomcat/webapps/ Tomcat จะ Auto-deploy
sudo cp myapp.war /opt/tomcat/webapps/
sudo chown tomcat:tomcat /opt/tomcat/webapps/myapp.war
เข้าถึงได้ที่ http://your-server-ip:8080/myapp
เคล็ดลับ Security
ซ่อน Version Information
แก้ server.xml เพิ่ม Attribute server ใน Connector
ลบ Default Applications
ลบ Examples และ Docs ใน Production เพราะอาจเป็นช่องโหว่
sudo rm -rf /opt/tomcat/webapps/examples
sudo rm -rf /opt/tomcat/webapps/docs
ใช้ HTTPS
Setup Reverse Proxy ด้วย Nginx หรือ Apache HTTP Server ข้างหน้า Tomcat ใช้ SSL Certificate จาก Let's Encrypt
จำกัด Access
ตั้ง Firewall เปิดเฉพาะ Port ที่จำเป็น ใช้ RemoteAddrValve จำกัด IP ที่เข้าถึง Manager เปลี่ยน Default Password ทุกตัว
Performance Tuning
ปรับค่า JVM ในไฟล์ /opt/tomcat/bin/setenv.sh
export CATALINA_OPTS="-Xms512m -Xmx1024m -XX:+UseG1GC"
ปรับ Xms และ Xmx ตาม RAM ของเครื่อง
คำถามที่พบบ่อย (FAQ)
Tomcat กับ WildFly ต่างกันอย่างไร?
Tomcat เป็น Servlet Container เหมาะกับ Servlet และ JSP ส่วน WildFly เป็น Full Java EE Application Server รองรับ EJB, JMS และ Feature อื่น ๆ ครบ ถ้าไม่ต้องการ Full Java EE Tomcat เบากว่าและง่ายกว่ามาก
Tomcat ใช้ RAM เท่าไหร่?
ขึ้นอยู่กับ Application เริ่มต้นใช้ประมาณ 256-512 MB Application ขนาดใหญ่อาจต้องการ 1-2 GB ขึ้นไป
Tomcat รองรับ HTTP/2 ไหม?
รองรับตั้งแต่ Tomcat 9 ขึ้นไป ต้องเปิดใช้ SSL/TLS ก่อนถึงจะใช้ HTTP/2 ได้
สรุป
Apache Tomcat เหมาะกับการ Host Java Web Application ทุกขนาด ตั้งค่า Security ดี ปรับ Performance เหมาะสม ก็รองรับ Traffic จำนวนมากได้ สำหรับใครที่มองหาเซิร์ฟเวอร์ Host Java Application VPS ของ DriteStudio รองรับ Java Environment ได้ดี มี RAM และ CPU เพียงพอ พร้อม Root Access ตั้งค่าได้ตามใจ หรือHosting จาก DriteStudio ก็มีแพลนสำหรับ Production ติดต่อทีมงานได้เลย