- vừa được xem lúc

Cài đặt Tomcat 10 trên Ubuntu 22.04

0 0 5

Người đăng: Zero

Theo Viblo Asia

Bước 1 cài đặt Tomcat

Tải tomcat từ trang chủ.

vì lí do bảo mật, Tomcat nên chạy ở quyền hạn chế. Chạy lệnh sau để tạo user tomcat

sudo useradd -m -d /opt/tomcat -U -s /bin/false tomcat

Bằng cách cung cấp /bin/false làm shell mặc định của người dùng, bạn đảm bảo rằng không thể đăng nhập bằng tomcat.

Cài JDK (nếu cài rồi nhảy tới bước tải tomcat)

sudo apt update
sudo apt install default-jdk

gõ y để hoàn thành

java --version

output

Output
openjdk version "11.0.14" 2022-01-18
OpenJDK Runtime Environment (build 11.0.14+9-Ubuntu-0ubuntu2.20.04)
OpenJDK 64-Bit Server VM (build 11.0.14+9-Ubuntu-0ubuntu2.20.04, mixed mode, sharing)

Nhưng máy mình dùng java17 nên nó sẽ khác.

tải tomcat

tải file tar.gz từ trang chủ của tomcat.

giải nén nó

sudo tar xzvf apache-tomcat-10*tar.gz -C /opt/tomcat --strip-components=1

gán quyền cho user tomcat

sudo chown -R tomcat:tomcat /opt/tomcat/
sudo chown -R u+x /opt/tomcat/bin

Cả 2 lệnh thêm quyền cho user tomcat có thể execute trong thư mục /bin

Bước 2 - Config Admin Users

có 2 trang là ManagerHost Manager . Cần xóa đi IP address restrictions, nó không cho các IP bên ngoài truy cập vào các trang đó.

/opt/tomcat/conf/tomcat-users/xml

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

sẽ trông như thế này

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

Theo mặc định, Tomcat được cấu hình để hạn chế quyền truy cập vào các trang quản trị, trừ khi kết nối đến từ chính máy chủ. Để truy cập các trang đó với người dùng bạn vừa xác định, bạn sẽ cần chỉnh sửa tệp cấu hình cho các trang đó.

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

comment lại phần value

...
<Context antiResourceLocking="false" privileged="true" > <CookieProcessor className="org.apache.tomcat.util.http.Rfc6265CookieProcessor" sameSiteCookies="strict" />
<!-- <Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" /> --> <Manager sessionAttributeValueClassNameFilter="java\.lang\.(?:Boolean|Integer|Long|Number|String)|org\.apache\.catalina\.filters\.Csr>
</Context>

Tương thự với host manager, cũng chú thích phần value lại.

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

Bước 3 - Tạo systemd service

systemd service để Tomcat chạy dưới nền. và nó sẽ restart tomcat tự động khi có lôi.

Tomcat là một ứng dụng java do đó cần java runtime đã cài ở bưới 1 để chạy.

sudo update-java-alternatives -l

Output

java-1.11.0-openjdk-amd64 1111 /usr/lib/jvm/java-1.11.0-openjdk-amd64

Tạo tomcat service

tạo file tại /etc/systemd/system/tomcat.service

sudo nano /etc/systemd/system/tomcat.service

Nội dung file tomcat.service

[Unit]
Description=Tomcat
After=network.target [Service]
Type=forking User=tomcat
Group=tomcat Environment="JAVA_HOME=/usr/lib/jvm/java-1.11.0-openjdk-amd64"
Environment="JAVA_OPTS=-Djava.security.egd=file:///dev/urandom"
Environment="CATALINA_BASE=/opt/tomcat"
Environment="CATALINA_HOME=/opt/tomcat"
Environment="CATALINA_PID=/opt/tomcat/temp/tomcat.pid"
Environment="CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC" ExecStart=/opt/tomcat/bin/startup.sh
ExecStop=/opt/tomcat/bin/shutdown.sh RestartSec=10
Restart=always [Install]
WantedBy=multi-user.target
<aside> 💡 Chú ý: phần JAVA_HOME sẽ khác nếu bạn cài java ở vị trí khác. ví dụ ở /opt/java17. bạn có thể check vị trí của nó bằng cách dùng lệnh `which java` </aside>

