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: 一键部署(推荐)

# 下载项目
git clone <your-repo-url>
cd chat-app

# 设置权限
chmod +x *.sh

# 一键部署
sudo ./deploy.sh

方法2: 手动部署

# 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

make install  # 设置权限
make start    # 启动应用
make health   # 检查状态

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

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

📊 监控和维护

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

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

# 查看日志
make logs

# 备份数据库
make backup

# 测试功能
./test.sh

🔧 故障排除

常见问题

  1. 端口被占用

    # 检查端口使用情况
    sudo netstat -tulpn | grep :3000
    sudo netstat -tulpn | grep :5000
    sudo netstat -tulpn | grep :27017
    
  2. Docker权限问题

    # 将用户添加到docker组
    sudo usermod -aG docker $USER
    # 重新登录或执行
    newgrp docker
    
  3. 服务启动失败

    # 查看详细日志
    docker-compose logs -f
    
    # 检查容器状态
    docker-compose ps
    
  4. 内存不足

    # 检查系统资源
    free -h
    df -h
    
    # 清理Docker资源
    make clean
    

🔐 安全配置

防火墙设置

# 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. 设置强密码策略

定期维护

# 每日备份(添加到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

📈 性能优化

系统级优化

# 增加文件描述符限制
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优化

# 限制日志大小
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到项目仓库