Cách cài đặt Apache Tomcat 10 với Nginx trên Rocky Linux 8

theanh

Administrator
Nhân viên
Tomcat là một máy chủ web nguồn mở cho các ứng dụng dựa trên Java. Nó được sử dụng để triển khai các ứng dụng Java Servlet và JSP. Java servlet là các chương trình nhỏ xác định cách máy chủ xử lý các yêu cầu và phản hồi. Tomcat hoạt động như một triển khai nguồn mở của các công nghệ Java Servlet, JavaServer Pages, Java Expression Language và Java WebSocket.

Có nhiều phiên bản Tomcat khác nhau. Chúng tôi sẽ thảo luận về việc cài đặt Tomcat 10 cho hướng dẫn của mình. Nếu bạn muốn cài đặt Tomcat 9, hướng dẫn sẽ giống nhau. Nếu có bất kỳ thay đổi nào, chúng sẽ được chỉ định trong hướng dẫn.

Đối với hướng dẫn của mình, chúng tôi sẽ cài đặt Tomcat 10 cùng với máy chủ Nginx để hoạt động như một proxy ngược và bảo vệ nó bằng SSL. Có phiên bản Tomcat 10.1.x là phiên bản alpha mới nhất của Tomcat, nhưng chúng tôi sẽ không cài đặt phiên bản đó.

Điều kiện tiên quyết​


  • Máy chủ chạy Rocky Linux 8.5

  • Người dùng không dùng sudo có quyền siêu người dùng.

  • Đảm bảo mọi thứ đã được cập nhật.
    Mã:
    $ sudo dnf update

  • Các gói cần thiết để cài đặt.
    Mã:
    $ sudo dnf install wget tar

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

Tomcat 9 và 10 yêu cầu Java 8 trở lên. Chúng tôi sẽ cài đặt OpenJDK 11, bản triển khai mã nguồn mở của nền tảng Java.

Chạy lệnh sau để cài đặt OpenJDK.
Mã:
$ sudo dnf install java-11-openjdk-devel
Xác minh cài đặt.
Mã:
$ java -versionopenjdk version "11.0.13" 2021-10-19 LTSOpenJDK Runtime Environment 18.9 (bản dựng 11.0.13+8-LTS)OpenJDK 64-Bit Server VM 18.9 (bản dựng 11.0.13+8-LTS, chế độ hỗn hợp, chia sẻ)

Bước 2 - Tạo Người dùng Hệ thống​

Chúng tôi sẽ tạo một người dùng hệ thống mới để giảm thiểu mọi rủi ro bảo mật bằng cách chạy Tomcat với tư cách là người dùng root. Đối với người dùng mới, chúng ta sẽ đặt /opt/tomcat làm thư mục home.

Chạy lệnh sau để tạo người dùng hệ thống mới cho Tomcat.
Mã:
$ sudo useradd -m -U -d /opt/tomcat -s /bin/false tomcat

Bước 3 - Tải xuống Tomcat​

Phiên bản mới nhất của Tomcat v10 có thể được tải xuống từ trang tải xuống của nó. Tại thời điểm viết hướng dẫn này, v10.0.14 là phiên bản mới nhất hiện có. Kiểm tra phiên bản mới nhất trước khi tải Tomcat.

Sử dụng wget để tải Tomcat.
Mã:
$ VERSION=10.0.14$ wget https://dlcdn.apache.org/tomcat/tomcat-10/v${VERSION}/bin/apache-tomcat-${VERSION}.tar.gz
Giải nén tệp vào thư mục /opt/tomcat.
Mã:
$ sudo tar -xf apache-tomcat-${VERSION}.tar.gz -C /opt/tomcat/
Tạo liên kết tượng trưng đến phiên bản mới nhất của Tomcat trỏ đến thư mục cài đặt Tomcat.
Mã:
$ sudo ln -s /opt/tomcat/apache-tomcat-${VERSION} /opt/tomcat/latest
Thay đổi quyền sở hữu thư mục thành người dùng đã tạo trước đó.
Mã:
$ sudo chown -R tomcat:tomcat /opt/tomcat

Bước 4 - Tạo tệp Systemd Unit​

Bước tiếp theo là tạo tệp dịch vụ cho máy chủ Tomcat để máy chủ này có thể tự động khởi động.

Tạo và mở tệp /etc/systemd/system/tomcat.service để chỉnh sửa.
Mã:
$ sudo nano /etc/systemd/system/tomcat.service
Dán mã sau.
Mã:
[Unit]Mô tả=Apache Tomcat 10 Servlet containerWants=network.targetAfter=network.target[Service]Type=forkingUser=tomcatGroup=tomcatEnvironment="JAVA_HOME=/usr/lib/jvm/jre"Environment="JAVA_OPTS=-Djava.security.egd=file:///dev/urandom"Environment="CATALINA_BASE=/opt/tomcat/latest"Environment="CATALINA_HOME=/opt/tomcat/latest"Environment="CATALINA_PID=/opt/tomcat/latest/temp/tomcat.pid"Environment="CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC"ExecStart=/opt/tomcat/latest/bin/startup.shExecStop=/opt/tomcat/latest/bin/shutdown.shRestart=always[Install]WantedBy=multi-user.target
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc lưu.

