Cách cài đặt Apache Tomcat 9 trên CentOS 7

Apache Tomcat là web server dùng để chạy các ứng dụng web viết bằng Java.

Apache Tomcat triển khai các công nghệ liên quan đến Java như Servlet, JSP. Tính đến thời điểm bài viết này Apache Tomcat 9 đang là phiên bản mới nhất.

Trong bài hướng dẫn ngày hôm nay mình sẽ hướng dẫn bạn cách cài đặt Apache Tomcat 9 trên CentOS 7.

Chuẩn bị

Bạn cần chuẩn bị những thứ sau:

  • Một máy chủ Linux mới tinh cài CentOS 7. Mình dùng Linode để hoàn thành bài hướng dẫn này. Bạn có thể tham khảo dịch vụ Java Hosting giá rẻ.
  • Đăng nhập máy chủ Linux bằng một phần mềm SSH Client như MobaXTerm với user root.

Bước 1: Cài đặt Java

Đầu tiên bạn cần cập nhật hệ thống. Chạy lệnh sau:

yum -y update

Bạn cũng cần một số công cụ tiện ích như wget và nano mà chúng ta sẽ sử dụng tới ở bước sau. Chạy lệnh sau:

yum install wget nano -y

Tiếp theo bạn cần cài Java Development Kit (JDK). Đi tới trang tải JDK 8 trên website của Oracle. Click vào vào nút Accept License Agreement và copy link tải package .rpm thích hợp:

http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

Tải về JDK 8 RPM với lệnh sau:

wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u151-b12/e758a0de34e24606bca991d704f6dcbf/jdk-8u151-linux-x64.rpm"

Nhớ thay đổi số phiên bản cho phù hợp với tình huống của bạn.  Tiếp theo cài đặt JDK với lệnh sau:

yum localinstall jdk-8u151-linux-x64.rpm

Khi Java được cài đặt bạn kiểm tra phiên bản Java bằng lệnh sau:

java -version

Bạn sẽ nhìn thấy kết quả giống như thế này:

cài đặt apache tomcat 9 trên centos 7 5

Thiết lập môi trường Java Home

Trước khi bắt tay vào cài đặt Tomcat bạn cần thiết lập môi trường Java Home, bạn kiểm tra vị trí Java cài đặt với lệnh sau:

update-alternatives --config java

Bạn sẽ nhìn thấy kết quả giống như dưới:

cài đặt apache tomcat 9 trên centos 7 6

Bây giờ bạn sửa lại file môi trường (/etc/environment) bằng trình biên tập nano:

nano /etc/environment

Bổ sung thêm biến môi trường như thế này:

JAVA_HOME="/usr/java/jdk1.8.0_151/jre"

cài đặt apache tomcat 9 trên centos 7 7

Lưu lại file và thoát khỏi nano.

Tiếp theo, bạn sửa lại file .bash_profile:

nano ~/.bash_profile

Bổ sung biến môi trường như bên dưới:

export JAVA_HOME=/usr/java/jdk1.8.0_151/jre
export PATH=$JAVA_HOME/bin:$PATH

Lưu lại file và thoát khỏi nano.

Tải lại file .bash_profile bằng lệnh sau:

source ~/.bash_profile

Kiểm tra lại biến JAVA_HOME bằng lệnh sau:

echo $JAVA_HOME

Bạn sẽ nhìn thấy kết quả giống như bên dưới:

cài đặt apache tomcat 9 trên centos 7 2

Cài đặt Apache Tomcat 9

Đầu tiên chúng ta tạo một group tomcat:

groupadd tomcat

Tiếp theo, chúng bổ sung một user tomcat vào group này:

useradd -s /bin/false -g tomcat -d /opt/tomcat tomcat

-s /bin/false: disable shell access

-g tomcat: gán user mới vào group tomcat

-d /opt/tomcat: thư mục home của user.

Tải và cài đặt Apache Tomcat:

Di chuyển tới thư mục /opt với lệnh sau:

cd /opt/

Tải về bản Apache Tomcat 9 mới nhất:

wget http://www-us.apache.org/dist/tomcat/tomcat-9/v9.0.1/bin/apache-tomcat-9.0.1.tar.gz

Bây giờ giải nén bằng lệnh tar như bên dưới:

tar -xzvf apache-tomcat-9.0.1.tar.gz

Di chuyển tất cả file nằm trong apache-tomcat-9.0.1 tới thư mục tomcat:

mv apache-tomcat-9.0.1/* tomcat/

Thay đổi quyền sở hữu thư mục tomcat với lệnh sau:

chown -hR tomcat:tomcat tomcat

Tạo file service

Bạn cần tạo file service do vậy nó sẽ dễ dàng để start, stop hay restart apache tomcat service.

Chạy lệnh sau để tạo file service:

nano /etc/systemd/system/tomcat.service

Copy và paste nội dung bên dưới vào file service:

[Unit]
Description=Apache Tomcat 9 Servlet Container
After=syslog.target network.target
[Service]
User=tomcat
Group=tomcat
Type=forking
Environment=CATALINA_PID=/opt/tomcat/tomcat.pid
Environment=CATALINA_HOME=/opt/tomcat
Environment=CATALINA_BASE=/opt/tomcat
ExecStart=/opt/tomcat/bin/startup.sh
ExecStop=/opt/tomcat/bin/shutdown.sh
Restart=on-failure
[Install] 
WantedBy=multi-user.target

Lưu và thoát khỏi nano. Sau đó chạy những lệnh sau để khởi động tomcat service và bật service khi khởi động lại máy chủ:

systemctl daemon-reload
systemctl start tomcat
systemctl enable tomcat

Tomcat sẽ start và lắng nghe ở cổng 8080. Bạn có thể kiểm tra lại bằng lệnh sau:

netstat -plntu

Chạy lệnh sau để kiểm tra lại tình trạng tomcat service:

systemctl status tomcat

Bây giờ bạn mở trình duyệt và truy cập http://your_ip_address:8080. Bạn sẽ nhìn thấy trang chủ Apache Tomcat như sau:

cài đặt apache tomcat 9 trên centos 7 8

Cấu hình Tomcat User

Bạn chỉnh tomcat-users.xml sử dụng nano:

cd /opt/tomcat/conf/
nano tomcat-users.xml

Bổ sung nội dung sau:

<role rolename="manager-gui"/>
<user username="admin" password="password" roles="manager-gui,admin-gui"/>

File cuối cùng như sau:

cài đặt apache tomcat 9 trên centos 7 9

Mặc định manager gui và admin gui chỉ truy cập từ localhost. Do vậy bạn cần chỉnh sửa file context để truy cập từ xa.

Đầu tiên bạn chỉnh sửa file context.xml trong webapps:

cd /opt/tomcat/webapps/manager/META-INF/
nano context.xml

Comment code như bên dưới:

<!-- <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" /> -->

 

cài đặt apache tomcat 9 trên centos 7 10

Chỉnh sửa file context.xml còn lại với lệnh sau:

cd /opt/tomcat/webapps/host-manager/META-INF/
nano context.xml

Comment code tương tự như trên:

<!-- <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" /> -->

Lưu lại file và khởi động lại tomcat:

systemctl restart tomcat

Cấu hình tường lửa Firewalld

Trong trường hợp bạn chưa cài đặt tường lửa Firewalld bạn có thể cài đặt nó sử dụng lệnh sau:

yum install firewalld

Bật tường lửa và để nó chạy khi khởi động lại:

systemctl start firewalld
systemctl enable firewalld

Bây giờ bạn bổ sụng port tomcat 8080 vào tường lửa bằng lệnh sau:

firewall-cmd --zone=public --permanent --add-port=8080/tcp

Bạn sẽ nhìn thấy kết quả: success.

Bây giờ bạn tải lại tường lửa sử dụng lệnh sau:

firewall-cmd --reload

Bạn có thể kiểm tra lại tất cả các port và service được mở bằng lệnh sau:

firewall-cmd --list-ports
firewall-cmd --list-services

Đến đây bạn đã học được cách cài đặt Apache Tomcat 9 trên Centos 7.

Cách start Tomcat ở cổng 80

Để start Tomcat ở cổng 80 do vậy bạn không còn nhập cổng khi truy cập, chỉ có một cách như sau. Gõ vào 2 lệnh sau. Những lệnh này sẽ forward cổng 80 sang cổng 8080 mà Tomcat đang lắng nghe:

iptables -t nat -A PREROUTING -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8080
iptables -t nat -A PREROUTING -p udp -m udp --dport 80 -j REDIRECT --to-ports 8080

Note: Cách thay đổi file server.xml từ cổng 8080 sang 80 sẽ không làm việc vì chúng ta đang start Tomcat không phải user root. Những use không phải là root sẽ không có quyền mở cổng. Xem thảo luận Ở ĐÂY

Nếu bạn gặp vấn đề với quá trình cài đặt, hãy để lại bình luận bên dưới.