ccccccc / DEPLOYMENT.md
cnmksjs's picture
Upload 49 files
24fd742 verified
# 🚀 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到项目仓库