Bước 5 - Khởi động và Kích hoạt dịch vụ Tomcat​

Tải lại daemon dịch vụ để kích hoạt dịch vụ Tomcat.
Mã:
$ sudo systemctl daemon-reload
Kích hoạt và Khởi động dịch vụ Tomcat.
Mã:
$ sudo systemctl enable tomcat --now
Kiểm tra trạng thái dịch vụ.
Mã:
$ sudo systemctl status tomcat? tomcat.service - Bộ chứa Servlet Apache Tomcat 10 Đã tải: đã tải (/etc/systemd/system/tomcat.service; đã bật; cài đặt trước của nhà cung cấp: đã tắt) Đang hoạt động: đang hoạt động (đang chạy) kể từ Thứ sáu 2021-12-17 15:54:28 UTC; 24 giây trước Tiến trình: 86219 ExecStart=/opt/tomcat/latest/bin/startup.sh (mã=thoát, trạng thái=0/THÀNH CÔNG) PID chính: 86226 (java) Nhiệm vụ: 19 (giới hạn: 11411) Bộ nhớ: 132,7M CGroup: /system.slice/tomcat.service ??86226 /usr/lib/jvm/jre/bin/java -Djava.util.logging.config.file=/opt/tomcat/latest/conf/logging.properties>17/12 15:54:27 howtoforge systemd[1]: Khởi động bộ chứa Servlet Apache Tomcat 10...17/12 15:54:28 howtoforge systemd[1]: Khởi động bộ chứa Servlet Apache Tomcat 10.

Bước 6 - Cấu hình Tường lửa​

Rocky Linux sử dụng Tường lửa Firewalld. Kiểm tra trạng thái của tường lửa.
Mã:
$ sudo firewall-cmd --staterunning
Cho phép các cổng HTTP và HTTPS.
Mã:
$ sudo firewall-cmd --permanent --add-service=http$ sudo firewall-cmd --permanent --add-service=https
Tải lại tường lửa để kích hoạt các thay đổi.
Mã:
$ sudo firewall-cmd --reload

Bước 7 - Cấu hình Giao diện quản lý web Tomcat​

Giao diện quản lý web sẽ chỉ có thể truy cập được sau khi chúng tôi tạo thông tin xác thực người dùng cho giao diện đó.

Người dùng và vai trò Tomcat được xác định trong tệp /opt/tomcat/latest/conf/tomcat-users.xml. Mở tệp để chỉnh sửa.
Mã:
$ sudo nano /opt/tomcat/latest/conf/tomcat-users.xml
Thêm các dòng sau trước dòng </tomcat-users. Thay thế tên người dùng và mật khẩu bằng thông tin xác thực của bạn.

Chọn thông tin xác thực khác nhau cho cổng thông tin Tomcat của Quản lý và Quản trị viên.
Mã:
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc lưu.

Theo mặc định, giao diện Tomcat chỉ có thể truy cập từ máy chủ cục bộ. Nếu bạn cần truy cập từ bất kỳ đâu, bạn cần phải cấu hình nó.

Mở /opt/tomcat/latest/webapps/manager/META-INF/context.xml để chỉnh sửa.
Mã:
$ sudo nano /opt/tomcat/latest/webapps/manager/META-INF/context.xml
Xóa các dòng sau hoặc bình luận chúng theo chỉ định bên dưới bằng cách đặt chúng trong <!-- và -->.
Mã:
Cho phép truy cập từ bất kỳ địa chỉ IP nào đều là rủi ro bảo mật. Bạn có thể hạn chế bằng cách chỉ cho phép truy cập từ địa chỉ IP công khai của mình. Nếu địa chỉ IP công khai của bạn là 22.22.22.22, hãy thay đổi dòng như sau.
Mã:
Danh sách các địa chỉ IP được phép được phân tách bằng một thanh dọc (|). Bạn có thể thêm địa chỉ IP đơn lẻ hoặc sử dụng biểu thức chính quy.

Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc lưu.

Thực hiện các thay đổi tương tự trên tệp /opt/tomcat/latest/webapps/host-manager/META-INF/context.xml.

Sau khi hoàn tất, hãy khởi động lại máy chủ Tomcat.
Mã:
$ sudo systemctl restart tomcat

Bước 8 - Cài đặt SSL​

Để cài đặt chứng chỉ SSL bằng Let's Encrypt, chúng ta cần cài đặt công cụ Certbot.

