以下是一个在云服务器上搭建OTA服务器的案例。
1. 服务器搭建
1.1 安装操作系统
使用云服务器,安装CentOS操作系统。
1.2 安装Web服务器软件httpd
首先检查系统中是否已安装httpd:
dos 复制代码rpm -qa | grep httpd如果没有输出,则说明httpd未安装,使用以下命令安装:
dos 复制代码yum install httpd -y启动httpd服务:
dos 复制代码systemctl start httpd systemctl enable httpd
1.3 设置目录权限
默认的文件目录为 /var/www/html。
dos 复制代码
确保文件目录的权限设置正确:sudo chmod 755 /var/www/html sudo chmod -R 755 /var/www/html
1.4 创建目录结构
在 /var/www/html 下创建多级目录,用于存放固件版本:
dos 复制代码mkdir -p /var/www/html/releases/v1.0.0
1.5 修改httpd配置
修改 /etc/httpd/conf.d/welcome.conf:
dos 复制代码vim /etc/httpd/conf.d/welcome.conf注释掉以下两行:
vim 复制代码#Options -Indexes #ErrorDocument 403 /.noindex.html重启httpd服务:
dos 复制代码systemctl restart httpd
1.6 修改防火墙出入规则
根据云服务器平台规则修改防火墙或者安全组的出入规则:
请确保服务器的TCP端口80、443对所有对象的出入访问都不受限制。
此时再用浏览器访问 http://服务器公网IP:80/,
可以看到默认的欢迎页面变成了服务器"/var/www/html"的文件目录。
2. 设备端配置
2.1 配置OTA设置
进入设备端(HMI)的OTA设置页面,配置以下内容:
打开OTA开关
设置OTA服务器地址:http://服务器公网IP
点击保存设置按钮
2.2 自动更新流程
设备上电后自动连接网络。
查询OTA服务器,检查是否有新固件版本。
如果有新版本,下载并安装新固件。
3. 安全性与域名绑定(可选)
3.1 安装 Certbot
Certbot 是 Let's Encrypt 提供的工具,用于自动化 SSL 证书的申请和更新。运行以下命令安装 Certbot:
sudo yum install certbot python2-certbot-apache
3.2 申请 SSL 证书
运行 Certbot 并按照提示操作,完成证书的申请和安装:
sudo certbot --apache
在提示中输入你的域名(例如 yourdomain.com),并按照提示完成域名验证。
3.3 配置 HTTPS
Certbot 会自动修改 httpd 的配置文件,但你也可以手动检查和调整配置:
编辑 Apache 配置文件:
sudo nano /etc/httpd/conf/httpd.conf
添加或修改以下配置:
<VirtualHost *:443>
ServerName yourdomain.com
ServerAlias www.yourdomain.com
DocumentRoot /var/www/html
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/yourdomain.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/yourdomain.com/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/yourdomain.com/chain.pem
重启 httpd 服务以应用更改:
sudo systemctl restart httpd
3.4 配置域名解析
确保你的域名已正确解析到服务器的 IP 地址(公网IP)。你可以在域名注册商的 DNS 管理界面中添加以下记录:
类型:A 记录
主机:@ 或 www
值:IP 地址
3.5 设置证书自动更新
Let's Encrypt 证书的有效期为 90 天,因此需要设置自动更新机制:
创建一个定时任务,定期运行 Certbot 的更新命令:
sudo crontab -e
添加以下行以设置每周自动更新证书:
0 2 * * 1 certbot renew --quiet
这将在每周一凌晨 2 点运行 Certbot 的更新命令。
3.6 测试 HTTPS 配置
在浏览器中访问 https://yourdomain.com,检查是否可以正常访问。
使用 SSL 测试工具(如 SSL Labs 的 SSL Test)测试证书的强度和配置。
3.7 重定向 HTTP 到 HTTPS
为了确保所有流量都通过 HTTPS 访问,可以将 HTTP 请求重定向到 HTTPS:
编辑 httpd 配置文件:
sudo nano /etc/httpd/conf/httpd.conf
添加以下配置:
<VirtualHost *:80>
ServerName yourdomain.com
ServerAlias www.yourdomain.com
Redirect permanent / https://$server_name/
重启 httpd 服务:
sudo systemctl restart httpd
4 测试OTA升级功能
在设备端配置完成后,测试设备是否可以正常从服务器下载和安装新版本固件。
检查设备的固件版本是否更新成功。
4.1 上传测试
在使用apus导出HMI程序后,使用7-Zip等工具打包和压缩固件文件。
打包和压缩固件后的压缩包必须命名为 upgrade.tar.gz。
4.2 上传固件
将upgrade.tar.gz和其对应的MD5.txt上传到服务器的对应版本目录下:
dos 复制代码scp upgrade.tar.gz MD5.txt 用户名@服务器公网IP:/var/www/html/releases/vX.X.X/
4.3 验证服务器端
确保固件文件已正确上传到服务器目录:
dos 复制代码ls -l /var/www/html/releases/vX.X.X/
5. 更新测试
5.1 模拟设备更新
点击手动更新按钮检查是否有新版本固件。
下载并安装新版本固件。
5.2 验证更新流程
请确保设备将上传的最新版本安装进设备中。
6. 安全加固
6.1 限制访问
限制对OTA服务器的访问,仅允许特定设备访问:
vim 复制代码<Directory "/var/www/html/releases"> Require ip 192.168.1.0/24 </Directory>
6.2 定期更新证书
使用Let's Encrypt证书时,定期更新证书:
dos 复制代码certbot renew --dry-run
6.3 防止未授权访问
确保固件文件的存储路径不被未授权访问:
vim 复制代码<Directory "/var/www/html/releases"> Options -Indexes </Directory>
7. 文档与维护
7.1 文档记录
记录OTA服务器的配置信息,包括:
服务器IP地址
固件版本路径
HTTPS证书信息
7.2 定期维护
定期检查服务器的运行状态。
更新固件版本时,确保服务器配置正确。
定期备份服务器上的固件文件。