# 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 ```