You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将本地Strapi无头CMS部署至公网,实现传统API服务?

部署Strapi应用为公网可访问API服务的可行方案

前置准备

  • 一台带公网IP的服务器(云VPS、本地服务器做端口映射均可)
  • 服务器安装对应版本的Node.js(Strapi v4要求v16+)、npm/yarn,以及目标数据库(建议替换SQLite为PostgreSQL/MySQL,生产环境更稳定)

第一步:调整Strapi应用配置

  1. 修改服务器监听配置
    编辑config/server.js,将host从localhost改为0.0.0.0,允许所有IP访问,同时确认端口设置(默认1337):
    module.exports = ({ env }) => ({
      host: env('HOST', '0.0.0.0'),
      port: env('PORT', 1337),
      app: {
        keys: env.array('APP_KEYS'),
      },
    });
    
  2. 配置数据库
    如果本地用SQLite,生产环境建议切换为PostgreSQL/MySQL,修改config/database.js对应数据库连接信息,确保服务器上的数据库服务正常运行且允许Strapi连接。
  3. 环境变量配置
    将敏感信息(数据库密码、APP_KEYS等)存入服务器环境变量,避免硬编码在配置文件中。

第二步:部署方案选择

方案一:VPS直接部署

  1. 上传代码:通过Git推送或scp上传项目包到服务器,解压到目标目录
  2. 安装依赖:进入项目目录,执行npm install或yarn install
  3. 构建生产环境:执行npm run build或yarn build生成优化后的生产代码
  4. 后台运行服务:用PM2进程管理器保持Strapi持续运行
    • 安装PM2:npm install pm2 -g
    • 启动服务:pm2 start npm --name "strapi-api" -- run start
    • 配置开机自启:pm2 startup,按提示执行生成的命令
  5. 开放端口:在服务器防火墙中开放Strapi端口(如1337),例如Ubuntu用ufw:
    ufw allow 1337/tcp
    ufw reload
    

方案二:Docker容器化部署

  1. 编写Dockerfile:在项目根目录创建Dockerfile
    FROM node:18-alpine
    
    WORKDIR /app
    
    COPY package*.json ./
    RUN npm install
    
    COPY . .
    RUN npm run build
    
    EXPOSE 1337
    
    CMD ["npm", "start"]
    
  2. 构建镜像:docker build -t strapi-api .
  3. 运行容器:docker run -d -p 1337:1337 --name strapi-container strapi-api
    • 如需持久化数据(如上传文件、数据库),添加数据卷挂载:-v ./data:/app/data
  4. 同样需要开放服务器的1337端口,确保容器可被公网访问

第三步:验证部署

  • 访问http://<服务器公网IP>:1337,能看到Strapi后台登录页或API响应即部署成功
  • 测试API接口:访问http://<服务器公网IP>:1337/api/[你的内容类型],确认数据正常返回

额外优化建议

  • 域名与HTTPS:如果有域名,解析到服务器IP后用Nginx做反向代理,将80/443端口转发到1337,同时配置Let's Encrypt免费证书实现HTTPS访问
    Nginx配置示例:
    server {
        listen 80;
        server_name your-domain.com;
        return 301 https://$server_name$request_uri;
    }
    
    server {
        listen 443 ssl;
        server_name your-domain.com;
    
        ssl_certificate /etc/letsencrypt/live/your-domain.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/your-domain.com/privkey.pem;
    
        location / {
            proxy_pass http://localhost:1337;
            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;
        }
    }
    
  • 安全配置:修改Strapi默认管理员密码,在config/middlewares.js配置CORS允许的域名,关闭不必要的权限。

内容的提问来源于stack exchange,提问作者Antonino Sartori

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 00:01:06