当前位置: 首页 > news >正文

在服务器中部署TestHub开源测试平台

TestHub测试平台正式开源,文末获取完整源码

最近这段时间,一个名为TestHub的开源测试平台在测试圈子悄然崛起,之前只是在本地运行了下看了下页面效果,页面还是非常漂亮的。今天抽时间研究了一下在服务器上去部署这个项目,当然,大部分都是借助AI去帮我完成的。因为平台技术栈用到了Django + Vue3 ,数据库用的是mysql,因此,需要了解一下怎么去部署这种架构的项目,这里的话采用docker搭建是比较方便的。

主要的思路如下:

1、docker搭建mysql8版本的数据库

2、后端代码用docker镜像启动

3、前端采用node打包构建后,将部署包部署到ngnix镜像中下面是一些dockerfile,可以供参考:

Dockerfile.backend

FROM python:3.12-slim# 设置环境变量ENV PYTHONDONTWRITEBYTECODE=1ENV PYTHONUNBUFFERED=1# 设置工作目录WORKDIR /app# 安装系统依赖RUN apt-get update \ && apt-get install -y --no-install-recommends \ default-libmysqlclient-dev \ build-essential \ pkg-config \ gcc \ && rm -rf /var/lib/apt/lists/*# 复制requirements文件COPY requirements.txt .# 安装Python依赖RUN pip install --no-cache-dir -r requirements.txt# 复制项目代码COPY . .# 收集静态文件RUN python manage.py collectstatic --noinput# 暴露端口EXPOSE 8000# 启动命令CMD ["sh", "-c", "python manage.py migrate --no-input && python manage.py runserver 0.0.0.0:8000"]

Dockerfile.frontend

# 多阶段构建 - 前端构建阶段FROM node:18-alpine AS builder# 设置工作目录WORKDIR /app# 复制前端文件COPY frontend/ .# 安装依赖RUN npm install# 构建前端应用RUN npm run build# 使用Nginx作为生产环境FROM nginx:alpine# 复制Nginx配置COPY nginx.conf /etc/nginx/nginx.conf# 复制构建好的前端文件COPY --from=builder /app/dist /usr/share/nginx/html# 暴露端口EXPOSE 80# 启动NginxCMD ["nginx", "-g", "daemon off;"]

nginx.conf

