Triển khai Ứng dụng .NET Core trên CentOS với Quản lý Đa Tiến trình bằng Supervisor

Chuẩn bị Môi trường

Yêu cầu hệ thống:

  • Dự án .NET Core đã kiểm thử cục bộ
  • Máy ảo CentOS 7+
  • Công cụ kết nối SSH như MobaXterm

Cấu hình Firewall

Kiểm tra cổng đang sử dụng:

ss -tuln | grep 6000

Mở cổng ứng dụng và giao diện Supervisor:

firewall-cmd --zone=public --add-port=6000/tcp --permanent
firewall-cmd --zone=public --add-port=6001/tcp --permanent
firewall-cmd --zone=public --add-port=9001/tcp --permanent
firewall-cmd --reload

Cài đặt .NET Runtime

Kiểm tra phiên bản .NET hiện có:

dotnet --list-sdks
dotnet --list-runtimes

Cài đặt .NET 6.0 nếu chưa có:

sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm
sudo yum install -y dotnet-sdk-6.0 aspnetcore-runtime-6.0

Thiết lập Supervisor

Cài đặt qua pip:

sudo yum install -y epel-release python3-pip
sudo pip3 install supervisor

Tạo cấu hình mặc định:

sudo mkdir /etc/supervisor
sudo echo_supervisord_conf > /etc/supervisor/supervisord.conf
sudo mkdir /etc/supervisor/conf.d

Cập nhật file cấu hình (/etc/supervisor/supervisord.conf):

[inet_http_server]
port=*:9001
username=admin
password=securepass

[include]
files = /etc/supervisor/conf.d/*.conf

Cấu hình Ứng dụng

Tạo file /etc/supervisor/conf.d/app1.conf:

[program:WebApp1]
command=dotnet App1.dll --urls=http://*:6000
directory=/var/www/app1/
autorestart=true
stderr_logfile=/var/log/webapp1_err.log
stdout_logfile=/var/log/webapp1_out.log
environment=ASPNETCORE_ENVIRONMENT=Production
user=root
stopsignal=INT
startsecs=10

Tạo file tương tự cho ứng dụng thứ hai với cổng 6001

Quản lý Dịch vụ

Khởi động Supervisor:

supervisord -c /etc/supervisor/supervisord.conf

Tạo systemd service (/usr/lib/systemd/system/supervisord.service):

[Unit]
Description=Supervisor process manager

[Service]
Type=forking
ExecStart=/usr/local/bin/supervisord -c /etc/supervisor/supervisord.conf
ExecStop=/usr/local/bin/supervisorctl shutdown
ExecReload=/usr/local/bin/supervisorctl reload
Restart=on-failure

[Install]
WantedBy=multi-user.target

Kích hoạt tự khởi động:

sudo systemctl enable supervisord
sudo systemctl start supervisord

Lệnh Quản lý

  • Khởi động lại ứng dụng: supervisorctl restart WebApp1
  • Xem trạng thái: supervisorctl status
  • Tải lại cấu hình: supervisorctl reload

Truy cập giao diện web tại http://server_ip:9001

Thẻ: .net core CentOS Supervisor firewall systemd

Đăng vào ngày 18 tháng 6 lúc 21:43