以下是一个在云服务器上搭建OTA服务器的案例。
使用云服务器,安装CentOS操作系统。
首先检查系统中是否已安装httpd:
dos 复制代码rpm -qa | grep httpd
如果没有输出,则说明httpd未安装,使用以下命令安装:
dos 复制代码yum install httpd -y
启动httpd服务:
dos 复制代码systemctl start httpd systemctl enable httpd
默认的文件目录为 /var/www/html。
确保文件目录的权限设置正确:dos 复制代码sudo chmod 755 /var/www/html sudo chmod -R 755 /var/www/html
在 /var/www/html 下创建多级目录,用于存放固件版本:
dos 复制代码mkdir -p /var/www/html/releases/v1.0.0
修改 /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
根据云服务器平台规则修改防火墙或者安全组的出入规则:
请确保服务器的TCP端口80、443对所有对象的出入访问都不受限制。
此时再用浏览器访问 http://服务器公网IP:80/,
可以看到默认的欢迎页面变成了服务器"/var/www/html"的文件目录。
进入设备端(HMI)的OTA设置页面,配置以下内容:
打开OTA开关
设置OTA服务器地址:http://服务器公网IP
点击保存设置按钮
设备上电后自动连接网络。
查询OTA服务器,检查是否有新固件版本。
如果有新版本,下载并安装新固件。
Certbot 是 Let's Encrypt 提供的工具,用于自动化 SSL 证书的申请和更新。运行以下命令安装 Certbot:
sudo yum install certbot python2-certbot-apache
运行 Certbot 并按照提示操作,完成证书的申请和安装:
sudo certbot --apache
在提示中输入你的域名(例如 yourdomain.com),并按照提示完成域名验证。
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
确保你的域名已正确解析到服务器的 IP 地址(公网IP)。你可以在域名注册商的 DNS 管理界面中添加以下记录:
类型:A 记录
主机:@ 或 www
值:IP 地址
Let's Encrypt 证书的有效期为 90 天,因此需要设置自动更新机制:
创建一个定时任务,定期运行 Certbot 的更新命令:
sudo crontab -e
添加以下行以设置每周自动更新证书:
0 2 * * 1 certbot renew --quiet
这将在每周一凌晨 2 点运行 Certbot 的更新命令。
在浏览器中访问 https://yourdomain.com,检查是否可以正常访问。
使用 SSL 测试工具(如 SSL Labs 的 SSL Test)测试证书的强度和配置。
为了确保所有流量都通过 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
在设备端配置完成后,测试设备是否可以正常从服务器下载和安装新版本固件。
检查设备的固件版本是否更新成功。
在使用apus导出HMI程序后,使用7-Zip等工具打包和压缩固件文件。
打包和压缩固件后的压缩包必须命名为 upgrade.tar.gz。
将upgrade.tar.gz和其对应的MD5.txt上传到服务器的对应版本目录下:
dos 复制代码scp upgrade.tar.gz MD5.txt 用户名@服务器公网IP:/var/www/html/releases/vX.X.X/
确保固件文件已正确上传到服务器目录:
dos 复制代码ls -l /var/www/html/releases/vX.X.X/
点击手动更新按钮检查是否有新版本固件。
下载并安装新版本固件。
请确保设备将上传的最新版本安装进设备中。
限制对OTA服务器的访问,仅允许特定设备访问:
vim 复制代码<Directory "/var/www/html/releases"> Require ip 192.168.1.0/24 </Directory>
使用Let's Encrypt证书时,定期更新证书:
dos 复制代码certbot renew --dry-run
确保固件文件的存储路径不被未授权访问:
vim 复制代码<Directory "/var/www/html/releases"> Options -Indexes </Directory>
记录OTA服务器的配置信息,包括:
服务器IP地址
固件版本路径
HTTPS证书信息
定期检查服务器的运行状态。
更新固件版本时,确保服务器配置正确。
定期备份服务器上的固件文件。