96SEO 2026-09-22 06:00 0
这篇文章档 lotdb-vue 部署到阿里云 ECS 的完整流程。覆盖代码上传、Docker Compose 启动、域名解析、宿主机 Nginx 反代、HTTPS 证书接入,还有部署过程中常见问题排查。
当服务器已有宿主机 Nginx。而且还有其他二级域名在使用时推荐使用以下结构:

浏览器 -> https://lotdb.wkylin.cn -> 宿主机 Nginx /
-> 反代到 .:
-> Docker frontend 容器 Nginx
/ -> Vue 静态页面
/api -> backend:
/uploads -> backend:backend
-> mysql:
-> iotdb: /
公网安全组只建议开放:
/tcpSSH/tcpHTTP/tcpHTTPS确认 Docker 和 Compose 已安装:
docker --version
docker compose version
ECS 为 2核 2G 内存 时建议开启 swap,否则项目会频繁重启。话说回来,从常见痛点来看。
sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
grep -q '^/swapfile ' /etc/fstab || echo '/swapfile swap swap defaults' | sudo tee -a /etc/fstab
free -h
至于建议部署目录。
mkdir -p /opt/lotdb-vue && cd /opt/lotdb-vue
git clone
# 或者本地打包后通过 scp 上传:
scp dist/* root@ecs_ip:/opt/lotdb-vue/
User 常见痛点:
复制生产环境模板并编辑:
cp backend/.env.prod.example backend/.env.prod
vim backend/.env.prod
从关键配置示例来看。
# Runtime
PORT=3000
NODE_ENV=production
JWT_SECRET=replace-with-a-long-random-secret
ADMIN_REGISTER_CODE=replace-with-your-admin-register-code
# MySQL
MYSQL_ROOT_PASSWORD=replace-with-strong-root-password
MYSQL_HOST=mysql
MYSQL_PORT=3306
MYSQL_USER=lotdb
MYSQL_PASSWORD=replace-with-strong-app-password
MYSQL_DATABASE=lotdb
# IoTDB
IOTDB_HOST=iotdb
IOTDB_PORT=20101 # TCP 接口端口
IOTDB_REST_PORT=18080 # REST 接口端口
IOTDB_USERNAME=root
IOTDB_PASSWORD=root
# Filesystem uploads folder path relative to docker volume.
UPLOAD_DIR=uploads
Pain points:
ECS 上已有宿主机 Nginx 时容器不要直接占用外部公开端口。推荐使用内部网络仅提供 HTTP,让宿主机负责 HTTPS。再看常见痛点,
cd /opt/lotdb-vue/
docker compose -f docker-compose.prod.yml up -d --build --remove-orphans
docker compose -f docker-compose.prod.yml ps
如果 mysql 或 iotdb 状态如 “Up seconds”。但已创建数分钟说明容器在反复重启,请先看日志和内存使用。
. 域名解析痛点
A 记录添加方式:
text
再看主机记录,lotdb
记录类型这方面,A
记录值的观点是。*.*.*.*
说到访问域名示例,text
https这方面,//lotdb.wkylin.cn
痛点的观点是,
-
DNS 延迟可能导致首次访问超时;可通过 TTL 调整快速切换 IP。
域名未解析到正确 IP 时HTTPS 请求会直接报证书错误;请先检查 A 记录是否生效。
如果证书已手动上传到 /etc/nginx/ssl/your-cert.pem/key.pem 则可以由宿主机终止 HTTPS,接下来反代到内部 http 服务。例如的观点是,请根据实际情况修改方法与域名。img src="/images/nginx-config.png" alt="" src="">
TIPS:
server { listen *:*;server_name lot...; 老实说,} server { listen ssl http2; location / { proxy_pass http://.:;proxy_http_version;proxy_set_header Host $host;proxy_set_header X‑Real‑IP $remote_addr;proxy_set_header X‑Forwarded‑For $proxy_add_x_forwarded_for;怎么说呢,proxy_set_header X‑Forwarded‑Proto $scheme;} } **检查并重载**:server_name lot...;ssl_certificate;ssl_certificate_key;nginx -t && systemctl reload nginx || exit;**验证**: bash curl https://lot...curl https://…api/v1/products Pain point notes:
. 分层排查 “Bad Gateway” 痛点
Bad Gateway 错误代表着某一层断了。列举三层链路,从最外层往里检查。
宿主机 nginx 到 frontend 容器
bash curl –I http://.: # 检测是否能连通内部服务 如果失败说明的观点是,
- 宿主机 nginx 配置有误;
- 前端容器未映射正确内部地址;
- 防火墙或 security group 拒绝访问。
frontend 容器到 backend 容器
bash
curl http://.:/api/v1/products
成功表示前端能访问 API,如果返回错误则说明:
- 前端未正确转发
/api/*;- 后端 API 地址或服务名称配置错误。
继续看后端日志:
docker compose …logs –tail = backend
也可在后台 shell 内测试:
docker compose …说起来,exec backend sh –lc "wget –qO– http://.:health || true" docker compose …exec frontend sh –lc "wget –S –O– http://backend:/health || true"
MySQL 常见问题
未就绪
再看日志示例。
text
AppError : MySQL 未就绪 connect ECONNREFUSED mysql:
再看解决办法,
等待 30~60 秒 再重启后端。
使用者权限错误
Host '.xxx.xxx.xxx' is not allowed to connect to this MySQL server
原因通常是已经初始化过数据卷。但改了 MYSQLUSER/MYSQLPASSWORD,MySQL 不会自动重建使用者。
方法之一这方面,
- 新部署且无关键数据时可以删除所有 volume 并重新启动。
- 若需保留数据,则进入 mysql 手动创建授权使用者。
删除并重新创建 volume
docker compose …down –v && \ docker compose …up –d --build
IoTDB 常见问题
REST 接口未就绪
后端日志可能出现
connect ECONNREFUSED iot....先查看 iotd 状态及日志,接下来等其稳定后再重启后端。
密码错误
日志中出现
WRONG_LOGIN_PASSWORD表明 IOT_DB 密码配置不对。如果没有关键数据,可通过下述方式清空并重新初始化 IOT_DB 数据卷:
docker compose …down && \ docker volume rm lot…iotdb_data && \ docker compose …话说回来,up –d && \ docker compose …restart backend
IoT_DB 的分析页面依赖此数据库。如果异常则图表无法绘制,但商品、订单等功能仍可正常使用。
容器反复重启排查
若
ps显示 “Up seconds”。但已持续数分钟,则说明某些服务因 OOM 或异常被 restart 所致。看日志与内存使用以定位根源:
docker compose …logs –tail = mysqldocker stats --no-stream
注意 swap 是否已开启——在 2G ECS 上尤为关键。
登录与接口排查
默认账号为 admin/Admin@ 和 buyer/Admin@。
登录接口测试命令:
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback