酷秀  - kxiu.cn

分享一款高仿小红书的图文、社交互动项目

admin的头像admin4个月前种草146热度

火狐截图_2025-09-20T12-09-25.982Z.png

项目简介

小石榴图文社区是一个基于 Express + Vue3 的现代化图文社区平台,支持用户注册、发布图文内容、互动交流等功能。

开源地址:https://gitee.com/ZTMYO/XiaoShiLiu

系统要求

Docker 部署:Docker 20.10+ 和 Docker Compose 2.0+ 传统部署:Node.js 18+、MySQL 8.0+、npm 或 yarn

Docker 一键部署(推荐)

1. 克隆项目

git clone https://github.com/ZTMYO/XiaoShiLiu
cd XiaoShiLiu

2. 配置环境变量

复制环境配置文件:

cp .env.docker .env

编辑 .env 文件,根据需要修改配置:

# 数据库配置
DB_HOST=mysql
DB_USER=xiaoshiliu_user
DB_PASSWORD=123456
DB_NAME=xiaoshiliu
DB_PORT=3306

# JWT配置
JWT_SECRET=xiaoshiliu_secret_key_2025_docker
JWT_EXPIRES_IN=7d
REFRESH_TOKEN_EXPIRES_IN=30d

# 上传配置
UPLOAD_MAX_SIZE=50mb
# 图片上传策略 (local: 本地存储, imagehost: 第三方图床, r2: Cloudflare R2)
UPLOAD_STRATEGY=imagehost

# 第三方图床配置(当UPLOAD_STRATEGY=imagehost时使用)
IMAGEHOST_API_URL=https://api.xinyew.cn/api/jdtc
IMAGEHOST_TIMEOUT=60000

# Cloudflare R2 配置(当UPLOAD_STRATEGY=r2时使用)
# 如需使用R2存储,请取消注释并填入真实配置
# R2_ACCESS_KEY_ID=your_r2_access_key_id_here
# R2_SECRET_ACCESS_KEY=your_r2_secret_access_key_here
# R2_ENDPOINT=https://your_account_id.r2.cloudflarestorage.com
# R2_BUCKET_NAME=your_bucket_name_here
# R2_ACCOUNT_ID=your_account_id_here
# R2_REGION=auto
# R2_PUBLIC_URL=https://your-custom-domain.com

# 服务端口配置
FRONTEND_PORT=80
BACKEND_PORT=3001
DB_PORT_EXTERNAL=3306

3. 启动服务

使用 PowerShell 脚本(Windows 推荐):

# 基本启动
.\deploy.ps1

# 重新构建并启动
.\deploy.ps1 -Build

# 启动并灌装示例数据
.\deploy.ps1 -Seed

# 查看帮助
.\deploy.ps1 -Help

或使用 Docker Compose:

# 启动服务
docker-compose up -d

# 重新构建并启动
docker-compose up -d --build

4. 访问应用

前端界面:http://localhost:8080 后端API:http://localhost:3001 数据库:localhost:3307

5. 常用管理命令

# 查看服务状态
.\deploy.ps1 -Status

# 查看日志
.\deploy.ps1 -Logs

# 停止服务
.\deploy.ps1 -Stop

# 清理所有数据(谨慎使用)
.\deploy.ps1 -Clean

传统部署

1. 环境准备

确保已安装:

Node.js 18+
MySQL 8.0+
Git

2. 克隆项目

git clone <项目地址>
cd XiaoShiLiu

3. 数据库配置

确保 MySQL 服务已启动,数据库将通过脚本自动创建和初始化。

4. 后端配置

进入后端目录:

cd express-project

复制并配置环境文件:

cp .env.example .env

编辑 .env 文件:

# 服务器配置
PORT=3001
NODE_ENV=development

# JWT配置
JWT_SECRET=xiaoshiliu_secret_key_2025_production
JWT_EXPIRES_IN=7d
REFRESH_TOKEN_EXPIRES_IN=30d

# 数据库配置
DB_HOST=localhost
DB_USER=root
DB_PASSWORD=123456
DB_NAME=xiaoshiliu
DB_PORT=3306

# API配置
API_BASE_URL=http://localhost:3001

# 上传配置
UPLOAD_MAX_SIZE=50mb
# 图片上传策略 (local: 本地存储, imagehost: 第三方图床, r2: Cloudflare R2)
UPLOAD_STRATEGY=imagehost

# 本地存储配置
LOCAL_UPLOAD_DIR=uploads
LOCAL_BASE_URL=http://localhost:3001

# 第三方图床配置(当UPLOAD_STRATEGY=imagehost时使用)
IMAGEHOST_API_URL=https://api.xinyew.cn/api/jdtc
IMAGEHOST_TIMEOUT=60000

