保姆级教程:在Ubuntu 22.04上手动部署Rapid SCADA V6(含Nginx配置与RAM盘优化)
保姆级教程:在Ubuntu 22.04上手动部署Rapid SCADA V6(含Nginx配置与RAM盘优化)
工业自动化系统的稳定运行离不开可靠的数据采集与监控平台。作为一款支持百万级数据点的跨平台SCADA系统,Rapid SCADA V6凭借其原生支持InfluxDB、PostgreSQL等时序数据库的特性,正在成为工业物联网场景下的热门选择。本文将带您完成从零开始的生产级部署,涵盖.NET运行时调优、服务守护进程配置、Nginx反向代理安全加固以及RAM盘性能优化等关键环节。
1. 环境准备与依赖安装
1.1 系统基础配置
在开始部署前,建议使用全新安装的Ubuntu 22.04 LTS服务器版操作系统。首先更新软件源并升级现有组件:
sudo apt update && sudo apt upgrade -y sudo apt install -y curl wget gnupg2 ca-certificates为保障系统安全,建议禁用root远程登录并配置防火墙规则:
# 修改SSH配置 sudo sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin no/' /etc/ssh/sshd_config sudo systemctl restart sshd # 配置UFW防火墙 sudo ufw allow 22/tcp sudo ufw allow 80/tcp sudo ufw allow 443/tcp sudo ufw enable1.2 .NET 6运行时安装
Rapid SCADA V6基于.NET 6构建,需要先安装运行时环境。微软官方推荐通过APT仓库安装:
# 添加微软包仓库 wget https://packages.microsoft.com/config/ubuntu/22.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb sudo dpkg -i packages-microsoft-prod.deb rm packages-microsoft-prod.deb # 安装.NET运行时 sudo apt update sudo apt install -y aspnetcore-runtime-6.0验证安装是否成功:
dotnet --list-runtimes # 应输出包含 Microsoft.AspNetCore.App 6.0.x 的信息若企业内网无法访问外部仓库,可手动下载二进制包部署:
wget https://download.visualstudio.microsoft.com/download/pr/xxxxxx/xxxxxx/dotnet-runtime-6.0.x-linux-x64.tar.gz sudo mkdir -p /usr/share/dotnet sudo tar -zxf dotnet-*.tar.gz -C /usr/share/dotnet sudo ln -s /usr/share/dotnet/dotnet /usr/bin/dotnet2. Rapid SCADA核心组件部署
2.1 手动安装系统文件
从官网下载最新Linux版安装包后,建议将文件部署到/opt目录:
sudo mkdir -p /opt/scada sudo tar -xzf rapidscada-6.x.x-linux-x64.tar.gz -C /opt/scada设置正确的文件权限是保证系统正常运行的关键:
cd /opt/scada sudo chmod +x make_executable.sh sudo ./make_executable.sh sudo chown -R www-data:www-data /opt/scada/ScadaWeb/wwwroot2.2 配置systemd服务
将提供的守护进程配置文件复制到系统目录:
sudo cp /opt/scada/daemon/* /etc/systemd/system/修改服务配置文件以适应生产环境需求,以ScadaServer为例:
# /etc/systemd/system/scadaserver6.service 关键参数 [Service] Environment="DOTNET_ROOT=/usr/share/dotnet" WorkingDirectory=/opt/scada/ScadaServer ExecStart=/usr/bin/dotnet ScadaServer.dll Restart=always RestartSec=30 User=scada Group=scada创建专用系统用户并启用服务:
sudo useradd -r -s /usr/sbin/nologin scada sudo systemctl daemon-reload sudo systemctl enable scadaagent6.service scadaserver6.service scadacomm6.service3. Nginx反向代理配置
3.1 基础代理设置
安装Nginx并配置HTTPS反向代理:
sudo apt install -y nginx sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \ -keyout /etc/ssl/private/scada.key -out /etc/ssl/certs/scada.crt配置站点文件/etc/nginx/sites-available/scada:
server { listen 443 ssl; server_name scada.yourdomain.com; ssl_certificate /etc/ssl/certs/scada.crt; ssl_certificate_key /etc/ssl/private/scada.key; location / { proxy_pass http://localhost:5000; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection keep-alive; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } # 静态文件缓存优化 location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ { expires 30d; add_header Cache-Control "public, no-transform"; } }3.2 安全加固措施
建议添加以下安全头信息:
add_header X-Frame-Options "SAMEORIGIN"; add_header X-Content-Type-Options "nosniff"; add_header X-XSS-Protection "1; mode=block"; add_header Referrer-Policy "strict-origin-when-cross-origin"; # 限制请求体大小 client_max_body_size 10m;启用配置并测试:
sudo ln -s /etc/nginx/sites-available/scada /etc/nginx/sites-enabled sudo nginx -t sudo systemctl restart nginx4. 系统优化与性能调校
4.1 RAM磁盘日志优化
创建专用RAM磁盘可显著提升日志写入性能,修改/etc/fstab添加:
tmpfs /var/log/scada tmpfs defaults,noatime,size=1G,mode=1777 0 0创建挂载点并设置权限:
sudo mkdir -p /var/log/scada sudo chown -R scada:scada /var/log/scada sudo mount -a验证挂载结果:
df -h | grep scada # 应显示类似 tmpfs 1.0G 0 1.0G 0% /var/log/scada4.2 系统参数调优
修改内核参数提升网络性能:
# 添加到 /etc/sysctl.conf net.core.somaxconn = 4096 net.ipv4.tcp_max_syn_backlog = 4096 vm.swappiness = 10对于高负载场景,建议调整.NET垃圾回收策略:
# 在服务配置文件添加 Environment="DOTNET_GCConserveMemory=9" Environment="DOTNET_GCHeapCount=4"5. 系统验证与故障排查
5.1 服务状态检查
启动所有服务并验证状态:
sudo systemctl start scadaagent6.service scadaserver6.service scadacomm6.service systemctl list-units --type=service | grep scada查看日志确认运行状态:
journalctl -u scadaserver6.service -f5.2 常见问题处理
端口冲突问题:
若遇到端口占用,可通过修改/opt/scada/ScadaWeb/appsettings.json调整:
"Kestrel": { "EndPoints": { "Http": { "Url": "http://localhost:5001" } } }权限不足错误:
确保所有SCADA目录权限正确:
sudo chown -R scada:scada /opt/scada sudo chmod -R 750 /opt/scada数据库连接问题:
检查/opt/scada/ScadaServer/Config/Base.xml中的连接字符串:
<ConnectionString> <![CDATA[Server=localhost;Database=Scada;User ID=scada;Password=yourpassword;]]> </ConnectionString>