strapi4,strapi5最新版安装部署教程
文章目录
- 一、背景
- 二、安装
- 1、新建nodejs或网站站点
- 2、检查nodejs等环境
- 3、在该站点对应的目录下执行命令行
- 4、构建admin面板
- 5、运行
- **方法 1:在环境变量中设置 `JWT_SECRET`(推荐)**
- **步骤 1:生成 `jwtSecret`**
- **步骤 2:添加到 `.env` 文件**
- **步骤 3:在 `config/plugins.js` 里读取**
- **步骤 4:重启 Strapi**
- **方法 2:直接在 `config/plugins.js` 里写死(不推荐)**
- **总结**
- 三、使用宝塔面板部署项目
- 1、切换到网站-Node项目
- 2、添加默认项目
- 3、配置域名
- 4、开启外网映射,以便将1337的端口映射到80端口
- 5、配置SSL
- 6、使用域名访问
一、背景
我想要搭建 vue-fabric-editor
这个开源海报设计项目的后端。因为它本身也用的是strapi4
做后端服务。所以想无缝对接。
后续上手后,考虑转移到strap5中。
strapi5与strapi 4的安装方式相同
二、安装
我用的是宝塔面板,可以用它轻松将网站等部署到云服务器,而不需要先在本地搭建,再部署到服务器。
所以接下来的步骤都在该面板下进行。
1、新建nodejs或网站站点
新建站点的目的是得到一个空的站点目录,以便在该目录下使用CLI的方式安装strapi
2、检查nodejs等环境
如果nodejs没有,可以自行通过宝塔面板nodejs管理器安装
3、在该站点对应的目录下执行命令行
# strapi 4最新版
npx create-strapi-app@legacy my-project
# strapi 5
npx create-strapi@latest
这里,因为数据库我需要用MySQL,所以选择的是自定义安装。完整安装步骤如下图:
如果在下载依赖包时,报错,比如报sharp无法安装,可以通过如下命令行重新安装:
npm install sharp
# 注意如果安装失败,可以先
npm cache clean --force
npm rebuild
# 再安装一次
# 如果不行,可以删除node_modules,尝试用yarn安装
yarn install
4、构建admin面板
# 如果用生产环境,则无法使用Content-Type Builder
NODE_ENV=production npm run build
# 需要用
npm run build
5、运行
# 如果用生产环境,则无法使用Content-Type Builder
NODE_ENV=production npm run start
# 需要用这种
npm run develop
首次运行时,遇到如下问题:
error: Missing jwtSecret. Please, set configuration variable "jwtSecret" for the users-permissions plugin in config/plugins.js (ex: you can generate one using Node with `crypto.randomBytes(16).toString('base64')`).
For security reasons, prefer storing the secret in an environment variable and read it in config/plugins.js. See https://docs.strapi.io/developer-docs/latest/setup-deployment-guides/configurations/optional/environment.html#configuration-using-environment-variables.
Error: Missing jwtSecret. Please, set configuration variable "jwtSecret" for the users-permissions plugin in config/plugins.js (ex: you can generate one using Node with `crypto.randomBytes(16).toString('base64')`).
For security reasons, prefer storing the secret in an environment variable and read it in config/plugins.js. See https://docs.strapi.io/developer-docs/latest/setup-deployment-guides/configurations/optional/environment.html#configuration-using-environment-variables.
解决方式:
这个错误的意思是 Strapi 的 users-permissions
插件缺少 jwtSecret
配置,你需要手动添加这个 jwtSecret
,通常有两种方式:
方法 1:在环境变量中设置 JWT_SECRET
(推荐)
在 Strapi 服务器的环境变量 中添加 JWT_SECRET
,然后在 config/plugins.js
里读取:
步骤 1:生成 jwtSecret
使用以下命令生成一个 安全的随机密钥:
node -e "console.log(require('crypto').randomBytes(16).toString('base64'))"
示例输出:
KJ7xWZQ+z6R9L8dXZo7nVA==
步骤 2:添加到 .env
文件
在 strapi4
目录下,找到 .env
文件(如果没有,就创建一个),添加:
JWT_SECRET=KJ7xWZQ+z6R9L8dXZo7nVA==
步骤 3:在 config/plugins.js
里读取
编辑 config/plugins.js
,添加:
module.exports = ({ env }) => ({
'users-permissions': {
config: {
jwtSecret: env('JWT_SECRET'),
},
},
});
步骤 4:重启 Strapi
npm run build
npm run develop
方法 2:直接在 config/plugins.js
里写死(不推荐)
你可以直接在 config/plugins.js
里硬编码 jwtSecret
(但不安全):
module.exports = {
'users-permissions': {
config: {
jwtSecret: 'KJ7xWZQ+z6R9L8dXZo7nVA==', // 直接写入,安全性较低
},
},
};
然后 重启 Strapi:
npm run develop
但这种方法不推荐,因为如果代码被公开,JWT 密钥可能会泄露。
总结
✅ 使用 .env
配置 JWT_SECRET
并在 config/plugins.js
里读取,更加安全。
这样应该就能解决 Missing jwtSecret
的错误了,试试看!🚀
三、使用宝塔面板部署项目
1、切换到网站-Node项目
2、添加默认项目
在此之前,确保你在命令行中已经构建好了admin面板
也就是npm run build
创建好后,如果没有问题,会自动在后台运行。这时,你就可以打开浏览器,通过IP:port
的方式访问strapi
项目了。
3、配置域名
在此之前,确保域名已经绑定好了该服务器
4、开启外网映射,以便将1337的端口映射到80端口
5、配置SSL
即使是nodejs项目,也可以像PHP项目那样配置免费的SSL
6、使用域名访问
至此,你就拥有了一个基于nodejs
的符合RESTFUL
风格的API
后端服务器。
可以用于任意Web前端开发项目中。
如果你在开发strapi时遇到了问题,可以在下方与我联系,作为你的strapi顾问。