wikimoeNodeJSBlog icon indicating copy to clipboard operation
wikimoeNodeJSBlog copied to clipboard

猛男自用博客系统,基于nodejs,mongodb

猛男自用的【维基萌博客系统】

N`AG~U3E547WKDN{J P2H22

当前已知问题

  1. 在 Windows 环境中运行开发版 blog 会出现图片加载失败的现象,这是因为 Nuxt.js 所使用的 Nitro 在开发模式中反代有并发问题导致的,build 之后在 Linux 下运行是不会出现这个问题的(Windows 服务器未验证)。
  2. 如果不做任何设置的话,资源文件默认是通过 nuxt3 反代到 express 获取资源文件的,但是 nuxt3 不知道对流媒体的请求做了什么处理,导致苹果设备的 safari 无法查看视频,解决办法是不要通过 nuxt3 去反代资源文件,而是通过比如 nginx 去反代资源文件。

说明

【维基萌博客系统】推荐 Node.js 20 版本和 mongodb 6 版本。
其他版本也许可以跑,但是没测试过。

【维基萌博客系统】的架构如下图所示:

image

项目目录分为三个部分
server:博客 api 部分
admin:博客管理后台部分
blog:博客部分
其中 admin 部分仅编译成 html 给 server 提供管理端的页面

三个部分需要按照顺序编译/启动

1.博客 管理后台前端

进入文件夹

cd admin

安装依赖

yarn install

编译

yarn build

编译后会在 server/front 下生成 admin 文件夹,如果服务器配置并不支持编译的话可以在本机安装 nodejs 20 的环境后,在本机编译并上传到服务器

2.博客 API 部分

进入文件夹

cd server

安装依赖

yarn install

配置.env 文件

可以将目录下的 sample.env 复制并更名为.env
配置内容如下:

PORT="填写运行端口号"
DB_HOST="填写mongodb地址"
JSON_LIMT="JSON格式的大小限制如(50mb)"
URLENCODED_LIMT="URL编码的大小限制如(50mb)"
JWT_SECRET="JWT所用的密文"
IP2LOCATION="1为开启IP地址解析"
IP2LOCATION_FILE_NAME="地址解析用到的BIN文件,一般为IP2LOCATION-LITE-DB1.BIN"
MAX_HISTORYLOGS_SIZE="日志集合的最大占用空间,单位字节默认1073741824(1GB)"

运行

yarn start

创建管理员(如果需要)

yarn run create

注意:账号仅支持小写字母和数字,密码必须包含大小写与符号(!@#$%^&*)

3.博客 页面 部分

进入文件夹

cd blog

安装依赖

yarn install

配置.env 文件

可以将目录下的 sample.env 复制并更名为.env
文件内容如下:

NUXT_API_API_DOMAIN="填写API的HTTP地址,如:http://localhost:3006"
GOOGLE_ADSENSE_ID="如果需要设置谷歌广告,填写谷歌广告ID"
GOOGLE_ADSENSE_TEST_MODE="是否启用测试模式 1 为启用,0 为不启用"
GOOGLE_ADSENSE_POST_DETAIL_BT="文章底部广告,填写格式为:ad-slot,ad-format,ad-layout-key"
SWR_ENABLED="设置为1时打开SWR缓存,将会消耗大量内存提升访问速度"
SWR_CACHE_MAXAGE="SWR缓存时间,单位秒,默认10秒"
SWR_CACHE_STALEMAXAGE="staleMaxAge的时间,单位秒,默认3600秒"
CACHE_MAX_PAGE="开启SWR时的缓存页面数量,默认10个页面"
CACHE_TTL="缓存的过期时间,单位毫秒,默认60000毫秒"

配置谷歌广告 ads.txt (如果需要)

在/blog/public/目录下放置 ads.txt 即可

编译

yarn build

编译后会在 blog/build 生成编译.output 的文件夹,如果服务器配置并不支持编译的话可以在本机安装 nodejs 20 的环境后,在本机编译并上传到服务器

进入编译文件夹

cd build

运行

linux

yarn start-linux

windows

yarn start-windows

※在 blog/build/package.json 中可以修改运行端口