Trước tiên, bạn cần tải xuống và cài đặt kho lưu trữ EPEL.
Mã:
$ sudo dnf install epel-release
Chạy các lệnh sau để cài đặt Certbot.
Mã:
$ sudo dnf install certbot
Tạo chứng chỉ SSL.
Mã:
$ sudo certbot certonly --standalone --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [emailprotected] -d tomcat.example.com
Lệnh trên sẽ tải chứng chỉ xuống thư mục /etc/letsencrypt/live/tomcat.example.com trên máy chủ của bạn.

Tạo chứng chỉ nhóm Diffie-Hellman.
Mã:
$ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
Tạo thư mục webroot thử thách để tự động gia hạn Let's Encrypt.
Mã:
$ sudo mkdir -p /var/lib/letsencrypt
Tạo Cron Job để gia hạn SSL. Nó sẽ chạy hàng ngày để kiểm tra chứng chỉ và gia hạn nếu cần. Để thực hiện việc đó, trước tiên, hãy tạo tệp /etc/cron.daily/certbot-renew và mở tệp đó để chỉnh sửa.
Mã:
$ sudo nano /etc/cron.daily/certbot-renew
Dán mã sau.
Mã:
#!/bin/shcertbot renew --cert-name tomcat.example.com --webroot -w /var/lib/letsencrypt/ --post-hook "systemctl reload nginx"
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.

Thay đổi quyền trên tệp tác vụ để làm cho tệp đó có thể thực thi được.
Mã:
$ sudo chmod +x /etc/cron.daily/certbot-renew

Bước 9 - Cài đặt Nginx​

Rocky Linux 8.5 đi kèm với phiên bản ổn định mới nhất của Nginx. Cài đặt bằng lệnh sau.
Mã:
$ sudo dnf module install nginx:1.20
Xác minh cài đặt.
Mã:
$ nginx -vphiên bản nginx: nginx/1.20.1
Bật và khởi động dịch vụ Nginx.
Mã:
$ sudo systemctl enable nginx --now
Tạo và mở tệp /etc/nginx/conf.d/tomcat.conf để chỉnh sửa.
Mã:
$ sudo nano /etc/nginx/conf.d/tomcat.conf
Dán mã sau vào đó.
Mã:
server { listen 443 ssl http2; lắng nghe [::]:443 ssl http2; tên_máy_chủ tomcat.example.com; nhật_nhật_truy_cập /var/log/nginx/tomcat.access.log; nhật_nhật_lỗi /var/log/nginx/tomcat.error.log; # Chứng_chỉ_SSL ssl /etc/letsencrypt/live/tomcat.example.com/fullchain.pem; khóa_chứng_chỉ_ssl /etc/letsencrypt/live/tomcat.example.com/privkey.pem; chứng_chỉ_tin_cậy_ssl /etc/letsencrypt/live/tomcat.example.com/chain.pem; thời gian chờ ssl_session_5 phút; bộ_gói_bộ_gói_phiên_phiên_phiên_phiên được chia sẻ:MozSSL:10 phút; ssl_session_tickets tắt; giao_thức_ssl TLSv1.2 TLSv1.3; ssl_prefer_server_ciphers bật; ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384; ssl_ecdh_curve X25519:prime256v1:secp384r1:secp521r1; ssl_stapling bật; ssl_stapling_verify on; ssl_dhparam /etc/ssl/certs/dhparam.pem; trình phân giải 8.8.8.8; vị trí / { proxy_pass http://127.0.0.1:8080; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Server $host; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; }}# thực thi HTTPSserver { lắng nghe 80; lắng nghe [::]:80; tên_máy_chủ tomcat.example.com; trả về 301 https://$host$request_uri;}
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc sau khi hoàn tất.

Mở tệp /etc/nginx/nginx.conf để chỉnh sửa.
Mã:
$ sudo nano /etc/nginx/nginx.conf
Thêm dòng sau trước dòng include /etc/nginx/conf.d/*.conf;.
Mã:
server_names_hash_bucket_size 64;
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.

Xác minh cú pháp tệp cấu hình Nginx.
Mã:
$ sudo nginx -tnginx: tệp cấu hình /etc/nginx/nginx.conf syntax is oknginx: configuration file /etc/nginx/nginx.conf test is successful
Khởi động lại dịch vụ Nginx để kích hoạt cấu hình mới.
Mã:
$ sudo systemctl restart nginx

Bước 10 - Chạy TomCat​

Khởi chạy https://tomcat.example.com trong trình duyệt của bạn và nó sẽ mở màn hình sau.



Bây giờ bạn có thể truy cập các trang Server Status, Manager App và Host Manager bằng thông tin đăng nhập mà chúng tôi đã định cấu hình ở bước 7.

Kết luận​

Như vậy là kết thúc hướng dẫn của chúng tôi về cách cài đặt và cấu hình Tomcat Server trên máy chủ chạy Rocky Linux 8.5 và phục vụ máy chủ đó thông qua Nginx reverse proxy, đồng thời sử dụng SSL để bảo vệ máy chủ. Nếu bạn có bất kỳ câu hỏi nào, hãy đăng câu hỏi đó trong phần bình luận bên dưới.
 
Back
Bên trên