环境
以下教程,邮件往上都为V3版本
Node LTS(v12 或 V14)永远不会支持 Node 的奇数版本。
NPM v6 或 LTS Node 版本附带的任何版本
至少 1 个 CPU (强烈推荐至少 2 个)
至少 2 GB 的 RAM(中等推荐 4)
32 GB可用空间
支持的数据库版本
MySQL >= 5.6
MariaDB >= 10.1
PostgreSQL >= 10
SQLite >= 3
MongoDB >= 3.6
受支持的操作系统
Ubuntu >= 18.04(仅限 LTS)
Debian >= 9.x
CentOS/RHEL >= 8
macOS Mojave 或更新版本(不支持 ARM)
WIN 10
简单安装和启动开发环境
# npm安装 有指南
npx create-strapi-app my-project --quickstart
# 构建&重新构建
npm run build
# 启动开发模式
npm run develop
源码安装
拉源码
git clone https://github.com/strapi/strapi
生产模式构建
cd ./my-project/
npm install
NODE_ENV=production npm run build
生成生产模式配置文件,内容替换
cd ./my-project/
sudo nano ecosystem.config.js
模板如下
module.exports = {
apps: [
{
name: 'strapi',
cwd: 'https://fileem.com/home/your-name/my-strapi-project/my-project',
script: 'npm',
args: 'start',
env: {
NODE_ENV: 'production',
DATABASE_HOST: 'localhost', // database endpoint
DATABASE_PORT: '5432',
DATABASE_NAME: 'strapi', // DB name
DATABASE_USERNAME: 'your-name', // your username for psql
DATABASE_PASSWORD: 'password', // your password for psql
},
},
],
};
用PM2启动,相当于守护进程
pm2 start ecosystem.config.js
解决strapi部署之后,加载admin panel过慢点问题
版本 v3.x
追加中间件: /config/middleware.js
module.exports = {
settings: {
gzip: {
enabled: true,
options: {
br: false
}
}
},
};
API 文档安装
npm run strapi install documentation
./extensions/documentation/config/settings.json手动创建文件以自定义 swagger ui 设置
{
"openapi": "3.0.0",
"info": {
"version": "1.0.0",
"title": "DOCUMENTATION",
"description": "",
"termsOfService": "YOUR_TERMS_OF_SERVICE_URL",
"contact": {
"name": "TEAM",
"email": "contact-email@something.io",
"url": "mywebsite.io"
},
"license": {
"name": "Apache 2.0",
"url": "https://www.apache.org/licenses/LICENSE-2.0.html"
}
},
"x-strapi-config": {
"path": "https://fileem.com/documentation",
"showGeneratedFiles": true,
"pluginsForWhichToGenerateDoc": [
"email",
"upload",
"users-permissions"
]
},
"servers": [
{
"url": "http://localhost:1337",
"description": "Development server"
},
{
"url": "YOUR_STAGING_SERVER",
"description": "Staging server"
},
{
"url": "YOUR_PRODUCTION_SERVER",
"description": "Production server"
}
],
"externalDocs": {
"description": "Find out more",
"url": "https://strapi.io/documentation/"
},
"security": [
{
"bearerAuth": []
}
],
"paths": {},
"tags": [],
"components": {}
}
更改 settings.json 文件中的字段时,需要手动重新启动服务器。npm run build
更改面板端口和默认面板目录
修改config/server.js:
port,并新增url: ‘/console’,可以自定义
module.exports = ({ env }) => ({
host: env('HOST', '0.0.0.0'),
port: env.int('PORT', 5000),
admin: {
url: 'https://fileem.com/console',
auth: {
secret: env('ADMIN_JWT_SECRET', '******f'),
},
},
});
创建 CRON 任务
https://strapi.io/documentation/developer-docs/latest/guides/scheduled-publication.html#create-a-cron-task
自定义数据响应
https://strapi.io/documentation/developer-docs/latest/guides/custom-data-response.html#custom-data-response
例如根据发布时间条件来确定是否要在结果中返回video
const { sanitizeEntity } = require('strapi-utils');
module.exports = {
async find(ctx) {
let entities;
if (ctx.query._q) {
entities = await strapi.services.lessons.search(ctx.query);
} else {
entities = await strapi.services.lessons.find(ctx.query);
}
return entities.map(entity => {
const lessons = sanitizeEntity(entity, {
model: strapi.models.lessons,
});
if (new Date(lessons.publish_at) > new Date()) {
delete lessons.video;
}
return lessons;
});
},
};
设置JWT的过期时间
https://strapi.io/documentation/developer-docs/latest/development/plugins/users-permissions.html#jwt-configuration
expiresIn: 以秒或描述时间跨度 zeit/ms 的字符串表示。
例如:60、“45m”、“10h”、“2 天”、“7d”、“2y”。数值为秒计数。如果使用字符串,确保提供时间单位(分钟、小时、天、年等),否则默认使用毫秒单位(“120”等于“120ms”)。
路径 – extensions/users-permissions/config/security.json
{
"jwt": {
"expiresIn": "1d"
}
}
设置邮件
Strapi 的第三方 SMTP 电子邮件提供商。
安装
在项目的根目录中,运行:
npm install @strapi/provider-email-nodemailer --save
配置
注意 @strapi/provider-email-nodemailer 的示例存在问题,以下测试通过
在您的config/plugins.js中,设置以下内容:
module.exports = ({ env }) => ({
// ...
email: {
config: {
provider: 'nodemailer',
providerOptions: {
host: "smtp.exmail.qq.com",
port: 465,
secure: true,
auth: {
user: 'hello@zaojianshi.com',
pass: 'XXXXXXX'
},
// ... any custom nodemailer options
},
settings: {
defaultFrom: 'hello@zaojianshi.com',
defaultReplyTo: 'hello@zaojianshi.com',
},
},
},
// ...
});
strapi的中文配置
首先你需要确保你的strapi版本是 V4版本
通过右侧菜单选中setting -> Internationalization -> add new locale 添加中文选项数据
(注意新建的国际化语言版本的ID下面要用)
在项目目录,src/admin/文件夹下新建一个app.js文件,在app.js的文件中添加如下代码
export default {
config: {
locales: ['zh-Hans'],
translations: {
'zh-Hans': {
'Auth.form.email.label': 'guanliyuan@qq.com',
Users: 'guanliyuan@qq.com',
City: 'Chinese (Simplified) (zh-Hans)',
// 这里是刚刚在设置中新建的国际化语言版本的ID
Id: '2',
},
},
},
bootstrap() {},
}
配置完以上信息后,就可以在个人信息里看到中文了,如果没有变化,可能是上面解决加载admin panel过慢问题时避免了这些重载,可以删除.cache、build目录,重启一下服务,若重启报错,确认一下是不是app.js里面引用了没有的东西。