Bạn đang tìm kiếm một hướng dẫn toàn diện để triển khai ứng dụng Java web? Việc kết hợp Apache Tomcat 10 và Ubuntu 20.04 tạo nên một nền tảng máy chủ mạnh mẽ, ổn định và hiệu quả. Tomcat 10, với vai trò là một Java Servlet container mã nguồn mở, mang đến môi trường lý tưởng để chạy các ứng dụng web Java hiện đại. Trong khi đó, Ubuntu 20.04 là một hệ điều hành Linux nổi tiếng về tính bảo mật và sự hỗ trợ lâu dài. Bài viết này của AZWEB sẽ hướng dẫn bạn chi tiết từng bước, từ khâu chuẩn bị, cài đặt, cấu hình cho đến cách vận hành và khắc phục sự cố phổ biến. Hãy cùng bắt đầu hành trình xây dựng máy chủ web của riêng bạn một cách chuyên nghiệp!
Giới thiệu về Apache Tomcat 10 và Ubuntu 20.04
Bạn đã bao giờ tự hỏi làm thế nào các ứng dụng web viết bằng Java có thể chạy trên máy chủ chưa? Đó chính là nhờ vào các công cụ như Apache Tomcat. Về cơ bản, Apache Tomcat 10 là một máy chủ ứng dụng web mã nguồn mở, chuyên dùng để triển khai các ứng dụng dựa trên công nghệ Java Servlet, JavaServer Pages (JSP), và Expression Language (EL). Nó đóng vai trò trung gian, nhận yêu cầu từ người dùng, xử lý logic trong ứng dụng Java và trả về kết quả.
Trong khi đó, Ubuntu 20.04 (Focal Fossa) là một trong những phiên bản hệ điều hành Linux phổ biến và ổn định nhất. Với chu kỳ hỗ trợ dài hạn (LTS), Ubuntu 20.04 đảm bảo cung cấp các bản vá bảo mật và cập nhật quan trọng trong nhiều năm, là lựa chọn lý tưởng cho môi trường máy chủ sản xuất. Hệ điều hành này nổi bật với hiệu suất cao, cộng đồng hỗ trợ lớn và kho phần mềm phong phú.
Vậy tại sao nên chọn Apache Tomcat 10 trên Ubuntu 20.04? Sự kết hợp này mang lại một nền tảng đáng tin cậy, bảo mật và hiệu quả về chi phí. Bạn vừa có được sự linh hoạt của một Java container hàng đầu, vừa tận dụng được sự ổn định của một hệ điều hành máy chủ được tin dùng trên toàn thế giới. Trong bài viết này, chúng ta sẽ cùng nhau đi qua toàn bộ quy trình, từ việc chuẩn bị hệ thống đến cài đặt và cấu hình hoàn chỉnh Apache Tomcat 10.
Yêu cầu hệ thống trước khi cài đặt Apache Tomcat 10
Trước khi bắt đầu, việc chuẩn bị một hệ thống đáp ứng đủ yêu cầu là bước cực kỳ quan trọng. Điều này giúp quá trình cài đặt diễn ra suôn sẻ và tránh được những lỗi không đáng có. Hãy cùng AZWEB điểm qua các yêu cầu cần thiết nhé.
Phiên bản hệ điều hành và cập nhật cần thiết
Đầu tiên, bạn cần đảm bảo rằng mình đang sử dụng đúng phiên bản hệ điều hành Ubuntu 20.04 LTS. Để chắc chắn, bạn có thể kiểm tra phiên bản bằng lệnh lsb_release -a.
Sau khi xác nhận phiên bản, bước tiếp theo là cập nhật hệ thống. Việc này đảm bảo tất cả các gói phần mềm hiện có, bao gồm cả các thư viện hệ thống và bản vá bảo mật, đều ở phiên bản mới nhất. Hãy mở terminal và chạy các lệnh sau:
sudo apt update
sudo apt upgrade -y
Quá trình này có thể mất vài phút tùy thuộc vào tình trạng hệ thống của bạn. Hoàn thành bước này là bạn đã có một nền tảng vững chắc để tiếp tục.

