使用CentOS搭建Rocket.Chat教程
一、环境准备与系统要求
1.1 服务器配置建议
建议使用至少2核4GB内存的CentOS 7/8服务器,推荐配置4核8GB内存以获得更好的性能。磁盘空间建议预留20GB以上,其中/var目录需分配足够空间存储数据库和上传文件。
1.2 系统版本选择
CentOS 7使用Systemd管理服务,兼容性较好;CentOS 8引入了更现代的软件包管理,但部分旧版软件可能存在兼容问题。本文以CentOS 7.9为例进行演示。
1.3 网络环境要求
确保服务器有公网IP或可通过NAT访问,开放端口范围:80/443(HTTP/HTTPS)、3000(开发模式)、27017(MongoDB默认端口,生产环境建议修改)。
二、基础环境搭建
2.1 系统更新与工具安装
# 更新系统sudo yum update -y# 安装基础工具sudo yum install -y epel-release wget curl git# 安装开发工具链sudo yum groupinstall -y "Development Tools"
2.2 Node.js环境配置
Rocket.Chat推荐使用Node.js 14.x或16.x版本。通过NodeSource仓库安装:
# 添加NodeSource仓库curl -fsSL https://rpm.nodesource.com/setup_14.x | sudo bash -# 安装Node.js和npmsudo yum install -y nodejs# 验证安装node -v && npm -v
2.3 MongoDB数据库部署
方案一:使用官方仓库安装
# 添加MongoDB官方仓库sudo tee /etc/yum.repos.d/mongodb-org-4.4.repo <<EOF[mongodb-org-4.4]name=MongoDB Repositorybaseurl=https://repo.mongodb.org/yum/redhat/7/mongodb-org/4.4/x86_64/gpgcheck=1enabled=1gpgkey=https://www.mongodb.org/static/pgp/server-4.4.ascEOF# 安装MongoDBsudo yum install -y mongodb-org# 启动服务sudo systemctl enable --now mongod
方案二:Docker容器部署(推荐生产环境)
# 安装Dockersudo yum install -y yum-utilssudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.reposudo yum install -y docker-ce docker-ce-cli containerd.iosudo systemctl enable --now docker# 运行MongoDB容器docker run -d --name rocketchat-mongo \-p 27017:27017 \-v /data/mongo:/data/db \--restart unless-stopped \mongo:4.4
三、Rocket.Chat核心部署
3.1 源代码获取与安装
# 创建工作目录sudo mkdir -p /opt/rocketchatsudo chown $USER:$USER /opt/rocketchatcd /opt/rocketchat# 克隆最新稳定版git clone -b 4.x https://github.com/RocketChat/Rocket.Chat.git .# 安装依赖npm install --production
3.2 环境变量配置
创建.env文件配置关键参数:
# 数据库连接MONGO_URL=mongodb://localhost:27017/rocketchat# 端口配置PORT=3000# 根URL(用于邮件等场景)ROOT_URL=http://your-domain.com# 会话密钥(生产环境必须修改)OVERWRITE_SETTING_Account_LoginExpiration=86400
3.3 服务启动与管理
开发模式启动(测试用)
npm start
生产环境部署(推荐使用PM2)
# 安装PM2sudo npm install -g pm2# 启动应用pm2 start server/main.js --name "RocketChat"# 保存进程列表pm2 save# 设置开机启动pm2 startupsudo env PATH=$PATH:/usr/local/bin pm2 startup systemd -u $USER --hp /home/$USER
四、生产环境优化配置
4.1 Nginx反向代理配置
server {listen 80;server_name your-domain.com;location / {proxy_pass http://127.0.0.1:3000;proxy_http_version 1.1;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection 'upgrade';proxy_set_header Host $host;proxy_cache_bypass $http_upgrade;}# 静态资源缓存location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {expires 30d;access_log off;}}
4.2 HTTPS证书配置(Let’s Encrypt)
# 安装Certbotsudo yum install -y certbot python3-certbot-nginx# 获取证书sudo certbot --nginx -d your-domain.com --non-interactive --agree-tos --redirect# 设置自动续期echo "0 3 * * * /usr/bin/certbot renew --quiet" | sudo tee -a /etc/crontab
4.3 安全加固措施
-
防火墙配置:
sudo firewall-cmd --permanent --add-service={http,https}sudo firewall-cmd --reload
-
禁用Root登录:
sudo sed -i 's/^#PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_configsudo systemctl restart sshd
-
失败登录限制:
sudo yum install -y fail2bansudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local# 编辑jail.local添加sshd配置sudo systemctl enable --now fail2ban
五、常见问题解决方案
5.1 MongoDB连接失败
检查:
- MongoDB服务是否运行:
systemctl status mongod - 防火墙规则:
firewall-cmd --list-ports - 绑定IP配置:检查
/etc/mongod.conf中的bindIp参数
5.2 Node.js内存不足
解决方案:
-
增加交换空间:
sudo fallocate -l 4G /swapfilesudo chmod 600 /swapfilesudo mkswap /swapfilesudo swapon /swapfileecho '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
-
调整Node.js内存限制:
export NODE_OPTIONS="--max-old-space-size=4096"pm2 restart all
5.3 邮件发送失败
配置要点:
- 使用SMTP服务(如SendGrid、Mailgun)
- 在
Administration > Email中配置:SMTP_Host=smtp.sendgrid.netSMTP_Port=587SMTP_Username=apikeySMTP_Password=你的API密钥From_Email=noreply@your-domain.com
六、升级与维护策略
6.1 版本升级流程
# 备份数据库mongodump --uri="mongodb://localhost:27017/rocketchat" --out=/backup/$(date +%Y%m%d)# 停止服务pm2 stop RocketChat# 拉取最新代码cd /opt/rocketchatgit fetch --tagsgit checkout 4.x # 或指定版本号# 安装依赖并重启npm install --productionpm2 start RocketChat
6.2 定期维护任务
- 日志轮转:
```bash
创建日志目录
sudo mkdir /var/log/rocketchat
sudo chown $USER:$USER /var/log/rocketchat
配置logrotate
sudo tee /etc/logrotate.d/rocketchat <<EOF
/opt/rocketchat/logs/*.log {
daily
missingok
rotate 14
compress
delaycompress
notifempty
copytruncate
}
EOF
2. **性能监控**:```bash# 安装htop和nmonsudo yum install -y htop nmon# 监控命令示例top -b -n 1 | grep nodedocker stats rocketchat-mongo
通过以上步骤,您可以在CentOS系统上构建一个稳定、高效的Rocket.Chat即时通讯平台。根据实际需求,可进一步扩展集群部署、高可用配置等高级功能。建议定期检查官方文档获取最新安全补丁和功能更新。