菜单

OTA服务器搭建案例

下载

以下是一个在云服务器上搭建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 定期维护

定期检查服务器的运行状态。
更新固件版本时,确保服务器配置正确。
定期备份服务器上的固件文件。

最近修改: 2025-01-22Powered by