Cài đặt môi trường Java (JDK)
Apache Tomcat được viết bằng Java, vì vậy nó cần một Môi trường Phát triển Java (Java Development Kit – JDK) để hoạt động. Tomcat 10 yêu cầu Java SE 8 hoặc phiên bản mới hơn. Lựa chọn phổ biến và được khuyến nghị trên Ubuntu là OpenJDK.
Để cài đặt OpenJDK phiên bản 11 (một lựa chọn ổn định và tương thích tốt), bạn chỉ cần chạy lệnh sau:
sudo apt install openjdk-11-jdk -y
Sau khi cài đặt hoàn tất, hãy kiểm tra lại để chắc chắn rằng Java đã được cài đặt thành công. Sử dụng lệnh:
java -version
Nếu bạn thấy thông tin phiên bản OpenJDK 11 hiển thị trên màn hình, điều đó có nghĩa là bạn đã sẵn sàng cho bước tiếp theo.

Các bước tải xuống Apache Tomcat 10
Khi hệ thống đã sẵn sàng, chúng ta sẽ tiến hành tải về phiên bản Apache Tomcat 10 mới nhất từ trang chủ chính thức. Việc này đảm bảo bạn có được mã nguồn sạch và an toàn.
Lấy bản Apache Tomcat 10 chính thức từ trang chủ
Cách tốt nhất để tải Tomcat là truy cập trực tiếp vào trang web của Apache. Bạn có thể tìm đến mục “Download” và chọn phiên bản Tomcat 10. Tại đây, bạn sẽ thấy nhiều định dạng file khác nhau. Đối với Ubuntu, định dạng tar.gz là lựa chọn phù hợp nhất.
Hãy sao chép liên kết tải xuống của file tar.gz trong phần “Core”. Liên kết này sẽ được sử dụng trong bước tiếp theo để tải file trực tiếp về máy chủ của bạn thông qua dòng lệnh.
Tải xuống và giải nén file cài đặt
Bây giờ, hãy sử dụng terminal để tải file về máy chủ. Lệnh wget là công cụ hoàn hảo cho việc này. Giả sử phiên bản mới nhất là 10.1.19 (bạn nên thay thế bằng phiên bản mới nhất tại thời điểm cài đặt), lệnh sẽ như sau:
wget https://dlcdn.apache.org/tomcat/tomcat-10/v10.1.19/bin/apache-tomcat-10.1.19.tar.gz
Sau khi tải xong, bạn sẽ có một file apache-tomcat-10.1.19.tar.gz trong thư mục hiện tại. Tiếp theo, chúng ta cần giải nén nó. Một quy ước phổ biến là đặt các ứng dụng của bên thứ ba vào thư mục /opt. Hãy giải nén và di chuyển thư mục Tomcat đến đó.
sudo tar -xzvf apache-tomcat-10.1.19.tar.gz -C /opt/
Để dễ quản lý, bạn có thể tạo một liên kết tượng trưng (symbolic link) đến thư mục cài đặt. Điều này giúp việc nâng cấp sau này trở nên đơn giản hơn.
sudo ln -s /opt/apache-tomcat-10.1.19 /opt/tomcat
Từ giờ, bạn có thể truy cập Tomcat qua đường dẫn /opt/tomcat.

Hướng dẫn cài đặt Apache Tomcat 10 trên Ubuntu 20.04
Sau khi đã tải và giải nén, bước tiếp theo là cấu hình hệ thống để Tomcat có thể hoạt động một cách an toàn và tự động. Chúng ta sẽ tạo một người dùng riêng và thiết lập dịch vụ systemd.
Tạo user và phân quyền cho Tomcat
Chạy các dịch vụ với quyền root là một rủi ro bảo mật lớn. Do đó, thực hành tốt nhất là tạo một người dùng hệ thống riêng chỉ để chạy Tomcat. Hãy tạo một user tên là tomcat không có thư mục nhà và không có quyền đăng nhập shell:
sudo useradd -r -m -U -d /opt/tomcat -s /bin/false tomcat
Tiếp theo, chúng ta cần gán quyền sở hữu thư mục cài đặt Tomcat cho người dùng tomcat. Điều này cho phép Tomcat có toàn quyền đọc, ghi và thực thi các file trong thư mục của nó.
sudo chown -R tomcat: /opt/tomcat
Bằng cách này, bạn đã cô lập Tomcat trong một môi trường an toàn hơn.

