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

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或网站站点

image-20250221100003027

新建站点的目的是得到一个空的站点目录,以便在该目录下使用CLI的方式安装strapi

2、检查nodejs等环境

image-20250221100130627

如果nodejs没有,可以自行通过宝塔面板nodejs管理器安装

image-20250221100300771

3、在该站点对应的目录下执行命令行
# strapi 4最新版
 npx create-strapi-app@legacy my-project
 # strapi 5
 npx create-strapi@latest

这里,因为数据库我需要用MySQL,所以选择的是自定义安装。完整安装步骤如下图:

image-20250217114900337

如果在下载依赖包时,报错,比如报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项目

image-20250217150327582

2、添加默认项目

image-20250217150445548

在此之前,确保你在命令行中已经构建好了admin面板

也就是npm run build

创建好后,如果没有问题,会自动在后台运行。这时,你就可以打开浏览器,通过IP:port的方式访问strapi项目了。

image-20250217150720779

3、配置域名

image-20250217150829301

在此之前,确保域名已经绑定好了该服务器

4、开启外网映射,以便将1337的端口映射到80端口

image-20250217150851738

5、配置SSL

image-20250217150917895

即使是nodejs项目,也可以像PHP项目那样配置免费的SSL

6、使用域名访问

image-20250217151059551

至此,你就拥有了一个基于nodejs的符合RESTFUL风格的API后端服务器。

可以用于任意Web前端开发项目中。


如果你在开发strapi时遇到了问题,可以在下方与我联系,作为你的strapi顾问。


http://www.kler.cn/a/555913.html

相关文章:

  • 蓝桥杯刷题0220
  • MCU Bootloader具备什么条件才能跳转到APP程序
  • 详解同为科技桌面PDU系列产品特点
  • 动态对冲策略
  • 端边云架构
  • 鸿蒙-做一个简版的富文本解析控件
  • DigitalOcean H200 GPU裸机服务器上线!可更好支持DeepSeek满血版
  • 鸿蒙5.0实战案例:基于自定义注解和代码生成实现路由框架
  • 网络安全设备防护原理 网络安全防护装置
  • 《深度剖析:人工智能与元宇宙构建的底层技术框架》
  • 【c++】线程池概述
  • 【深度学习】自然语言处理(NLP)-语音识别-WaveNet
  • 解决 Plugin ‘org.springframework.boot:spring-boot-maven-plugin:‘ not found
  • 洛谷P10423 [蓝桥杯 2024 省 B] 填空试题 A: 握手问题
  • boot汇编与kernal的汇编的比较
  • Educational Codeforces Round 174 (Rated for Div. 2) E. A, B, AB and BA
  • 大型软件开发项目工程中如何做好模块化管理
  • 服务器socket端口绑定失败解决方案
  • 我是如何从 0 到 1 找到 Web3 工作的?
  • AI大模型有哪些常见的应用场景