Ubuntu部署XBLMS.EXAM 在线考试系统 用Caddy代替Nginx的笔记
按照官方的在Ubuntu系统上部署XBLMS部署指导文档操作并做了一点点改动
1)安装.netcore运行时
安装 .NET 之前,请运行以下命令,将 Microsoft 包签名密钥添加到受信任密钥列表,并添加 Microsoft 包存储库。 打开终端并运行以下命令:
wget https://packages.microsoft.com/config/ubuntu/22.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
dpkg -i packages-microsoft-prod.deb
rm packages-microsoft-prod.deb
安装 ASP.NET Core 运行时
apt-get update; \
apt-get install -y apt-transport-https && \
apt-get update && \
apt-get install -y aspnetcore-runtime-8.0
# 验证dotnet core runtime是否安装成功
dotnet --info
2)解压安装包
使用 wget 下载 https://gitee.com/xblms/xblmes/releases/download/v8.1/xblms.exam-v8.1-linux-x64.tar.gz
解压或者拷贝部署文件到指定的文件夹。
创建并进入部署包文件夹,例如我们打算在 /var/www 中运行:
创建并进入文件夹:
mkdir -m 666 /var/www/
cd /var/www
解压安装包至 /var/www 文件夹中并删除安装包:
tar -xzf xblms-linux-x64.tar.gz
rm xblms-linux-x64.tar.gz -f
3)安装Caddy
用Caddy代替Nginx,因为配置起来比Nginx简单,而且可以自动生成SSL证书 <
apt-get update
apt-get install caddy
启动 caddy 并设置开机自启
systemctl start caddy
systemctl enable caddy
4)设置反向代理
查看Caddy的启动状态
systemctl status caddy
● caddy.service - Caddy
Loaded: loaded (/usr/lib/systemd/system/caddy.service; enabled; preset: enabled)
Active: active (running) since Sun 2025-04-20 08:18:07 UTC; 1h 45min ago
Invocation: 796d14a46d7043969f0645f6ac163ae0
Docs: https://caddyserver.com/docs/
Main PID: 26102 (caddy)
Tasks: 8 (limit: 3934)
Memory: 7.5M (peak: 9.8M)
CPU: 847ms
CGroup: /system.slice/caddy.service
└─26102 /usr/bin/caddy run --environ --config /etc/caddy/Caddyfile
找到Caddy服务运行显示读取的配置文件 /etc/caddy/Caddyfile写入配置文件
假设我的服务器地址为 192.168.133.139
echo '192.168.133.139 {
reverse_proxy localhost:5000 {
header_up Host {host}
header_up Upgrade {http.upgrade}
header_up Connection "keep-alive"
#Caddy的反向代理的默认行为是将标头传递给上游,所以下面两个可以注释掉或者删掉
#header_up X-Forwarded-For {remote_host}
#header_up X-Forwarded-Proto {scheme}
header_up X-Real-IP {remote}
transport http {
dial_timeout 600s
read_timeout 600s
write_timeout 600s
}
}
}
' | tee /etc/caddy/Caddyfile
使用上述配置文件,Caddy 接受端口 80 上的流量并将请求转接到 http://localhost:5000 。
如果希望指定域名,可以将 192.168.133.139 替换为 domain_name.com
而且Caddy会自动从HTTP跳转为HTTPS
「可选」将配置文件的缩进格式标准化
caddy fmt --overwrite /etc/caddy/Caddyfile
验证配置文件,无 Error信息输出则正常
caddy adapt --config /etc/caddy/Caddyfile --validate
完成配置 Caddy 后重启服务
systemctl restart caddy
5)设置进程管理器
创建服务定义文件 xblms.service:
echo '[Unit]
Description=XBLMS
[Service]
WorkingDirectory=/var/www
ExecStart=/usr/bin/dotnet /var/www/XBLMS.Web.dll
Restart=always
# Restart service after 10 seconds if the xlms service crashes:
RestartSec=10
KillSignal=SIGINT
SyslogIdentifier=xblms
User=root
Environment=ASPNETCORE_ENVIRONMENT=Production
Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false
[Install]
WantedBy=multi-user.target
' | tee /etc/systemd/system/xblms.service
保存文件并启用服务。
systemctl daemon-reload
systemctl enable xblms.service
运行服务,并确认它正在运行。
systemctl start xblms.service
systemctl status xblms.service
● xblms.service - XBLMS
Loaded: loaded (/etc/systemd/system/xblms.service; enabled; preset: enabled)
Active: active (running) since Sun 2025-04-20 08:11:32 UTC; 3h 2min ago
Invocation: e421b4f5923a4836bc3eb51840f0d6e3
Main PID: 24063 (dotnet)
Tasks: 20 (limit: 3934)
Memory: 388.7M (peak: 393.9M)
CPU: 19.174s
CGroup: /system.slice/xblms.service
└─24063 /usr/bin/dotnet /var/www/XBLMS.Web.dll
可以看到
xblms.service服务需要文件对应存在/var/www/XBLMS.Web.dll,服务起不来就是解压的压缩包文件路径不对。
查看服务端口:
lsof -i -P -n | grep -E "caddy|dotnet"
dotnet 24063 root 408u IPv4 174059 0t0 TCP 127.0.0.1:5000 (LISTEN)
caddy 28682 caddy 3u IPv4 207806 0t0 TCP 127.0.0.1:2019 (LISTEN)
caddy 28682 caddy 6u IPv6 207810 0t0 TCP *:80 (LISTEN)
6)访问并安装系统
浏览器访问 http://192.168.133.139/admin/install 开始,默认没配置管理员直接访问IP是没有页面的。
本文来自博客园,作者:Ojox,转载请注明原文链接:https://www.cnblogs.com/Ojox/p/18836042

浙公网安备 33010602011771号