Cấu hình khởi động và dịch vụ systemd cho Tomcat
Để Tomcat có thể tự động khởi động cùng hệ thống và được quản lý dễ dàng như một dịch vụ (service), chúng ta sẽ tạo một file unit systemd. Tạo một file mới tại /etc/systemd/system/tomcat.service:
sudo nano /etc/systemd/system/tomcat.service
Dán nội dung sau vào file này. Lưu ý rằng bạn cần tìm đường dẫn chính xác đến JAVA_HOME của mình bằng lệnh update-java-alternatives -l và thay thế vào file cấu hình.
[Unit]
Description=Apache Tomcat Web Application Container
After=network.target
[Service]
Type=forking
User=tomcat
Group=tomcat
Environment="JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64"
Environment="CATALINA_PID=/opt/tomcat/temp/tomcat.pid"
Environment="CATALINA_HOME=/opt/tomcat"
Environment="CATALINA_BASE=/opt/tomcat"
Environment="CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC"
Environment="JAVA_OPTS=-Djava.awt.headless=true -Djava.security.egd=file:/dev/./urandom"
ExecStart=/opt/tomcat/bin/startup.sh
ExecStop=/opt/tomcat/bin/shutdown.sh
Restart=on-failure
[Install]
WantedBy=multi-user.target
Sau khi lưu file, hãy tải lại systemd để nó nhận diện dịch vụ mới và kích hoạt nó để khởi động cùng hệ thống:
sudo systemctl daemon-reload
sudo systemctl enable tomcat
Bây giờ, dịch vụ Tomcat đã sẵn sàng để được khởi động.
Cấu hình biến môi trường cho Tomcat
Việc thiết lập các biến môi trường như JAVA_HOME và CATALINA_HOME là một bước quan trọng. Mặc dù chúng ta đã định nghĩa chúng trong file dịch vụ systemd, việc cấu hình chúng ở cấp hệ thống cũng rất hữu ích cho các tác vụ quản trị và gỡ lỗi sau này.
Biến JAVA_HOME chỉ cho hệ thống biết nơi cài đặt JDK. Còn CATALINA_HOME trỏ đến thư mục cài đặt của Tomcat. Việc này giúp các script và ứng dụng khác có thể dễ dàng tìm thấy các tài nguyên cần thiết.
Có hai cách phổ biến để thêm biến môi trường. Một là thêm vào file ~/.bashrc của người dùng, nhưng cách này chỉ có tác dụng cho người dùng đó. Để thiết lập cho toàn bộ hệ thống, bạn nên chỉnh sửa file /etc/environment.
sudo nano /etc/environment
Thêm hai dòng sau vào cuối file:
JAVA_HOME="/usr/lib/jvm/java-11-openjdk-amd64"
CATALINA_HOME="/opt/tomcat"
Hãy chắc chắn rằng đường dẫn JAVA_HOME là chính xác với hệ thống của bạn.

Sau khi lưu file, bạn cần tải lại các biến môi trường này để chúng có hiệu lực ngay lập tức. Chạy lệnh sau:
source /etc/environment
Để kiểm tra, bạn có thể dùng lệnh echo để xem giá trị của các biến:
echo $JAVA_HOME
echo $CATALINA_HOME
Nếu các đường dẫn bạn đã thiết lập được hiển thị, bạn đã cấu hình thành công.
Khởi động và kiểm tra dịch vụ Tomcat
Sau khi hoàn tất các bước cài đặt và cấu hình, giờ là lúc khởi động máy chủ Tomcat và kiểm tra xem nó có hoạt động đúng như mong đợi không.
Sử dụng systemctl, bạn có thể dễ dàng quản lý dịch vụ Tomcat. Để khởi động dịch vụ, hãy chạy lệnh:
sudo systemctl start tomcat
Bạn có thể kiểm tra trạng thái của dịch vụ để đảm bảo nó đang chạy mà không có lỗi:
sudo systemctl status tomcat
Nếu bạn thấy dòng chữ “active (running)” màu xanh lá, xin chúc mừng, Tomcat đã được khởi động thành công! Các lệnh hữu ích khác bao gồm stop để dừng dịch vụ và restart để khởi động lại.

