Strapi是全球最流行的开源无头CMS(Headless CMS),基于Node.js开发,以MIT协议开源,完全免费商用。Strapi诞生于2015年,GitHub星数超过6万,是GitHub上星数最多的开源CMS。Strapi采用API优先的设计理念,不绑定前端展示层,通过REST API和GraphQL API向任何前端(Web、App、小程序、IoT设备)提供内容。Strapi内置强大的内容建模、用户管理、权限管理、媒体管理、插件系统,适合开发者构建自定义内容管理系统、多端内容分发平台、JAMstack网站后端。
核心优势:完全开源免费(MIT协议)、API优先(REST + GraphQL)、可视化内容建模、灵活的权限管理(RBAC)、丰富的插件生态、支持多种数据库、Docker部署、TypeScript支持、被多家世界500强企业采用。Strapi是开发者构建现代化内容架构的首选无头CMS。
环境要求
- 操作系统:Linux(Ubuntu/Debian/CentOS)、Windows、macOS
- Node.js版本:Node.js 18.x 或 20.x(Strapi 5推荐Node 18/20 LTS)
- npm版本:npm 9.x+ 或 yarn 1.22+
- 数据库:MySQL 8.0+ / PostgreSQL 14+ / SQLite 3(开发环境)/ MariaDB 10.3+
- 内存:最低1GB,推荐2GB以上(构建和运行需要)
- 磁盘:至少2GB可用空间
- Web服务器:Nginx(用于反向代理,可选)
- Git:用于版本管理(推荐)
安装教程
步骤1:安装Node.js
curl -fsSL https://deb.nodesource.com/setup_20.x | bash -
apt install -y nodejs
node --version
npm --version
步骤2:创建Strapi项目
cd /opt
npx create-strapi-app@latest my-strapi --quickstart
这会使用SQLite数据库快速启动一个开发环境。生产环境建议使用MySQL或PostgreSQL。
步骤3:生产环境安装(使用MySQL)
cd /opt
npx create-strapi-app@latest my-strapi
# 选择 Custom (manual settings)
# 选择数据库类型:mysql
# 填写数据库连接信息
或手动创建项目并配置MySQL:
cd /opt
npx create-strapi-app@latest my-strapi --quickstart
cd my-strapi
npm install mysql2 --save
编辑 config/database.js:
module.exports = ({ env }) => ({
connection: {
client: 'mysql',
connection: {
host: env('DATABASE_HOST', 'localhost'),
port: env.int('DATABASE_PORT', 3306),
database: env('DATABASE_NAME', 'strapi'),
user: env('DATABASE_USERNAME', 'strapi'),
password: env('DATABASE_PASSWORD', 'your_password'),
ssl: env.bool('DATABASE_SSL', false),
},
},
});
步骤4:创建MySQL数据库
mysql -u root -p
CREATE DATABASE strapi DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'strapi'@'localhost' IDENTIFIED BY 'your_strong_password';
GRANT ALL PRIVILEGES ON strapi.* TO 'strapi'@'localhost';
FLUSH PRIVILEGES;
EXIT;
步骤5:构建和启动生产环境
cd /opt/my-strapi
NODE_ENV=production npm run build
NODE_ENV=production npm run start
Strapi默认运行在1337端口。
步骤6:配置PM2进程管理
npm install -g pm2
cd /opt/my-strapi
pm2 start npm --name strapi -- run start
pm2 save
pm2 startup
步骤7:Nginx反向代理配置
server {
listen 80;
server_name yourdomain.com www.yourdomain.com;
location / {
proxy_pass http://127.0.0.1:1337;
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 /uploads/ {
proxy_pass http://127.0.0.1:1337;
expires 30d;
add_header Cache-Control "public, immutable";
}
}
步骤8:完成管理员注册
浏览器访问 http://yourdomain.com/admin,首次访问会进入管理员注册页面:
- 填写管理员姓名、邮箱、密码
- 点击”Let’s start”完成注册
- 进入Strapi管理后台
Strapi后台功能包括:内容类型构建器、内容管理、媒体库、用户管理、角色权限、插件管理、API文档、设置等。
Windows环境安装
Windows下安装步骤:
- 从Node.js官网(https://nodejs.org)下载LTS版本安装包,双击安装
- 打开命令提示符(CMD)或PowerShell,验证安装:
node --version和npm --version - 使用命令行工具进入项目目录,执行与Linux相同的安装命令
- Windows下建议使用Git Bash或Windows Terminal获得更好的命令行体验
注意:Node.js项目在Windows下开发,生产环境建议部署到Linux服务器。
宝塔面板部署
宝塔面板支持Node.js项目部署:
- 安装宝塔面板(参考PHP类安装命令)
- 在宝塔面板 → 软件商店中安装”PM2管理器”
- 通过PM2管理器安装所需的Node.js版本
- 点击”网站” → “添加Node项目”,填写项目名称、启动文件、端口等
- 将项目文件上传到指定目录
- 在项目设置中配置环境变量、启动命令
- 配置Nginx反向代理,将域名指向Node.js应用端口
- 在PM2管理器中启动项目,设置开机自启
服务器配置建议
- 内存:建议2GB以上,Strapi构建过程需要较多内存
- Node.js:使用LTS版本(18.x/20.x),不要使用最新版本
- 数据库:生产环境使用MySQL 8.0或PostgreSQL 14+,不要使用SQLite
- 构建内存:构建时可能需要更多内存,可设置
NODE_OPTIONS=--max-old-space-size=2048 - PM2:使用PM2管理进程,确保服务稳定运行
- Nginx:启用gzip压缩,配置静态资源缓存
- 定期更新:执行
npm update @strapi/strapi更新核心 - 定期备份:备份MySQL数据库和public/uploads目录
- 配置CORS:在config/middlewares.js中配置允许的域名
- 生产环境设置JWT_SECRET和ADMIN_JWT_SECRET环境变量
常见问题
Q:Strapi构建失败,提示内存溢出?
A:增加Node.js内存限制:NODE_OPTIONS=--max-old-space-size=4096 npm run build。确保服务器内存至少2GB,必要时创建swap分区。
Q:API返回403或CORS错误?
A:在Strapi后台 → 设置 → 角色 → Public中配置API权限。在config/middlewares.js中配置CORS允许的origin域名。
Q:如何创建自定义内容类型?
A:在Strapi后台 → 内容类型构建器中,点击”创建新的内容类型”,定义字段(文本、富文本、图片、关系等),保存后自动生成API接口。
Q:忘记管理员密码怎么办?
A:在项目根目录执行:npm run strapi admin:reset-user-password --email=admin@example.com --password=新密码
Q:Strapi和WordPress怎么选?
A:需要API优先、多端内容分发、自定义内容模型选Strapi;需要传统网站、主题插件、可视化编辑选WordPress。开发者构建JAMstack和多端应用推荐Strapi,普通网站推荐WordPress。
官方网址
官方网站:https://strapi.io
下载地址:https://strapi.io/download