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到项目仓库
|