Bây giờ, hãy mở trình duyệt web và truy cập vào địa chỉ http://your_server_ip:8080 (thay your_server_ip bằng địa chỉ IP của máy chủ Ubuntu). Nếu mọi thứ hoạt động chính xác, bạn sẽ thấy trang chào mừng mặc định của Apache Tomcat. Trang này xác nhận rằng máy chủ đã được cài đặt và đang lắng nghe trên cổng 8080.
Trang mặc định này cũng cung cấp các liên kết đến các tài liệu quản trị và ví dụ. Tuy nhiên, vì lý do bảo mật, các trang quản lý như Manager App và Host Manager bị vô hiệu hóa theo mặc định. Bạn sẽ cần tạo người dùng và cấu hình thêm trong file tomcat-users.xml để có thể truy cập chúng.
Cách quản lý và vận hành máy chủ Tomcat
Cài đặt thành công chỉ là bước khởi đầu. Để duy trì một máy chủ Tomcat hoạt động ổn định và hiệu quả, bạn cần biết cách quản lý và vận hành nó hàng ngày.
Một trong những công việc quan trọng nhất là giám sát log. Tomcat ghi lại mọi hoạt động, lỗi và cảnh báo vào các file log trong thư mục /opt/tomcat/logs. File quan trọng nhất là catalina.out, nơi chứa tất cả output chuẩn. Thường xuyên kiểm tra file này bằng lệnh tail -f /opt/tomcat/logs/catalina.out sẽ giúp bạn phát hiện sự cố sớm.
Để tối ưu hiệu năng, bạn có thể cần điều chỉnh một số cấu hình. Ví dụ, cổng mặc định 8080 có thể bị xung đột, bạn có thể thay đổi nó trong file server.xml. Quan trọng hơn là việc cấu hình bộ nhớ (memory). Trong file dịch vụ systemd chúng ta đã tạo, các tham số -Xms512M (bộ nhớ ban đầu) và -Xmx1024M (bộ nhớ tối đa) có thể được điều chỉnh tùy theo tài nguyên máy chủ và nhu cầu ứng dụng của bạn. Để hiểu rõ hơn về RAM và DDR4 giúp hiệu suất hệ thống, bạn có thể tham khảo thêm các bài viết liên quan.
Cuối cùng, đừng quên sao lưu. Thường xuyên backup các file cấu hình quan trọng trong thư mục /opt/tomcat/conf và dữ liệu ứng dụng của bạn trong /opt/tomcat/webapps. Đồng thời, hãy theo dõi các bản phát hành mới của Tomcat để cập nhật và vá các lỗ hổng bảo mật kịp thời.

Khắc phục lỗi phổ biến trong quá trình cài đặt
Ngay cả khi đã tuân thủ cẩn thận các bước, đôi khi bạn vẫn có thể gặp phải một số lỗi phổ biến. Đừng lo lắng, hầu hết chúng đều có thể được giải quyết dễ dàng.
Lỗi không khởi động được dịch vụ Tomcat
Đây là sự cố thường gặp nhất. Khi bạn chạy sudo systemctl start tomcat nhưng dịch vụ không thể khởi động, bước đầu tiên là kiểm tra log. Hãy xem file catalina.out hoặc sử dụng lệnh journalctl -u tomcat -xe để xem thông báo lỗi chi tiết từ systemd.
Nguyên nhân phổ biến bao gồm:
- Sai đường dẫn
JAVA_HOME: Kiểm tra lại đường dẫn trong filetomcat.servicevà/etc/environment. Tham khảo bài viết về Cài đặt Ubuntu và Bash là gì để hiểu thêm về cấu hình môi trường. - Sai quyền: Đảm bảo người dùng
tomcatcó quyền sở hữu toàn bộ thư mục/opt/tomcat. Chạy lại lệnhsudo chown -R tomcat: /opt/tomcatnếu cần. - Cấu hình sai: Một lỗi cú pháp trong các file XML (ví dụ:
server.xml) cũng có thể khiến Tomcat không khởi động được.
Lỗi port 8080 bị trùng hoặc không thể truy cập
Nếu Tomcat khởi động thành công nhưng bạn không thể truy cập trang web qua cổng 8080, có hai khả năng chính.
Thứ nhất, cổng 8080 có thể đã được sử dụng bởi một ứng dụng khác. Bạn có thể kiểm tra bằng lệnh sudo ss -ltn | grep 8080. Nếu có một dịch vụ khác đang chạy, bạn cần thay đổi cổng mặc định của Tomcat. Mở file /opt/tomcat/conf/server.xml, tìm đến thẻ Connector cho cổng 8080 và thay đổi port="8080" thành một cổng khác (ví dụ: 8081).
Thứ hai, tường lửa có thể đang chặn kết nối. Trên Ubuntu, UFW (Uncomplicated Firewall) thường được kích hoạt. Bạn cần cho phép lưu lượng truy cập qua cổng của Tomcat. Nếu bạn đang sử dụng cổng 8080, hãy chạy lệnh:
sudo ufw allow 8080
Sau đó, hãy thử truy cập lại.

