Ubuntu部署XBLMS.EXAM 在线考试系统 用Caddy代替Nginx的笔记

项目地址:https://gitee.com/xblms/xblmes <

按照官方的在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

更多命令访问https://caddy2.dengxiaolong.com/docs/command-line查看

完成配置 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是没有页面的。

posted @ 2025-04-20 19:24  Ojox  阅读(139)  评论(0)    收藏  举报