diff --git a/mqtt_web/DEPLOY.md b/mqtt_web/DEPLOY.md new file mode 100644 index 0000000..a86f1ad --- /dev/null +++ b/mqtt_web/DEPLOY.md @@ -0,0 +1,206 @@ +# 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 +```bash +# Ubuntu/Debian +sudo apt update +sudo apt install -y python3 python3-pip python3-venv + +# 检查版本 +python3 --version +``` + +### 2.2 安装 Nginx +```bash +# Ubuntu/Debian +sudo apt install -y nginx +``` + +### 2.3 配置防火墙 +```bash +sudo ufw allow 22 # SSH +sudo ufw allow 80 # HTTP +sudo ufw allow 443 # HTTPS +sudo ufw enable +``` + +--- + +## 三、部署应用 + +### 3.1 上传代码 +```bash +# 在服务器上 +cd /var/www +sudo mkdir mqtt-web +sudo chown $USER mqtt-web +cd mqtt-web +# 上传 mqtt_web 目录内容(可通过 git 或 scp) +``` + +### 3.2 创建虚拟环境 +```bash +cd /var/www/mqtt-web +python3 -m venv venv +source venv/bin/activate +pip install -r requirements.txt +``` + +### 3.3 测试运行 +```bash +# 测试能否正常启动 +python3 app.py +# 访问 http://服务器IP:3000 测试 +``` + +--- + +## 四、Nginx 配置(推荐) + +### 4.1 创建配置文件 +```bash +sudo nano /etc/nginx/sites-available/mqtt-web +``` + +### 4.2 写入配置(HTTP) +```nginx +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 启用配置 +```bash +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 +```bash +sudo apt install -y certbot python3-certbot-nginx +``` + +### 5.2 获取免费证书 +```bash +sudo certbot --nginx -d your-domain.com +``` +按提示输入邮箱,完成后自动配置 HTTPS + +--- + +## 六、Systemd 服务(开机自启) + +### 6.1 创建服务文件 +```bash +sudo nano /etc/systemd/system/mqtt-web.service +``` + +### 6.2 写入内容 +```ini +[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 启用服务 +```bash +sudo systemctl daemon-reload +sudo systemctl enable mqtt-web +sudo systemctl start mqtt-web +``` + +--- + +## 七、访问方式 + +- **有域名**:https://your-domain.com +- **无域名**:http://服务器IP + +--- + +## 八、常见问题 + +### Q1: 端口被占用 +```bash +sudo lsof -i :3000 +sudo kill -9 +``` + +### Q2: 查看日志 +```bash +sudo journalctl -u mqtt-web -f +``` + +### Q3: 更新代码 +```bash +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 +```