Eggblog博客部署文档

本人个人博客地址: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/;
    }
相关推荐
En^_^Joy1 小时前
Django项目配置全攻略:settings配置文件
后端·python·django
IT_陈寒3 小时前
Python线程池吞了异常还不告诉我,这谁顶得住啊
前端·人工智能·后端
小强库计算机毕业设计4 小时前
SpringBoot+Vue3 学生宿舍管理系统实战
java·spring boot·后端·vue·学生宿舍管理系统
小狼1834 小时前
实践6|SDD 实战:AI 写的规格被推翻了四次
后端·claude
篮框坏了4 小时前
"DeepSeek Harness 实测:一毛钱干三活,但默认配置是个坑"
后端·ai编程
jobBridge214 小时前
大模型到底是怎么"想"的?我把 Transformer 拆开,发现它其实是个"接词狂魔"
人工智能·后端·编程语言
唐青枫5 小时前
看懂内存地址之后,才算真正入门 Zig:指针、切片与实战
后端
朋克洛德的码农5 小时前
Go并发-sync包四剑客:Mutex、RWMutex、WaitGroup、Once-从入门到原理
开发语言·后端·golang
fulton5 小时前
为什么不用现成的开源工具?NovelOps与6大AI写作工具横向对比
后端
fulton5 小时前
3个月踩坑实录:从想法到270章规划,AI写长篇到底要花多少成本?
后端