开发

如何部署一个Strapi服务器

Headless CMS的优势就在于能自由定制数据结构,完全按照你的需求来设置

2023年3月14日
如何部署一个Strapi服务器
本文共有1007字,预计阅读时间5分钟
我的两版博客后台都是选择了 Strapi,因为它真的很适合想要开发高度定制博客的开发者。

Headless CMS

Strapi 是一个开源无界面 CMS。所谓无界面——即 Headless ——是指这种 CMS 只提供结构化的数据和接口,而不提供界面。在拿到数据后你需要用任何框架或方法将数据渲染成界面。
关于无界面 CMS,可参阅该篇译文:一分钟搞清楚什么是无界面 CMS
这种无界面 CMS 就很适合那些需要高度定制博客的开发者。拿本站来说,有三个主要数据类型:文章、摄影和视频。
每一个类型都有一些自己独有的字段。添加什么字段、互相之间是什么关系,完全取决于你的产品需求。
本文我将分享一下如何在服务器上搭建并运行起一个 Strapi 实例。

准备

开始之前你需要准备下面这些:
  1. 一台 VPS 或任何轻量应用服务器;
  2. 一个域名。
VPS 将以 Ubuntu 22 为例。
Strapi 运行需要 Node.js 和一个数据库。因此你需要先安装好 Node、NPM。

数据库准备

MySQL、MariaDB、PostgreSQL 和 SQLite 都可以,我选择的是 PostgreSQL。
首先安装 PostgreSQL:
1sudo apt-get update
2sudo apt-get install postgresql postgresql-contrib
登录到数据库后台:
1sudo -u postgres psql
创建一个数据库,名字我取的是 strapi:
1CREATE DATABASE strapi;
创建一个用户。记得将usernamepassword替换为你自己的:
1CREATE USER $username WITH PASSWORD '$password';
将数据库所有权转移给刚才创建的用户:
1ALTER DATABASE strapi OWNER TO $username;
并为该用户授权:
1GRANT ALL PRIVILEGES ON DATABASE strapi TO $username;
数据库准备好了,接下来准备 Strapi。

Strapi安装

如果你之前已经在本地创建过 Strapi 并上传到 Git,此时可以把那个项目clone下来。如果没有,使用 CLI 进行安装:
1npx create-strapi-app@latest my-project
这时会有一些安装选项,根据你的需要选择即可。
完成后进入该目录,安装pg
1npm install pg
修改./config/database.js文件:
1module.exports = ({ env }) => ({
2  connection: {
3    client: "postgres",
4    connection: {
5      host: env("DATABASE_HOST", "127.0.0.1"),
6      port: env.int("DATABASE_PORT", 5432),
7      database: env("DATABASE_NAME", "strapi"),
8      user: env("DATABASE_USERNAME", ""),
9      password: env("DATABASE_PASSWORD", ""),
10    },
11    useNullAsDefault: true,
12  },
13});
之后回到安装目录,创建一个环境变量文件:
1nano .env
将上面用到的DATABASE_NAMEDATABASE_USERNAME等变量加入该文件。具体格式可自行搜索。
全部妥当,这时候在安装目录执行npm run dev应该就能成功跑起 Strapi 了。

其他配置

为了今后更方便使用,可以配置好 Nginx 和 PM2。
Strapi 默认运行在1337端口,在 Nginx 里配置到该端口的转发,将来就可以通过域名直接访问了。如何配置 Nginx 以及 HTTPS 请自行搜索。
PM2 是一个 Node 程序管理器,可以在这里更方便管理 Node。
首先安装 PM2:
1npm install pm2@latest -g
回到主目录,创建配置文件:
1cd ~
2
3pm2 init
4
5sudo nano ecosystem.config.js
将环境变量添加到该配置文件:
1module.exports = {
2  apps: [
3    {
4      name: 'your-app-name',
5      cwd: '/home/ubuntu/my-project',
6      script: 'npm',
7      args: 'start',
8      env: {
9        APP_KEYS: 'your app keys', // you can find it in your project .env file.
10        API_TOKEN_SALT: 'your api token salt',
11        ADMIN_JWT_SECRET: 'your admin jwt secret',
12        JWT_SECRET: 'your jwt secret',
13        NODE_ENV: 'production',
14        DATABASE_HOST: 'your-unique-url.rds.amazonaws.com',
15        DATABASE_PORT: '5432',
16        DATABASE_NAME: 'strapi', // DB name under 'Configuration' tab
17        DATABASE_USERNAME: 'postgres',
18        DATABASE_PASSWORD: 'Password',
19      },
20    },
21  ],
22};
接下来就可以通过这个命令启动 Strapi 了:
1pm2 start ecosystem.config.js
另外建议让 PM2 开机启动:
1pm2 startup systemd
复制粘贴出现的命令,执行,接着:
1pm2 save
就齐活了。

Strapi的使用

Strapi 的使用分为两种情况:开发环境和正式环境。
创建和编辑数据类型,只能在开发环境下进行。通过npm run develop启动开发环境后,登录 Strapi 即可设置数据类型。
设置完成后,执行构建和启动命令:
1npm run build
2
3npm run start
这时候 Strapi 就可以长期稳定运行作为数据源了。

评论