Những lưu ý và thực hành tốt khi cài đặt Tomcat
Để đảm bảo máy chủ Tomcat của bạn không chỉ hoạt động mà còn an toàn và dễ bảo trì, hãy ghi nhớ những nguyên tắc sau đây. Đây là những kinh nghiệm được đúc kết từ thực tế vận hành hệ thống.
Đầu tiên và quan trọng nhất, luôn chạy Tomcat dưới một người dùng không phải root. Chúng ta đã tạo user tomcat riêng cho mục đích này. Điều này hạn chế đáng kể thiệt hại nếu ứng dụng của bạn bị tấn công.
Thứ hai, hãy duy trì thói quen cập nhật và sao lưu định kỳ. Theo dõi các bản phát hành mới của cả Tomcat và JDK để áp dụng các bản vá bảo mật kịp thời. Lên lịch sao lưu tự động cho các file cấu hình và dữ liệu ứng dụng để có thể khôi phục nhanh chóng khi có sự cố.
Một thực hành tốt khác là không bao giờ chỉnh sửa trực tiếp các file cấu hình gốc. Thay vào đó, hãy tạo một bản sao và làm việc trên đó. Điều này giúp bạn dễ dàng quay lại phiên bản hoạt động nếu có lỗi xảy ra trong quá trình thay đổi.
Cuối cùng, hãy cấu hình tường lửa một cách cẩn thận. Chỉ mở những cổng thực sự cần thiết cho công chúng. Ví dụ, nếu Tomcat của bạn nằm sau một máy chủ proxy ngược như Nginx hoặc Apache HTTP Server, bạn có thể chỉ cần cho phép truy cập cổng 8080 từ địa chỉ IP của máy chủ proxy đó.

Kết luận
Qua bài viết này, AZWEB đã cùng bạn đi qua một quy trình chi tiết để cài đặt và cấu hình Apache Tomcat 10 trên hệ điều hành Ubuntu 20.04. Chúng ta đã bắt đầu từ việc chuẩn bị hệ thống, cập nhật các gói cần thiết, cài đặt JDK, cho đến việc tải xuống Tomcat, tạo người dùng riêng để tăng cường bảo mật, và thiết lập dịch vụ systemd để quản lý một cách chuyên nghiệp.
Việc nắm vững các bước này không chỉ giúp bạn có một máy chủ web Java hoạt động ổn định mà còn trang bị cho bạn những kiến thức nền tảng quan trọng về quản trị hệ thống. Hãy nhớ rằng, bảo mật và bảo trì là những công việc liên tục. Luôn tuân thủ các thực hành tốt như chạy dịch vụ với quyền hạn tối thiểu, cập nhật thường xuyên và sao lưu dữ liệu cẩn thận.
Chúng tôi hy vọng hướng dẫn này hữu ích cho bạn. Đừng ngần ngại thử nghiệm sâu hơn với các cấu hình nâng cao và triển khai những ứng dụng Java của riêng bạn. Nếu bạn thấy bài viết giá trị, hãy chia sẻ nó cho bạn bè và đồng nghiệp nhé