Khởi động lại systemd daemon để tomcat trở thành service mới.

sudo systemctl daemon-reload

bây giờ có thể chạy tomcat lên

sudo systemctl start tomcat

kiểm tra kết quả:

sudo systemctl status tomcat

kết quả:

➜ tomcat sudo systemctl status tomcat ● tomcat.service - Tomcat Loaded: loaded (/etc/systemd/system/tomcat.service; enabled; vendor preset: enabled) Active: active (running) since Thu 2024-07-04 23:24:39 +07; 1h 14min ago Process: 130221 ExecStart=/opt/tomcat/bin/startup.sh (code=exited, status=0/SUCCESS) Main PID: 130228 (java) Tasks: 38 (limit: 18830) Memory: 524.5M CPU: 22.751s CGroup: /system.slice/tomcat.service └─130228 /opt/jdk-17.0.11/bin/java -Djava.util.logging.config.file=/opt/tomcat/conf/logging.> Thg 7 04 23:24:39 nhanlinux systemd[1]: Starting Tomcat...
Thg 7 04 23:24:39 nhanlinux startup.sh[130221]: Tomcat started.
Thg 7 04 23:24:39 nhanlinux systemd[1]: Started Tomcat. 

q để thoát.

Để tomcat khởi động với hệ thống

sudo systemctl enable tomcat

truy cập giao diện web

mặc định ở port 8080. chạy lệnh sao để cho phép traffic tới port đó. Nếu không thích 8080 thì chỉnh port ở /opt/tomcat/conf/server.xml và chỉnh port hợp lệ. ví dụ mình thích 6789.

sudo ufw allow 8080

giờ thì truy cập vào http://your_server_ip:8080

nếu chạy local thìa sẽ là http://localhost:8080

Tổng kết

Đã thành công. giờ bạn có thể up file war lên để deploy.


Tham khảo

How To Install Apache Tomcat 10 on Ubuntu 20.04

Bình luận

Bài viết tương tự

- vừa được xem lúc

Tổng hợp các bài hướng dẫn về Design Pattern - 23 mẫu cơ bản của GoF

Link bài viết gốc: https://gpcoder.com/4164-gioi-thieu-design-patterns/. Design Patterns là gì. Design Patterns không phải là ngôn ngữ cụ thể nào cả.

0 0 292

- vừa được xem lúc

Học Spring Boot bắt đầu từ đâu?

1. Giới thiệu Spring Boot. 1.1.

0 0 267

- vừa được xem lúc

Cần chuẩn bị gì để bắt đầu học Java

Cần chuẩn bị những gì để bắt đầu lập trình Java. 1.1. Cài JDK hay JRE.

0 0 46

- vừa được xem lúc

Sử dụng ModelMapper trong Spring Boot

Bài hôm nay sẽ là cách sử dụng thư viện ModelMapper để mapping qua lại giữa các object trong Spring nhé. Trang chủ của ModelMapper đây http://modelmapper.org/, đọc rất dễ hiểu dành cho các bạn muốn tìm hiểu sâu hơn. 1.

0 0 189

- vừa được xem lúc

[Java] 1 vài tip nhỏ khi sử dụng String hoặc Collection part 1

. Hello các bạn, hôm nay mình sẽ chia sẻ về mẹo check String null hay full space một cách tiện lợi. Mình sẽ sử dụng thư viện Lớp StringUtils download file jar để import vào thư viện tại (link).

0 0 66

- vừa được xem lúc

Deep Learning với Java - Tại sao không?

Muốn tìm hiểu về Machine Learning / Deep Learning nhưng với background là Java thì sẽ như thế nào và bắt đầu từ đâu? Để tìm được câu trả lời, hãy đọc bài viết này - có thể kỹ năng Java vốn có sẽ giúp bạn có những chuyến phiêu lưu thú vị. DJL là tên viết tắt của Deep Java Library - một thư viện mã ng

0 0 133