开发

如何部署一个Strapi服务器

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

选择Strapi作为两版博客后台的开发者可以享受高度定制的体验。作为一款Headless CMS,Strapi提供结构化数据和接口,不提供界面,适合开发者根据产品需求自定义字段和关系。文章分享了在服务器上搭建和运行Strapi实例的步骤,包括准备、数据库配置、Strapi安装、其他配置和Strapi的使用。通过配置Nginx和PM2,可更方便地管理和访问Strapi。

  1. #Strapi
  2. #Headless CMS
  3. #Node.js
  4. #数据库
  5. #PostgreSQL
  6. #Nginx
  7. #PM2

2153

strapi logostrapi logo

我的两版博客后台都是选择了 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:

shell

sudo apt-get update sudo apt-get install postgresql postgresql-contrib

登录到数据库后台:

shell

sudo -u postgres psql

创建一个数据库,名字我取的是 strapi:

shell

CREATE DATABASE strapi;

创建一个用户。记得将usernamepassword替换为你自己的:

shell

CREATE USER $username WITH PASSWORD '$password';

将数据库所有权转移给刚才创建的用户:

shell

ALTER DATABASE strapi OWNER TO $username;

并为该用户授权:

shell

GRANT ALL PRIVILEGES ON DATABASE strapi TO $username;

数据库准备好了,接下来准备 Strapi。

Strapi安装

如果你之前已经在本地创建过 Strapi 并上传到 Git,此时可以把那个项目clone下来。如果没有,使用 CLI 进行安装:

shell

npx create-strapi-app@latest my-project

这时会有一些安装选项,根据你的需要选择即可。

完成后进入该目录,安装pg

shell

npm install pg

修改./config/database.js文件:

javascript

module.exports = ({ env }) => ({ connection: { client: "postgres", connection: { host: env("DATABASE_HOST", "127.0.0.1"), port: env.int("DATABASE_PORT", 5432), database: env("DATABASE_NAME", "strapi"), user: env("DATABASE_USERNAME", ""), password: env("DATABASE_PASSWORD", ""), }, useNullAsDefault: true, }, });

之后回到安装目录,创建一个环境变量文件:

shell

nano .env

将上面用到的DATABASE_NAMEDATABASE_USERNAME等变量加入该文件。具体格式可自行搜索。

全部妥当,这时候在安装目录执行npm run dev应该就能成功跑起 Strapi 了。

其他配置

为了今后更方便地使用,可以配置好 Nginx 和 PM2。

Strapi 默认运行在1337端口,在 Nginx 里配置到该端口的转发,将来就可以通过域名直接访问了。如何配置 Nginx 以及 HTTPS 请自行搜索。

PM2 是一个 Node 程序管理器,可以在这里更方便地管理 Node。

首先安装 PM2:

shell

npm install pm2@latest -g

回到主目录,创建配置文件:

shell

cd ~ pm2 init sudo nano ecosystem.config.js

将环境变量添加到该配置文件:

javascript

module.exports = { apps: [ { name: 'your-app-name', cwd: '/home/ubuntu/my-project', script: 'npm', args: 'start', env: { APP_KEYS: 'your app keys', // you can find it in your project .env file. API_TOKEN_SALT: 'your api token salt', ADMIN_JWT_SECRET: 'your admin jwt secret', JWT_SECRET: 'your jwt secret', NODE_ENV: 'production', DATABASE_HOST: 'your-unique-url.rds.amazonaws.com', DATABASE_PORT: '5432', DATABASE_NAME: 'strapi', // DB name under 'Configuration' tab DATABASE_USERNAME: 'postgres', DATABASE_PASSWORD: 'Password', }, }, ], };

接下来就可以通过这个命令启动 Strapi 了:

shell

pm2 start ecosystem.config.js

另外建议让 PM2 开机启动:

shell

pm2 startup systemd

复制粘贴出现的命令,执行,接着:

shell

pm2 save

就齐活了。

Strapi的使用

Strapi 的使用分为两种情况:开发环境和正式环境。

创建和编辑数据类型,只能在开发环境下进行。通过npm run develop启动开发环境后,登录 Strapi 即可设置数据类型。

设置完成后,执行构建和启动命令:

shell

npm run build npm run start

这时候 Strapi 就可以长期稳定运行作为数据源了。