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à Manager
và Host 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.
Gõ 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.