File size: 3,909 Bytes
24fd742
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
# 🚀 Linux部署指南

这是一个完整的聊天应用Linux部署指南,包含所有必要的脚本和配置文件。

## 📋 部署清单

### 🔧 必需软件
- [ ] Docker Engine
- [ ] Docker Compose
- [ ] Git (可选,用于版本控制)
- [ ] Nginx (用于反向代理,可选)
- [ ] Certbot (用于SSL证书,可选)

### 📁 文件清单
- [ ] `docker-compose.yml` - 生产环境配置
- [ ] `docker-compose.dev.yml` - 开发环境配置
- [ ] `Dockerfile` (client & server) - 容器构建文件
- [ ] `start.sh` - Linux启动脚本
- [ ] `stop.sh` - Linux停止脚本
- [ ] `deploy.sh` - 自动部署脚本
- [ ] `monitor.sh` - 监控脚本
- [ ] `test.sh` - 功能测试脚本
- [ ] `Makefile` - 管理命令

## 🚀 快速部署

### 方法1: 一键部署(推荐)
```bash
# 下载项目
git clone <your-repo-url>
cd chat-app

# 设置权限
chmod +x *.sh

# 一键部署
sudo ./deploy.sh
```

### 方法2: 手动部署
```bash
# 1. 安装Docker
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh

# 2. 启动应用
./start.sh

# 3. 验证部署
./test.sh
```

### 方法3: 使用Makefile
```bash
make install  # 设置权限
make start    # 启动应用
make health   # 检查状态
```

## 🔒 SSL配置(生产环境推荐)

```bash
# 自动配置SSL和nginx反向代理
sudo ./setup-ssl.sh
```

## 📊 监控和维护

```bash
# 查看实时监控
./monitor.sh

# 自动刷新监控(每30秒)
watch -n 30 ./monitor.sh

# 查看日志
make logs

# 备份数据库
make backup

# 测试功能
./test.sh
```

## 🔧 故障排除

### 常见问题

1. **端口被占用**
   ```bash
   # 检查端口使用情况
   sudo netstat -tulpn | grep :3000
   sudo netstat -tulpn | grep :5000
   sudo netstat -tulpn | grep :27017
   ```

2. **Docker权限问题**
   ```bash
   # 将用户添加到docker组
   sudo usermod -aG docker $USER
   # 重新登录或执行
   newgrp docker
   ```

3. **服务启动失败**
   ```bash
   # 查看详细日志
   docker-compose logs -f
   
   # 检查容器状态
   docker-compose ps
   ```

4. **内存不足**
   ```bash
   # 检查系统资源
   free -h
   df -h
   
   # 清理Docker资源
   make clean
   ```

## 🔐 安全配置

### 防火墙设置
```bash
# Ubuntu/Debian
sudo ufw allow 22    # SSH
sudo ufw allow 80    # HTTP
sudo ufw allow 443   # HTTPS
sudo ufw enable

# CentOS/RHEL
sudo firewall-cmd --permanent --add-service=ssh
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload
```

### 环境变量安全
1. 修改 `server/.env` 中的JWT密钥
2. 更改MongoDB默认密码
3. 设置强密码策略

### 定期维护
```bash
# 每日备份(添加到crontab)
0 2 * * * /path/to/chat-app/make backup

# 每周更新
0 3 * * 0 /path/to/chat-app/make update

# 监控磁盘空间
0 */6 * * * df -h | mail -s "Disk Usage Report" admin@yourdomain.com
```

## 📈 性能优化

### 系统级优化
```bash
# 增加文件描述符限制
echo "* soft nofile 65536" >> /etc/security/limits.conf
echo "* hard nofile 65536" >> /etc/security/limits.conf

# 优化网络参数
echo "net.core.somaxconn = 65536" >> /etc/sysctl.conf
sysctl -p
```

### Docker优化
```bash
# 限制日志大小
echo '{
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "10m",
    "max-file": "3"
  }
}' > /etc/docker/daemon.json

systemctl restart docker
```

## 🆘 紧急恢复

### 快速恢复步骤
1. 停止所有服务: `make stop`
2. 恢复数据库备份: `make restore FILE=backup.gz`
3. 重启服务: `make start`
4. 验证功能: `./test.sh`

### 数据备份策略
- 每日自动备份数据库
- 保留最近30天的备份
- 异地备份重要数据

## 📞 支持联系

如果遇到问题,请:
1. 查看日志: `make logs`
2. 运行测试: `./test.sh`
3. 检查监控: `./monitor.sh`
4. 提交Issue到项目仓库