events { worker_connections 1024;}http { include /etc/nginx/mime.types; default_type application/octet-stream; # 日志格式 log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; error_log /var/log/nginx/error.log warn; # 基本设置 sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048; # Gzip设置 gzip on; gzip_vary on; gzip_proxied any; gzip_comp_level 6; gzip_types text/plain text/css text/xml text/javascript application/json application/javascript application/xml+rss; server { listen 80; server_name localhost; # 前端静态文件 location / { root /usr/share/nginx/html; try_files $uri $uri/ /index.html; expires 1h; add_header Cache-Control "public, must-revalidate, proxy-revalidate"; } # API请求代理到后端 location /api/ { proxy_pass http://testhub-backend:8000; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; 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; proxy_cache_bypass $http_upgrade; } # 媒体文件代理到后端 location /media/ { proxy_pass http://testhub-backend:8000; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; 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; proxy_cache_bypass $http_upgrade; } # 静态文件代理到后端 location /static/ { proxy_pass http://testhub-backend:8000; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; 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; proxy_cache_bypass $http_upgrade; } }}

run.sh

#!/bin/bashset -eBASE_DIR="/testhub"cd "$BASE_DIR"# 创建网络docker network create testhub-net 2>/dev/null || echo "Network already exists"# 1. 构建后端镜像echo "Building backend image..."docker build -f Dockerfile.backend -t testhub-backend:latest .# 2. 构建前端镜像echo "Building frontend image..."docker build -f Dockerfile.frontend -t testhub-frontend:latest .# 3. 停止并删除旧容器docker stop testhub-backend testhub-nginx 2>/dev/null || truedocker rm testhub-backend testhub-nginx 2>/dev/null || true# 4. 启动后端echo "Starting backend container..."docker run -d --name testhub-backend \ --restart=always \ -p 8000:8000 \ --network testhub-net \ -v "$BASE_DIR/.env:/app/.env:ro" \ -v "$BASE_DIR/media:/app/media" \ -v "$BASE_DIR/logs:/app/logs" \ -v "$BASE_DIR/static:/app/static" \ testhub-backend:latest# 5. 启动前端(nginx)echo "Starting frontend container..."docker run -d \ --name testhub-nginx \ --restart=always \ --network testhub-net \ -p 80:80 \ -v /testhub/nginx.conf:/etc/nginx/conf.d/default.conf:ro \ -v /testhub/media:/app/media:ro \ -v /testhub/static:/app/static:ro \ testhub-frontend:latestecho "TestHub is running -> http://localhost"

反正上面这些脚本都是AI生成的,自己试了一下是可以用的,如果有看不懂的,大家可以自己再问ai,有问题的话还可以找ai反馈一下。

还没有拿到源码的小伙伴,以及还没有进交流群的,都可以添加下面的微信喔:

http://www.jsqmd.com/news/1249759/

相关文章:

  • 1.2 amdgpu_bo的设计分析 — gem层和ttm层
  • mmdetection3D与NuScenes数据集实战指南
  • 为什么83%的AI项目在团队阶段失败?——拆解模型版本管理、数据权限、推理服务三大断点,立即修复
  • 广州海珠包包回收2026正规门店,香奈儿CF、LV老花高价回收 - 奢侈品回收评测
  • 软路由小白必看:OpenWRT旁路由在ESXi下的完整配置流程(含固件转换技巧)
  • 2026年北京通州管道疏通防坑指南:真实测评推荐 - 余生黄金回收
  • 逆向工程实战:解密网易云音乐NCM音频格式与构建本地化工具链
  • 已认证公众号迁移干嘛用?2026手机线上申报攻略 - 跑政通
  • 小程序主体变更有什么用处?手机线上办理指南 - 跑政通
  • 深入解析CCM-R4F锁步机制:构建汽车电子与工业控制的安全基石
  • AIGC内容降AI特征率技术与工具全解析
  • 智联招聘发布招聘信息收费吗?HR 实测主流平台成本对比
  • OpenWrt x86平台PCIe配置实战:从零搭建高性能软路由
  • Python计算机毕设之基于 Python 的期货行情展示与模拟交易系统 零基础期货实训虚拟交易平台设计(完整前后端代码+说明文档+LW,调试定制等)
  • 深耕大城保温产业集群|廊坊英硕保温,外墙保温辅材一站式源头供应 - 米諾
  • 在海口回收钻戒如何防止被坑?备案资质一定要核查 - 日常比对手册
  • DecoTV注册功能详解:临时开启与安全管理最佳实践
  • 抖音实况照片怎么导出无水印原图 2026 安卓苹果实测方法 - 免费软件工具方法教程
  • 047、正激变换器的输出滤波设计
  • 法人不同能否迁移公众号干嘛用?线上申办实操攻略 - 跑政通
  • Mysql超详细安装配置教程(保姆级)
  • 闲置路由器改造指南:小米4A百兆版刷OpenWrt变身轻量级软路由
  • 15分钟搭建Google账号问题诊断原型
  • Banana Pi BPi-R3 Mini vs 普通路由器:为什么这款迷你设备值得折腾?
  • Django毕设选题推荐:基于 Django 的高校综测加分审核与成绩公示系统 数字化学生综合素质评价管理系统【附源码、mysql、文档、调试+代码讲解+全bao等】
  • Claude Skills中文版:16个AI提示词模板实战解析
  • SpringBoot22-@Conditional条件装配
  • LDR6020:全功能 C 口 OTG 应用,充电投屏一线通
  • 权威发布:雅典2026年7月烟台售后地址与热线 - 亨得利钟表维修中心
  • 订单增长120%:喜德利汽车专用电线定制案例 - 全域品牌推荐