CentOS系统下Rocket.Chat部署全流程指南

使用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 系统更新与工具安装

  1. # 更新系统
  2. sudo yum update -y
  3. # 安装基础工具
  4. sudo yum install -y epel-release wget curl git
  5. # 安装开发工具链
  6. sudo yum groupinstall -y "Development Tools"

2.2 Node.js环境配置

Rocket.Chat推荐使用Node.js 14.x或16.x版本。通过NodeSource仓库安装:

  1. # 添加NodeSource仓库
  2. curl -fsSL https://rpm.nodesource.com/setup_14.x | sudo bash -
  3. # 安装Node.js和npm
  4. sudo yum install -y nodejs
  5. # 验证安装
  6. node -v && npm -v

2.3 MongoDB数据库部署

方案一:使用官方仓库安装

  1. # 添加MongoDB官方仓库
  2. sudo tee /etc/yum.repos.d/mongodb-org-4.4.repo <<EOF
  3. [mongodb-org-4.4]
  4. name=MongoDB Repository
  5. baseurl=https://repo.mongodb.org/yum/redhat/7/mongodb-org/4.4/x86_64/
  6. gpgcheck=1
  7. enabled=1
  8. gpgkey=https://www.mongodb.org/static/pgp/server-4.4.asc
  9. EOF
  10. # 安装MongoDB
  11. sudo yum install -y mongodb-org
  12. # 启动服务
  13. sudo systemctl enable --now mongod

方案二:Docker容器部署(推荐生产环境)

  1. # 安装Docker
  2. sudo yum install -y yum-utils
  3. sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
  4. sudo yum install -y docker-ce docker-ce-cli containerd.io
  5. sudo systemctl enable --now docker
  6. # 运行MongoDB容器
  7. docker run -d --name rocketchat-mongo \
  8. -p 27017:27017 \
  9. -v /data/mongo:/data/db \
  10. --restart unless-stopped \
  11. mongo:4.4

三、Rocket.Chat核心部署

3.1 源代码获取与安装

  1. # 创建工作目录
  2. sudo mkdir -p /opt/rocketchat
  3. sudo chown $USER:$USER /opt/rocketchat
  4. cd /opt/rocketchat
  5. # 克隆最新稳定版
  6. git clone -b 4.x https://github.com/RocketChat/Rocket.Chat.git .
  7. # 安装依赖
  8. npm install --production

3.2 环境变量配置

创建.env文件配置关键参数:

  1. # 数据库连接
  2. MONGO_URL=mongodb://localhost:27017/rocketchat
  3. # 端口配置
  4. PORT=3000
  5. # 根URL(用于邮件等场景)
  6. ROOT_URL=http://your-domain.com
  7. # 会话密钥(生产环境必须修改)
  8. OVERWRITE_SETTING_Account_LoginExpiration=86400

3.3 服务启动与管理

开发模式启动(测试用)

  1. npm start

生产环境部署(推荐使用PM2)

  1. # 安装PM2
  2. sudo npm install -g pm2
  3. # 启动应用
  4. pm2 start server/main.js --name "RocketChat"
  5. # 保存进程列表
  6. pm2 save
  7. # 设置开机启动
  8. pm2 startup
  9. sudo env PATH=$PATH:/usr/local/bin pm2 startup systemd -u $USER --hp /home/$USER

四、生产环境优化配置

4.1 Nginx反向代理配置

  1. server {
  2. listen 80;
  3. server_name your-domain.com;
  4. location / {
  5. proxy_pass http://127.0.0.1:3000;
  6. proxy_http_version 1.1;
  7. proxy_set_header Upgrade $http_upgrade;
  8. proxy_set_header Connection 'upgrade';
  9. proxy_set_header Host $host;
  10. proxy_cache_bypass $http_upgrade;
  11. }
  12. # 静态资源缓存
  13. location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
  14. expires 30d;
  15. access_log off;
  16. }
  17. }

4.2 HTTPS证书配置(Let’s Encrypt)

  1. # 安装Certbot
  2. sudo yum install -y certbot python3-certbot-nginx
  3. # 获取证书
  4. sudo certbot --nginx -d your-domain.com --non-interactive --agree-tos --redirect
  5. # 设置自动续期
  6. echo "0 3 * * * /usr/bin/certbot renew --quiet" | sudo tee -a /etc/crontab

4.3 安全加固措施

  1. 防火墙配置

    1. sudo firewall-cmd --permanent --add-service={http,https}
    2. sudo firewall-cmd --reload
  2. 禁用Root登录

    1. sudo sed -i 's/^#PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config
    2. sudo systemctl restart sshd
  3. 失败登录限制

    1. sudo yum install -y fail2ban
    2. sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
    3. # 编辑jail.local添加sshd配置
    4. 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内存不足

解决方案:

  • 增加交换空间:

    1. sudo fallocate -l 4G /swapfile
    2. sudo chmod 600 /swapfile
    3. sudo mkswap /swapfile
    4. sudo swapon /swapfile
    5. echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
  • 调整Node.js内存限制:

    1. export NODE_OPTIONS="--max-old-space-size=4096"
    2. pm2 restart all

5.3 邮件发送失败

配置要点:

  • 使用SMTP服务(如SendGrid、Mailgun)
  • Administration > Email中配置:
    1. SMTP_Host=smtp.sendgrid.net
    2. SMTP_Port=587
    3. SMTP_Username=apikey
    4. SMTP_Password=你的API密钥
    5. From_Email=noreply@your-domain.com

六、升级与维护策略

6.1 版本升级流程

  1. # 备份数据库
  2. mongodump --uri="mongodb://localhost:27017/rocketchat" --out=/backup/$(date +%Y%m%d)
  3. # 停止服务
  4. pm2 stop RocketChat
  5. # 拉取最新代码
  6. cd /opt/rocketchat
  7. git fetch --tags
  8. git checkout 4.x # 或指定版本号
  9. # 安装依赖并重启
  10. npm install --production
  11. pm2 start RocketChat

6.2 定期维护任务

  1. 日志轮转
    ```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

  1. 2. **性能监控**:
  2. ```bash
  3. # 安装htop和nmon
  4. sudo yum install -y htop nmon
  5. # 监控命令示例
  6. top -b -n 1 | grep node
  7. docker stats rocketchat-mongo

通过以上步骤,您可以在CentOS系统上构建一个稳定、高效的Rocket.Chat即时通讯平台。根据实际需求,可进一步扩展集群部署、高可用配置等高级功能。建议定期检查官方文档获取最新安全补丁和功能更新。