An open API service indexing awesome lists of open source software.

https://github.com/linjonh/techblog

技术博客,软件研发相关的技术文章网站
https://github.com/linjonh/techblog

android blog hugo hugo-site jekyll static-site-generator website

Last synced: 2 months ago
JSON representation

技术博客,软件研发相关的技术文章网站

Awesome Lists containing this project

README

          

# Next-js Blog Project

# 导入makerdown文件到数据库记录

需要修改js里的 authentication API token 和数据库部署的URL地址

```bash
node create-categories-tags.js
node import-md-with-relations.js
```
# 博客框架:strapi + PostgreSQL + nextjs-blog
我目前情况:

✔ 有非常多文章(上万篇)
✔ 内容以 Markdown 为主
✔ 有技术背景(Node.js、CI/CD、Prisma、Next.js 都熟)
✔ 想要性能好、可扩展

最优解:Next.js + Strapi(Headless CMS) + Meilisearch

优势非常明显:

功能 实现方式
内容管理 Strapi(超级方便)
存储 PostgreSQL
前台展示 Next.js
搜索 Meilisearch(极速)
部署 Vercel/Cloudflare 或你自己的 VPS

性能:

上万篇文章毫无压力

不再有静态构建卡死

可扩展为门户网站级别

**一步一步搭建一个最适合上万篇文章的 Headless CMS 架构**。

## 🚀 推荐的组合

为了简单、稳定、扩展性强,我建议:

### **Strapi(后端 CMS) + PostgreSQL(数据库) + Next.js(前端)**

这是现在“上万篇文章网站”最常用、可扩展性最强的组合。

---

# ✅ 第一步:搭建 Strapi(内容后台)

Strapi 是基于 Node.js 的 Headless CMS,很容易用。

## 1. 安装 Node.js 18+

本地或服务器(建议 Linux)安装 Node.js(18 或以上)。

## 2. 新建 Strapi 项目

```bash
npx create-strapi-app blog-cms --quickstart
```

运行后打开:

```
http://localhost:1337/admin
```

即可进入后台。

---

# ✅ 第二步:创建“文章模型”

在 Strapi 后台里:

1. Content-Type Builder → Create new collection type
2. 名字:`article`
3. 添加字段:

* `title`(文本)
* `slug`(唯一文本)
* `content`(Rich Text 或 Markdown)
* `date`(日期)
* `tags`(多选)
* `category`(单选)

保存后 Strapi 会自动生成 API:

```
GET /api/articles
GET /api/articles/:id
```

你已经有一个可供前端使用的 API 了。

---

# ✅ 第三步:让 Strapi 支持 markdown 批量导入(上万篇文章)

你可能已有大量 markdown 文件。

你可以用命令行脚本批量导入,例如:

```bash
const fs = require('fs');
const axios = require('axios');

async function uploadMD() {
const files = fs.readdirSync('./posts');

for (const file of files) {
const md = fs.readFileSync(`./posts/${file}`, 'utf8');
const title = file.replace('.md', '');

await axios.post('http://localhost:1337/api/articles', {
data: {
title,
content: md,
}
});
}
}

uploadMD();
```

这可以把所有 markdown 文章导入 Strapi 的数据库。

> 你有多少篇文章都没关系,10 万篇都能存。

---

# ✅ 第四步:搭建 Next.js 前端

Next.js 负责展示文章页面。

## 新建 Next.js 项目

```bash
npx create-next-app blog-web
```

## 获取文章列表

在 Next.js 页面中 API 调用:

```js
const res = await fetch('http://localhost:1337/api/articles');
const data = await res.json();
```

## 获取单篇文章

```js
const res = await fetch(`http://localhost:1337/api/articles/${slug}`);
```

### Next.js 里用 ISR(Incremental Static Regeneration)

让页面自动更新而无需全站构建:

```js
export async function getStaticProps() {
const res = await fetch('http://localhost:1337/api/articles');
const data = await res.json();

return {
props: { articles: data },
revalidate: 60, // 每 60 秒自动更新一次
};
}
```

---

# ✅ 第五步:加入搜索(上万篇文章必须要有)

你可以用:

### ⭐ **Meilisearch(极速、开源、强烈推荐)**

安装:

```bash
curl -L https://install.meilisearch.com | sh
./meilisearch
```

```bash
docker run -it --rm \
-p 7700:7700 \
-e MEILI_MASTER_KEY="masterKey" \
getmeili/meilisearch:latest
```

同步 Strapi 内容:

* 安装 strapi-plugin-meilisearch
* 自动 push 数据到搜索索引

前端调用搜索 API 即可。

---

# ✅ 第六步:部署方案(最稳)

### Strapi(后端)部署到 VPS 或 Docker:

```bash
docker run -p 1337:1337 strapi/strapi
```

### Next.js(前端)部署到:

* Vercel(最简单)
* Cloudflare Pages(免费)
* Netlify

### 搜索(Meilisearch)部署到:

* VPS 上 Docker
* 或 Meilisearch Cloud

---

# ✅ 整体架构图(超简单版本)

```
你写文章(Markdown)

Strapi (CMS) —— PostgreSQL

Meilisearch (全文搜索)

Next.js 前端网站 (ISR/SSR)

用户访问
```

**无论几千篇、上万篇文章,都能秒级访问、稳定运行。**

---