3.6 KiB
3.6 KiB
3D 打印控制面板公网部署方案
一、服务器准备
1.1 云服务器推荐
| 厂商 | 推荐配置 | 价格约 |
|---|---|---|
| 腾讯云轻量应用服务器 | 2核2G 50G SSD | 60/月 |
| 阿里云轻量应用服务器 | 2核2G 40G SSD | 60/月 |
| DigitalOcean | 2核2G 50G SSD | $10/月 |
地区选择:国内(用户访问快,需备案)或 香港/海外(免备案)
1.2 域名(可选)
- 国内服务器需备案后才能使用域名
- 香港/海外服务器可直接使用域名
- 推荐在腾讯云/阿里云购买域名(.com 约 60/年)
二、服务器环境配置
2.1 安装 Python 3
# Ubuntu/Debian
sudo apt update
sudo apt install -y python3 python3-pip python3-venv
# 检查版本
python3 --version
2.2 安装 Nginx
# Ubuntu/Debian
sudo apt install -y nginx
2.3 配置防火墙
sudo ufw allow 22 # SSH
sudo ufw allow 80 # HTTP
sudo ufw allow 443 # HTTPS
sudo ufw enable
三、部署应用
3.1 上传代码
# 在服务器上
cd /var/www
sudo mkdir mqtt-web
sudo chown $USER mqtt-web
cd mqtt-web
# 上传 mqtt_web 目录内容(可通过 git 或 scp)
3.2 创建虚拟环境
cd /var/www/mqtt-web
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
3.3 测试运行
# 测试能否正常启动
python3 app.py
# 访问 http://服务器IP:3000 测试
四、Nginx 配置(推荐)
4.1 创建配置文件
sudo nano /etc/nginx/sites-available/mqtt-web
4.2 写入配置(HTTP)
server {
listen 80;
server_name your-domain.com; # 替换为你的域名
location / {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# WebSocket 支持(备用)
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
4.3 启用配置
sudo ln -s /etc/nginx/sites-available/mqtt-web /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
五、SSL 证书(HTTPS)
5.1 安装 Certbot
sudo apt install -y certbot python3-certbot-nginx
5.2 获取免费证书
sudo certbot --nginx -d your-domain.com
按提示输入邮箱,完成后自动配置 HTTPS
六、Systemd 服务(开机自启)
6.1 创建服务文件
sudo nano /etc/systemd/system/mqtt-web.service
6.2 写入内容
[Unit]
Description=MQTT Web Control Panel
After=network.target
[Service]
User=www-data
Group=www-data
WorkingDirectory=/var/www/mqtt-web
Environment="PATH=/var/www/mqtt-web/venv/bin"
ExecStart=/var/www/mqtt-web/venv/bin/gunicorn -w 2 -b 127.0.0.1:3000 app:app
Restart=always
[Install]
WantedBy=multi-user.target
6.3 启用服务
sudo systemctl daemon-reload
sudo systemctl enable mqtt-web
sudo systemctl start mqtt-web
七、访问方式
- 有域名:https://your-domain.com
- 无域名:http://服务器IP
八、常见问题
Q1: 端口被占用
sudo lsof -i :3000
sudo kill -9 <PID>
Q2: 查看日志
sudo journalctl -u mqtt-web -f
Q3: 更新代码
sudo systemctl stop mqtt-web
# 更新代码...
sudo systemctl start mqtt-web
九、架构图
用户浏览器
↓ HTTPS
Nginx (80/443)
↓ Proxy
Gunicorn (3000端口)
↓
Python Flask + MQTT
↓
MQTT Broker (mqtt.beihong.wang)
↓
STM32