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