如何搭建一个Strapi服务器
我的两版博客后台都是选择了 Strapi,因为它真的很适合想要开发高度定制博客的开发者。
Headless CMS
Strapi 是一个开源无界面 CMS。所谓无界面——即 Headless ——是指这种 CMS 只提供结构化的数据和接口,而不提供界面。在拿到数据后你需要用任何框架或方法将数据渲染成界面。
关于无界面 CMS,可参阅该篇译文:一分钟搞清楚什么是无界面 CMS。
这种无界面 CMS 就很适合那些需要高度定制博客的开发者。拿本站来说,有三个主要数据类型:文章、摄影和视频。
每一个类型都有一些自己独有的字段。添加什么字段、互相之间是什么关系,完全取决于你的产品需求。
本文我将分享一下如何在服务器上搭建并运行起一个 Strapi 实例。
准备
开始之前你需要准备下面这些:
- 一台 VPS 或任何轻量应用服务器;
- 一个域名。
VPS 将以 Ubuntu 22 为例。
Strapi 运行需要 Node.js 和一个数据库。因此你需要先安装好 Node、NPM。
数据库准备
MySQL、MariaDB、PostgreSQL 和 SQLite 都可以,我选择的是 PostgreSQL。
首先安装 PostgreSQL:
sudo apt-get update
sudo apt-get install postgresql postgresql-contrib
登录到数据库后台:
sudo -u postgres psql
创建一个数据库,名字我取的是 strapi:
CREATE DATABASE strapi;
创建一个用户。记得将username
和password
替换为你自己的:
CREATE USER $username WITH PASSWORD '$password';
将数据库所有权转移给刚才创建的用户:
ALTER DATABASE strapi OWNER TO $username;
并为该用户授权:
GRANT ALL PRIVILEGES ON DATABASE strapi TO $username;
数据库准备好了,接下来准备 Strapi。
Strapi安装
如果你之前已经在本地创建过 Strapi 并上传到 Git,此时可以把那个项目clone
下来。如果没有,使用 CLI 进行安装:
npx create-strapi-app@latest my-project
这时会有一些安装选项,根据你的需要选择即可。
完成后进入该目录,安装pg
:
npm install pg
修改./config/database.js文件:
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,
},
});
之后回到安装目录,创建一个环境变量文件:
nano .env
将上面用到的DATABASE_NAME
、DATABASE_USERNAME
等变量加入该文件。具体格式可自行搜索。
全部妥当,这时候在安装目录执行npm run dev
应该就能成功跑起 Strapi 了。
其他配置
为了今后更方便地使用,可以配置好 Nginx 和 PM2。
Strapi 默认运行在1337
端口,在 Nginx 里配置到该端口的转发,将来就可以通过域名直接访问了。如何配置 Nginx 以及 HTTPS 请自行搜索。
PM2 是一个 Node 程序管理器,可以在这里更方便地管理 Node。
首先安装 PM2:
npm install pm2@latest -g
回到主目录,创建配置文件:
cd ~
pm2 init
sudo nano ecosystem.config.js
将环境变量添加到该配置文件:
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 了:
pm2 start ecosystem.config.js
另外建议让 PM2 开机启动:
pm2 startup systemd
复制粘贴出现的命令,执行,接着:
pm2 save
就齐活了。
Strapi的使用
Strapi 的使用分为两种情况:开发环境和正式环境。
创建和编辑数据类型,只能在开发环境下进行。通过npm run develop
启动开发环境后,登录 Strapi 即可设置数据类型。
设置完成后,执行构建和启动命令:
npm run build
npm run start
这时候 Strapi 就可以长期稳定运行作为数据源了。