《开源精选》是我们分享Github、Gitee等开源社区中优质项目的栏目,包括技术、学习、实用与各种有趣的内容。本期推荐的Strapi 是领先的开源无头 CMS,它是 100% JavaScript,完全可定制且开发人员优先。
Strapi 是一款免费的开源无头 CMS,可在您需要的任何地方提供您的内容。
控制您的数据。使用 Strapi,您可以知道您的数据存储在哪里,并始终保持完全控制。自托管。您可以按照自己的方式托管和扩展 Strapi 项目。您可以选择任何您想要的托管平台:AWS、Render、Netlify、Heroku、VPS 或专用服务器。您可以随着成长而扩展,100% 独立。数据库不可知论。Strapi 适用于 SQL 数据库。您可以选择您喜欢的数据库:PostgreSQL、MySQL、MariaDB 和 SQLite。可定制。您可以通过完全自定义 API、路由或插件来快速构建逻辑,以完美满足您的需求。Strapi特征
现代管理面板:优雅、完全可定制且完全可扩展的管理面板。默认安全:可重用策略、CORS、CSP、P3P、Xframe、XSS 等。面向插件:在几秒钟内安装身份验证系统、内容管理、自定义插件等。速度极快: Strapi 建立在 Node.js 之上,提供了惊人的性能。前端不可知论:使用任何前端框架(React、Vue、Angular 等)、移动应用程序甚至物联网。强大的 CLI:动态的脚手架项目和 API。SQL 数据库:适用于 PostgreSQL、MySQL、MariaDB 和 SQLite。安装Strapi
使用 Docker 安装
Docker 是一个开放平台,允许使用容器(即包含应用程序运行所需的所有部分的包,例如库和依赖项)来开发、发布和运行应用程序。
创建一个空文件夹。在您的空文件夹中,创建一个docker-compose.yaml文件。这是创建新 Strapi 项目的地方,它定义了要使用的数据库和 Strapi 服务。version: 3 services: strapi: image: strapi/strapi environment: DATABASE_CLIENT: mysql DATABASE_HOST: mysql DATABASE_PORT: 3306 DATABASE_NAME: strapi DATABASE_USERNAME: strapi DATABASE_PASSWORD: strapi DATABASE_SSL: false volumes: – ./app:/srv/app ports: – 1337:1337 depends_on: – mysql mysql: image: mysql command: mysqld –default-authentication-plugin=mysql_native_password volumes: – ./data:/var/lib/mysql environment: MYSQL_ROOT_PASSWORD: strapi MYSQL_DATABASE: strapi MYSQL_USER: strapi MYSQL_PASSWORD: strapi 使用以下命令拉取最新图像:docker-compose pull运行 Strapi
要运行使用 Docker 创建的 Strapi 项目,请使用以下命令之一:
# Execute Docker image detaching the terminal docker-compose up -d # Execute Docker image without detaching the terminal docker-compose upDigitalOcean 一键式安装
DigitalOcean 是一个云平台,通过为开发人员提供基础架构即服务 (IaaS) 平台来帮助部署和扩展应用程序。
创建一个 Strapi 项目
转到 DigitalOcean 市场上的 Strapi 页面。单击创建 Strapi Droplet按钮。保留选定的“共享 CPU – 基本”计划。选择“Regular Intel with SSD”作为 CPU 选项。选择您的虚拟机大小(至少 2 GB/1 CPU)。选择一个数据中心区域(离您或您的目标区域最近)。添加新的 SSH 密钥。您可以按照本指南 (打开新窗口).给你的虚拟机一个主机名。单击创建 Droplet。液滴启动可能需要 30 秒到几分钟,而完成 Strapi 安装可能需要几分钟。运行 Strapi
您在 DigitalOcean 上的 Strapi 应用程序将以开发模式运行。不建议在生产中直接使用该应用程序。
要访问您的 Strapi 应用程序:
转到DigitalOcean 上的水滴列表 (打开新窗口), 登录。单击用于您的 Strapi 应用程序的液滴名称。复制 Droplet 的公共 ipv4 地址。使用此地址访问 Strapi 应用程序。首次访问 Strapi 应用程序页面将需要创建第一个管理员用户。
项目结构
在没有启动 CLI 的情况下创建的 Strapi 项目的默认结构如下所示:
. # root of the application ├──── .cache # files used to build the admin panel ├──── .tmp ├──── build # build of the admin panel ├──── config # API configurations │ ├ api.js │ ├ admin.js │ ├ cron-tasks.js │ ├ database.js │ ├ middlewares.js │ ├ plugins.js │ └ server.js ├──── database │ └──── migrations ├──── node_modules # npm packages used by the project ├──── public # files accessible to the outside world │ └──── uploads ├──── src │ ├──── admin # admin customization files │ ├──── extensions # files to extend the admin panel │ │ ├ app.js │ │ └ webpack.config.js │ ├──── api # business logic of the project split into subfolders per API │ │ └──── (api-name) │ │ ├──── content-types │ │ │ └──── (content–type–name) │ │ │ └ lifecycles.js │ │ │ └ schema.json │ │ ├──── controllers │ │ ├──── middlewares │ │ ├──── policies │ │ ├──── routes │ │ ├──── services │ │ └ index.js │ ├──── components │ │ └──── (category–name) │ │ ├ (componentA).json │ │ └ (componentB).json │ ├──── extensions # files to extend installed plugins │ │ └──── (plugin–to-be-extended) │ │ ├──── content-types │ │ │ └──── (content–type–name) │ │ │ └ schema.json │ │ └ strapi-server.js │ ├──── middlewares │ │ └──── (middleware-name) │ │ ├ defaults.json │ │ └ index.js │ ├──── plugins # local plugins files │ │ └──── (plugin–name) │ │ ├──── admin │ │ │ └──── src │ │ │ └ index.js │ │ ├──── server │ │ │ ├──── content-types │ │ │ ├──── controllers │ │ │ └──── policies │ │ ├ package.json │ │ ├ strapi-admin.js │ │ └ strapi-server.js │ ├─── policies │ └ index.js # include register(), bootstrap() and destroy() functions ├ .env └ package.json配置
应用程序配置位于./config文件夹中(请参阅项目结构)。所有配置文件都在启动时加载,可以通过配置提供程序访问。
如果./config/server.js文件具有以下配置:
module.exports = { host: 0.0.0.0, };server.host可以通过以下方式访问密钥:
strapi.config.get(server.host, defaultValueIfUndefined);部署
一般准则
先决条件 为了为 Strapi 提供最佳环境,有一些要求,这些要求适用于开发(本地)以及暂存和生产工作流程。 Node LTS(v12 或 V14)请注意,永远不会支持奇数版本的 Node(例如 v13、v15)。 NPM v6 或 LTS 节点版本附带的任何内容 适用于您的操作系统的典型标准构建工具(build-essentials大多数基于 Debian 的系统上的软件包) 至少 1 个 CPU 内核(强烈推荐至少 2 个) 至少 2 GB 的 RAM(中等推荐 4) 您的操作系统建议的最低要求存储空间或 32 GB可用空间 支持的数据库版本 MySQL >= 5.7.8 MariaDB >= 10.2.7 PostgreSQL >= 10 SQLite >= 3 受支持的操作系统 Ubuntu >= 18.04(仅限 LTS) Debian >= 9.x CentOS/RHEL >= 8 macOS Mojave 或更新版本(不支持 ARM)Strapi 插件
自动插件发现
Strapi 会自动加载使用 npm 安装的插件。在后台,Strapi 扫描package.json项目依赖项的每个文件,并查找以下声明:
“strapi”: { “kind”: “plugin” }—END—
开源协议:MIT License
开源地址:
https://github.com/strapi/strapi