速卖通素材
努力

前后端代码都在同一台服务器,怎么部署?

服务器

在同一台服务器上部署前后端代码可以通过以下方式实现,具体步骤取决于技术栈和需求。以下是常见的几种方案及详细步骤:


方案1:前后端分离部署(推荐)

适用场景:前端是静态资源(如React/Vue打包后的文件),后端是Node.js/Java/Python等服务。

步骤

  1. 前端部署

    • 构建前端静态文件(如 npm run build),生成 distbuild 目录。
    • 将静态文件放到Web服务器(如Nginx/Apache)的静态资源目录:
      # 例如Nginx默认目录
      cp -r dist/* /var/www/html/
  2. 后端部署

    • 启动后端服务(如Node.js/Python/Java),监听某个端口(如 3000)。
    • 确保后端服务常驻(可用 pm2systemd 等工具守护进程):
      # Node.js示例(使用pm2)
      pm2 start server.js
  3. 配置Nginx反向X_X

    • 修改Nginx配置,将前端请求指向静态文件,API请求转发到后端:

      server {
       listen 80;
       server_name your-domain.com;
      
       # 前端静态文件
       location / {
           root /var/www/html;
           index index.html;
           try_files $uri $uri/ /index.html;
       }
      
       # 后端APIX_X
       location /api {
           proxy_pass http://localhost:3000;
           proxy_set_header Host $host;
       }
      }
    • 重启Nginx:
      sudo systemctl restart nginx

方案2:前后端同进程部署

适用场景:后端直接托管前端文件(如Express/Koa集成静态资源)。

步骤(以Node.js为例):

  1. 将前端构建文件(如 dist)放入后端项目目录。
  2. 在后端代码中配置静态资源路由:

    const express = require('express');
    const app = express();
    
    // 托管前端静态文件
    app.use(express.static('dist'));
    
    // 后端API路由
    app.get('/api/data', (req, res) => {
       res.json({ message: "Hello from backend!" });
    });
    
    // 所有其他路由返回前端HTML(支持前端路由)
    app.get('*', (req, res) => {
       res.sendFile(path.join(__dirname, 'dist', 'index.html'));
    });
    
    app.listen(3000, () => console.log('Server running on port 3000'));
  3. 启动服务并守护进程(如用 pm2):
    pm2 start server.js

方案3:使用Docker容器化

适用场景:需要隔离环境或简化依赖管理。

步骤

  1. 编写 Dockerfile 分别构建前后端镜像,或使用 docker-compose.yml 编排。
  2. 示例 docker-compose.yml

    version: '3'
    services:
     frontend:
       image: nginx:alpine
       ports:
         - "80:80"
       volumes:
         - ./dist:/usr/share/nginx/html
    
     backend:
       image: your-backend-image
       ports:
         - "3000:3000"
  3. 启动服务:
    docker-compose up -d

关键注意事项

  1. 端口分配:确保前后端端口不冲突(如前端80,后端3000)。
  2. 跨域问题:若前端直接访问后端端口,需在后端配置CORS(开发阶段常见)。
  3. HTTPS:使用Let’s Encrypt为Nginx配置SSL证书提升安全性。
  4. 性能优化
    • 开启Nginx静态文件缓存。
    • 后端服务启用压缩(如Gzip)。

总结

  • 推荐方案:前后端分离 + Nginx反向X_X(灵活、易维护)。
  • 快速方案:后端直接托管前端文件(适合小型项目)。
  • 高级方案:Docker容器化(适合复杂环境)。

根据实际需求选择部署方式,并确保服务器防火墙开放对应端口(如80、443、3000)。

未经允许不得转载:轻量云Cloud » 前后端代码都在同一台服务器,怎么部署?