+2

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

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


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí