🚀 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
🔧 故障排除
常见问题
端口被占用
# 检查端口使用情况 sudo netstat -tulpn | grep :3000 sudo netstat -tulpn | grep :5000 sudo netstat -tulpn | grep :27017
Docker权限问题
# 将用户添加到docker组 sudo usermod -aG docker $USER # 重新登录或执行 newgrp docker
服务启动失败
# 查看详细日志 docker-compose logs -f # 检查容器状态 docker-compose ps
内存不足
# 检查系统资源 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
环境变量安全
- 修改
server/.env
中的JWT密钥 - 更改MongoDB默认密码
- 设置强密码策略
定期维护
# 每日备份(添加到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
🆘 紧急恢复
快速恢复步骤
- 停止所有服务:
make stop
- 恢复数据库备份:
make restore FILE=backup.gz
- 重启服务:
make start
- 验证功能:
./test.sh
数据备份策略
- 每日自动备份数据库
- 保留最近30天的备份
- 异地备份重要数据
📞 支持联系
如果遇到问题,请:
- 查看日志:
make logs
- 运行测试:
./test.sh
- 检查监控:
./monitor.sh
- 提交Issue到项目仓库