- 在 Windows 环境中运行开发版 blog 会出现图片视频加载失败的现象,这是因为 Nuxt.js 所使用的 Nitro 在开发模式中反代有并发问题导致的,build 之后在 Linux 下运行是不会出现这个问题的。
- 如果不做任何设置的话,资源文件默认是通过 nuxt3 反代到 express 获取资源文件的,此时如果用 nginx 再去反代资源文件的话会出现 safari 无法查看视频的问题,如果用 nginx 代理博客的话,请将以下路径反代到博客 API 的地址。
- /content
- /upload
以下是一个例子,假如 API 是 3000 端口:
location /content {
proxy_pass http://localhost:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header REMOTE-HOST $remote_addr;
add_header X-Cache $upstream_cache_status;
}
location /upload {
proxy_pass http://localhost:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header REMOTE-HOST $remote_addr;
add_header X-Cache $upstream_cache_status;
}
- 关于 emoji 一些设备显示不全的问题。可以在管理后台的【设置】->【页面底部信息】中添加:
<style>
@import
url('https://fonts.loli.net/css2?family=Noto+Color+Emoji&display=swap');
</style>
【维基萌博客系统】推荐 Node.js 20 版本和 mongodb 6 版本。
其他版本也许可以跑,但是没测试过。
【维基萌博客系统】的架构如下图所示:
项目目录分为三个部分
server:博客 api 部分
admin:博客管理后台部分
blog:博客部分
其中 admin 部分仅编译成 html 给 server 提供管理端的页面
三个部分需要按照顺序编译/启动
也可以直接在根目录运行 yarn run start --build,一键编译和运行程序。
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
从 repo 下载 docker-compose-dev.yml 以及 .env 文件
cd && mkdir wikimoe && cd wikimoe
wget -O compose.yml https://github.com/raw/eeg1412/wikimoeNodeJSBlog/main/docker-compose-dev.yml
wget -O .env https://github.com/raw/eeg1412/wikimoeNodeJSBlog/main/example.env
然后使用 docker compose up -d
即可在本地快速体验,注意:docker-compose-dev.yml 预设的内容仅为快速体验,不建议在生产环境使用
Clone 仓库,并修改 .env 文件的内容
cd && mkdir wikimoe && git clone https://github.com/eeg1412/wikimoeNodeJSBlog --depth=1
cd wikimoeNodeJSBlog && mv example.env .env
按照 API 配置部分 、Blog 配置部分 修改 .env
文件中的 USER_NAME 环境变量(此环境变量为站长初始用户名),以及其他相关环境变量。注意:port 相关请修改 compose.yml 文件来修改端口映射
然后使用 docker compose up -d
拉起容器,你所修改的环境变量会传递给容器
Server 容器会自动检查 USER_NAME 环境变量,并为你创建站长用户(会生成 install.lock 防止重复初始化,请不要删除该文件),注意:此用户的初始密码为 7@wVUo6BL6LHjNR*#x
,请初始化后及时修改。
反向代理可根据自己需求修改
(后端)Server:http://localhost:3000
(前端)Blog:http://localhost:3007
(后台)admin:http://localhost:3000/admin
可以参考如果使用宝塔/aaPanel 搭建猛男自用的维基萌博客
可以先参考下面的配置文件配置,然后直接在根目录运行
yarn run start --build
即可一键编译运行。
其中--build 参数为是否需要编译。
cd admin
yarn install
yarn build
编译后会在 server/front 下生成 admin 文件夹,如果服务器配置并不支持编译的话可以在本机安装 nodejs 20 的环境后,在本机编译并上传到服务器
cd server
yarn install
可以将目录下的 sample.env 复制并更名为.env
配置内容如下:
PORT="填写运行端口号"
DB_HOST="填写mongodb地址"
JSON_LIMIT="JSON格式的大小限制如(50mb)"
URLENCODED_LIMIT="URL编码的大小限制如(50mb)"
JWT_SECRET="JWT所用的密文"
IP2LOCATION="1为开启IP地址解析"
IP2LOCATION_FILE_NAME="地址解析用到的BIN文件,一般为IP2LOCATION-LITE-DB3.BIN,切记一定要下载【DB3.LITE】的BIN文件"
MAX_HISTORYLOGS_SIZE="日志集合的最大占用空间,单位字节默认1073741824(1GB)"
关于 IP2LOCATION 文件
- 请自行在IP2Location Lite网站注册下载 BIN 文件。
- 注意一定要选择【DB3.LITE】 IP-COUNTRY-REGION-CITY 的 BIN 文件,如果网站有 IPv6 需求的话可以下载 IPv6 的 BIN 文件,IPv6 的 BIN 文件已经包含 IPv4。
- 下载的 BIN 文件请放在 server/utils/ip2location 目录下
yarn start
yarn run create-user
也可以通过参数的形式直接创建管理员
yarn run create-user 账号 密码 昵称
1.用户名仅支持半角小写英文和数字
2.密码必须 4 位以上且包含大小写、数字和符号(!@#$%^&*)
cd blog
yarn install
可以将目录下的 sample.env 复制并更名为.env
文件内容如下:
NUXT_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毫秒"
SHOW_LOADING="是否显示进入网站时的读取动画,需要时为1"
在/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 中可以修改运行端口
这些命令提供了一种简单的方式来管理用户。
使用 create-user
命令来创建一个新的用户:
yarn run create-user 账号 密码 昵称
1.用户名仅支持半角小写英文和数字
2.密码必须 4 位以上且包含大小写、数字和符号(!@#$%^&*)
使用 change-user-password
命令来修改一个用户的密码:
yarn run change-user-password 账号 密码
1.密码必须 4 位以上且包含大小写、数字和符号(!@#$%^&*)
使用 get-user-list
命令来获取所有用户的列表:
yarn run get-user-list
yarn run set-user-ban 1
1.参数传 1 禁用,传 0 解禁
请注意,这些命令需要在项目的 server 目录下运行,并且需要先安装所有的依赖。你可以使用 yarn install
命令来安装依赖。