本人个人博客地址:Egg-blog
一、原帖部署文档地址
gitee:gitee原帖Wiki文档 github:github原帖Wiki文档
二、原帖文档补充
部署minio
因为目前minio的最新版转为闭源了,Web控制台的功能一再削减,所以原文档里面的内容需要更新
方案一:安装minio2022-01
再合适位置创建指定目录
language
mkdir -p /opt/minio/data
mkdir -p /opt/minio/config
创建容器
language
docker run --name minio \
-p 9000:9000 \
-p 9001:9001 \
-d \
--restart=always \
-e "MINIO_ROOT_USER=admin" \
-e "MINIO_ROOT_PASSWORD=admin123" \
-v /opt/minio/data:/data \
-v /opt/minio/config:/root/.minio \
minio/minio:RELEASE.2022-01-04T07-41-07Z server /data \
--console-address ":9001" \
--address ":9000"
docker-compose.yml
language
services:
minio:
image: minio/minio:RELEASE.2022-01-04T07-41-07Z # 指定镜像和标签
container_name: minio # 容器名称
restart: always # 容器总是重启[minio具体介绍](https://blog.csdn.net/weixin_46739493/article/details/150576442)
ports:
- "9000:9000" # 映射端口 9000
- "9001:9001" # 映射端口 9001 (Console)
environment:
TZ: Asia/Shanghai
MINIO_ROOT_USER: admin # 设置环境变量
MINIO_ROOT_PASSWORD: ChenYe153697045& # 设置环境变量
volumes:
- /root/sodamp/minio/data:/data # 挂载数据目录
- /root/sodamp/minio/config:/root/.minio # 挂载配置目录
command: server /data --console-address ":9001" --address ":9000" # 启动命令及参数
方案二:使用minio-client命令行的方式设置桶的访问策略
虽然开源社区版的Web界面受限,但是minio-client命令行还是可以进行桶的设置。 minio-client具体介绍:minio-client详细教程 安装完成以后,设置好minio实例别名,连接到示例后,运行下面的设置访问策略
language
mc anonymous set download myminio/blog
#把 myminio 换成你自己配置的 alias 就行
| 原帖的S3策略条目 | mc download 策略包含的动作 |
|---|---|
| s3:GetBucketLocation | ✅ 包含 |
| s3:ListBucket + Condition: prefix=* | ✅ 包含(前缀条件一样) |
| s3:GetObject on blog/** | ✅ 包含(桶内所有对象) |
完全等价,不用手写JSON 了。
顺便说一句:mc anonymous set 一共就四档。
- none --- 禁止匿名访问(默认)
- download --- 匿名可读可列
- upload --- 匿名可上传
- public --- 匿名可读可写
部署一言接口
官方文档:部署实例 这里我使用docker部署,需要先部署redis
language
docker run -d
--name hitokoto-api
--restart unless-stopped -p 9090:8000 #可以将左边的9090修改为自己喜欢的端口号
-v "/var/lib/docker/volumes/hitokoto-data:/usr/src/app/data" # 请替换 /path/to/your/data/dir 为您想存储接口持久化数据的目录绝对位置
-e "REDIS.HOST=172.17.0.1"
-e "REDIS.PORT=6379"
-e "REDIS.PASSWORD=xxx" # 自己的redis密码
hitokoto/api:latest
部署音乐模块
开源地址:GlassMusicPlayer
环境要求
环境要求: Node.js >= 22,pnpm >= 10
快速开始
language
# 克隆项目
git clone https://github.com/XiangZi7/GlassMusicPlayer.git
cd GlassMusicPlayer
# 安装依赖
pnpm install
# 配置环境变量
cp .env.example .env
# 启动开发服务器
pnpm dev
配置环境变量
项目提供了 .env.example 模板文件,请根据需要复制并修改:
language
# 开发环境
cp .env.example .env.development
# 生产环境
cp .env.example .env.production
#.env.development 示例:
VITE_USER_NODE_ENV = development
VITE_PUBLIC_PATH = /
VITE_ROUTER_MODE = history
VITE_APP_BASE_API = 'http://localhost:3000'
#.env.production 示例:
VITE_USER_NODE_ENV = production
VITE_PUBLIC_PATH = /
# 静态托管(如 GitHub Pages)建议使用 hash 模式
VITE_ROUTER_MODE = hash
VITE_APP_BASE_API = 'https://your-api-domain.com'
- .env 为通用配置,.env.development / .env.production 为特定环境配置,优先级更高
- 所有 .env.*(除 .env.example)已被 .gitignore 忽略,不会提交到仓库
- 变量必须以 VITE_ 开头才能在客户端代码中使用
可用脚本
| 命令 | 说明 |
|---|---|
| pnpm dev | 启动开发服务器 |
| pnpm build | 构建生产环境产物 |
| pnpm build:test | 构建测试环境产物 |
| pnpm preview | 本地预览生产构建 |
| pnpm lint ESLint | 检查并自动修复 |
| pnpm format Prettier | 格式化代码 |
每个模块的Nginx配置
admin前台
language
# gzip config
gzip on;
gzip_min_length 1k;
gzip_comp_level 9;
gzip_types text/plain text/css text/javascript application/json application/javascript application/x-javascript application/xml;
gzip_vary on;
gzip_disable "MSIE [1-6]\.";
location / {
try_files $uri $uri/ /index.html;
}
# 后端接口(剥掉/api前缀转发)
location /api/ {
proxy_pass http://127.0.0.1:8088/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
博客前台
language
location / {
try_files $uri $uri/ /index.html =404;
}
# MinIO文件访问(必须走HTTPS反代,否则浏览器混合内容全拦)
# 注意:剥掉/minio-file/前缀转发到根,桶名blog已经在URL里,别再加
location ^~ /minio-file/ {
proxy_pass http://127.0.0.1:9000/;
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 X-Forwarded-Proto $scheme;
proxy_connect_timeout 60s;
proxy_send_timeout 60s;
proxy_read_timeout 60s;
proxy_buffering off;
}
# 第三方登录接口(后端OauthController自带/api前缀,这里不能剥)
location /api/oauth/ {
proxy_pass http://127.0.0.1:8088;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
# 邮件里的友链申请回调(后端LinkController在根路径/link)
location /link/ {
proxy_pass http://127.0.0.1:8088;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
# 其余后端接口(剥掉/api前缀转发)
location /api/ {
proxy_pass http://127.0.0.1:8088/;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
}
# 一言接口(自己部署的hitokoto,根路径)
location /yiyan {
proxy_pass http://127.0.0.1:9090/;
}
# 音乐接口
location /wapi/ {
proxy_pass http://127.0.0.1:3000/;
}
# 配置错误页面
error_page 404 /404.html;
location = /404.html {
internal;
}
音乐模块
language
location /api/ {
proxy_pass http://127.0.0.1:3000/;
}