Readme 规范
README.md 应包含以下章节:
项目名称
项目简介
功能特性
快速开始
环境要求
安装步骤
配置说明
本地开发
开发环境搭建
运行项目
调试方法
生产部署
部署前准备
部署步骤
环境变量配置
健康检查
API文档
测试
贡献指南
README.md示例
## 📖 项目简介
详细描述项目的:
- 背景和目的
- 解决的问题
- 适用场景
- 技术栈
**技术栈:**
- 后端:Node.js / Python / Java / Go 等
- 前端:React / Vue / Angular 等
- 数据库:MySQL / PostgreSQL / MongoDB 等
- 其他:Redis / Nginx / Docker 等
## ✨ 功能特性
- ✅ 功能点1:具体描述
- ✅ 功能点2:具体描述
- ✅ 功能点3:具体描述
- 🚧 功能点4:开发中
- 📋 功能点5:计划中
## 🚀 快速开始
### 环境要求
| 依赖 | 版本要求 | 说明 |
|------|---------|------|
| Node.js | >= 16.0.0 | 运行环境 |
| npm/yarn | >= 8.0.0 / >= 1.22.0 | 包管理器 |
| MySQL | >= 8.0 | 数据库 |
| Redis | >= 6.0 | 缓存 |
### 安装步骤
1. **克隆项目**
```bash
git clone https://github.com/your-org/your-repo.git
cd your-repo
```
2. **安装依赖**
```bash
npm install
# 或
yarn install
```
3. **配置环境变量**
```bash
cp .env.template .env
# 编辑 .env 文件,填入必要的配置
```bash
4. **初始化数据库**
```bash
npm run db:migrate
npm run db:seed
```
5. **启动项目**
```bash
npm run dev
```
6. **访问应用**
- 前端地址:http://localhost:3000
- 后端地址:http://localhost:8080
- API文档:http://localhost:8080/api-docs
### 配置说明
.env 文件配置项说明:
```text
# 应用配置
NODE_ENV=development # 环境:development/production
PORT=8080 # 服务端口
APP_NAME=YourApp # 应用名称
# 数据库配置
DB_HOST=localhost # 数据库地址
DB_PORT=3306 # 数据库端口
DB_NAME=your_db # 数据库名
DB_USER=root # 数据库用户
DB_PASSWORD=password # 数据库密码
# Redis配置
REDIS_HOST=localhost # Redis地址
REDIS_PORT=6379 # Redis端口
REDIS_PASSWORD= # Redis密码
# JWT配置
JWT_SECRET=your-secret-key # JWT密钥
JWT_EXPIRES_IN=7d # Token过期时间
# 其他配置
LOG_LEVEL=debug # 日志级别
```
## 本地开发
### 开发环境搭建
1. **安装开发工具**
- IDE推荐:VSCode / WebStorm
- 推荐插件:ESLint, Prettier, GitLens
2. **代码规范**
```bash
# 代码格式化
npm run format
# 代码检查
npm run lint
# 自动修复
npm run lint:fix
```
### 运行项目
```bash
# 开发模式(热重载)
npm run dev
# 构建项目
npm run build
# 生产模式预览
npm run start
```
### 调试方法
1. **VSCode 调试配置** (.vscode/launch.json):
```text
{
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "Debug",
"skipFiles": ["<node_internals>/**"],
"program": "${workspaceFolder}/src/index.js",
"envFile": "${workspaceFolder}/.env"
}
]
}
```
2. **日志查看:**
```bash
# 实时查看日志
tail -f logs/app.log
# 查看错误日志
tail -f logs/error.log
```
## 生产部署
### 部署前准备
**检查清单:**
- [ ] 代码已通过所有测试
- [ ] 已更新版本号
- [ ] 已备份数据库
- [ ] 已准备生产环境配置
- [ ] 已配置域名和SSL证书
### 部署步骤
#### 方式一:Docker 部署(推荐)
1. **构建镜像**
```bash
docker build -t your-app:latest .
```
2. **运行容器**
```bash
docker compose up -d
```
3. **查看日志**
```bash
docker compose logs -f
```
**docker-compose.yml 示例:**
```text
version: '3.8'
services:
app:
build: .
ports:
- "8080:8080"
environment:
- NODE_ENV=production
- DB_HOST=db
- REDIS_HOST=redis
depends_on:
- db
- redis
restart: always
db:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: ${DB_PASSWORD}
MYSQL_DATABASE: ${DB_NAME}
volumes:
- db-data:/var/lib/mysql
restart: always
redis:
image: redis:6-alpine
restart: always
volumes:
db-data:
```
#### 方式二:传统部署
1. **服务器准备**
```bash
# 安装 Node.js
curl -fsSL https://deb.nodesource.com/setup_16.x | sudo -E bash -
sudo apt-get install -y nodejs
# 安装 PM2
npm install -g pm2
```
2. **部署代码**
```bash
# 拉取代码
git clone https://github.com/your-org/your-repo.git
cd your-repo
# 安装依赖
npm ci --production
# 构建项目
npm run build
```
3. **启动服务**
```bash
# 使用 PM2 启动
pm2 start ecosystem.config.js --env production
# 设置开机自启
pm2 startup
pm2 save
```
**ecosystem.config.js 示例:**
```text
module.exports = {
apps: [{
name: 'your-app',
script: './dist/index.js',
instances: 'max',
exec_mode: 'cluster',
env_production: {
NODE_ENV: 'production',
PORT: 8080
},
error_file: './logs/pm2-error.log',
out_file: './logs/pm2-out.log',
log_date_format: 'YYYY-MM-DD HH:mm:ss',
merge_logs: true
}]
}
```
### 环境变量配置
**生产环境 .env 配置:**
```text
NODE_ENV=production
PORT=8080
# 数据库(使用实际生产环境地址)
DB_HOST=prod-db.example.com
DB_PORT=3306
DB_NAME=prod_db
DB_USER=prod_user
DB_PASSWORD=strong_password_here
# Redis
REDIS_HOST=prod-redis.example.com
REDIS_PORT=6379
REDIS_PASSWORD=redis_password_here
# 安全配置
JWT_SECRET=production_secret_key_change_this
CORS_ORIGIN=https://yourdomain.com
# 监控
SENTRY_DSN=your_sentry_dsn
```
### 健康检查
```bash
# 检查服务状态
curl http://localhost:8080/health
# 预期返回
{
"status": "ok",
"timestamp": "2024-01-01T00:00:00.000Z",
"uptime": 3600,
"database": "connected",
"redis": "connected"
}
```
### Nginx 配置示例
```text
server {
listen 80;
server_name yourdomain.com;
# 重定向到 HTTPS
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl http2;
server_name yourdomain.com;
ssl_certificate /path/to/cert.pem;
ssl_certificate_key /path/to/key.pem;
location / {
proxy_pass http://localhost:8080;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
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_cache_bypass $http_upgrade;
}
}
```
### 监控和维护
```bash
# PM2 监控
pm2 monit
# 查看日志
pm2 logs your-app
# 重启服务
pm2 restart your-app
# 查看服务状态
pm2 status
```