# Cloudflare R2 配置(当UPLOAD_STRATEGY=r2时使用)
# 请从 Cloudflare 控制台获取您自己的配置信息
R2_ACCESS_KEY_ID=your_r2_access_key_id_here
R2_SECRET_ACCESS_KEY=your_r2_secret_access_key_here
R2_ENDPOINT=https://your_account_id.r2.cloudflarestorage.com
R2_BUCKET_NAME=your_bucket_name_here
R2_ACCOUNT_ID=your_account_id_here
R2_REGION=auto
# 可选:如果有自定义域名,可以设置 R2_PUBLIC_URL
# R2_PUBLIC_URL=https://your-custom-domain.com

# CORS配置
CORS_ORIGIN=http://localhost:5173

安装依赖并初始化数据库:

npm install
# 初始化数据库结构
cd scripts
node init-database.js
# 生成示例数据(可选)
node generate-data.js

启动后端服务:

npm start

5. 前端配置

打开新终端,进入前端目录:

cd vue3-project

复制并配置环境文件:

cp .env.example .env

编辑 .env 文件,根据后端配置调整:

# 开发环境配置

# API基础URL(需要与后端端口一致)
VITE_API_BASE_URL=http://localhost:3001/api

# 是否使用真实API
VITE_USE_REAL_API=true

# 应用标题
VITE_APP_TITLE=小石榴图文社区

安装依赖:

npm install

开发模式启动:

npm run dev

生产模式构建:

npm run build
npm run preview
  1. 访问应用

    开发模式:http://localhost:5173 生产模式:http://localhost:4173 后端API:http://localhost:3001

项目结构

XiaoShiLiu/ ├── express-project/ # 后端项目 │ ├── app.js # 应用入口 │ ├── package.json # 后端依赖 │ ├── .env.example # 后端环境配置模板 │ ├── Dockerfile # 后端Docker配置 │ └── scripts/ │ └── init-database.sql # 数据库初始化脚本 ├── vue3-project/ # 前端项目 │ ├── package.json # 前端依赖 │ ├── Dockerfile # 前端Docker配置 │ └── nginx.conf # Nginx配置 ├── docker-compose.yml # Docker编排配置 ├── .env.docker # Docker环境配置模板 ├── deploy.ps1 # Windows部署脚本 └── doc/ └── DEPLOYMENT.md # 本文档

配置说明

上传策略配置

项目支持三种图片上传策略:

本地存储 (UPLOAD_STRATEGY=local)

LOCAL_UPLOAD_DIR=uploads
LOCAL_BASE_URL=http://localhost:3001

第三方图床 (UPLOAD_STRATEGY=imagehost)

IMAGEHOST_API_URL=https://api.xinyew.cn/api/jdtc
IMAGEHOST_TIMEOUT=60000

Cloudflare R2 (UPLOAD_STRATEGY=r2)

R2_ACCESS_KEY_ID=your_access_key
R2_SECRET_ACCESS_KEY=your_secret_key
R2_ENDPOINT=https://your_account_id.r2.cloudflarestorage.com
R2_BUCKET_NAME=your_bucket_name
R2_ACCOUNT_ID=your_account_id
R2_REGION=auto

Cloudflare R2 配置步骤

登录 Cloudflare 控制台
进入 R2 Object Storage
创建存储桶
生成 API 令牌(权限:R2:Edit)
获取账户 ID
配置环境变量

故障排除 Docker 部署问题

端口冲突

# 检查端口占用
netstat -ano | findstr :8080
# 修改 .env 中的端口配置

容器启动失败

# 查看日志
docker-compose logs
# 重新构建
docker-compose up -d --build

数据库连接失败

# 检查数据库容器状态
docker-compose ps
# 重启数据库服务
docker-compose restart mysql

传统部署问题

Node.js 版本不兼容

# 检查版本
node --version
# 使用 nvm 切换版本
nvm use 18

数据库连接失败 检查 MySQL 服务是否启动 验证数据库用户权限 确认防火墙设置

依赖安装失败

# 清理缓存
npm cache clean --force
# 删除 node_modules 重新安装
rm -rf node_modules
npm install

注意事项

生产环境部署: 修改默认密码和密钥 配置 HTTPS 设置防火墙规则 定期备份数据

性能优化: 使用 CDN 加速静态资源 配置数据库索引 启用 Gzip 压缩

安全建议: 不要将 .env 文件提交到版本控制 定期更新依赖包 使用强密码策略

祝您部署顺利!

签名: 最忠诚的BUG开发者来自: 重庆市. 火狐浏览器
文章目录

新年快乐

×
新年快乐
同喜