如何在CentOS 7上部署Rocket.Chat

时间:2020-03-05 15:24:27  来源:igfitidea点击:

Rocket.Chat是一个完整的团队沟通平台,是自托管的Slack替代方案。
它与Meteor一起构建,并提供各种功能,包括服务台聊天,视频会议,文件共享,语音消息,API等。

在本教程中,我们将向我们展示如何在以Nginx作为SSL反向代理的CentOS 7服务器上安装和部署Rocket.Chat。

准备工作

在继续本教程之前,请确保我们已满足以下准备工作:

  • 根据官方的Rocket.Chat系统要求,CentOS 7服务器至少需要1G的内存。
  • 我们以具有sudo特权的用户身份登录。
  • 我们有一个指向服务器IP地址的域名。在本文中,我们将使用'example.com'。
  • 我们已经安装了Nginx,如果没有,则可以按照本教程进行安装。
  • SSL证书。我们可以通过Let's Encrypt生成免费的,也可以从其他提供商那里购买。

安装依赖项

安装以下软件包,这些软件包是构建必需的“ npm”模块所必需的:

sudo yum install epel-release curl GraphicsMagick gcc-c++

接下来,通过键入以下命令安装“ Node.js”和“ npm”:

sudo yum install -y nodejs npm

在撰写本文时,建议的Rocket.Chat Node.js版本是Node.js v8.11.3.

发出以下命令来安装'n'实用程序和推荐的Node.js版本:

sudo npm install -g inherits nsudo n 8.11.3

MongoDB是一个NoSQL面向文档的数据库,被Rocket.Chat用作数据存储。
Rocket.Chat建议使用MongoDB 3.6版。

我们将使用MongoDB官方存储库中的“ yum”安装MongoDB。

打开我们选择的编辑器并创建以下存储库文件:

sudo nano /etc/yum.repos.d/mongodb-org.repo

将以下内容粘贴到文件中:

/etc/yum.repos.d/mongodb-org.repo

[mongodb-org-3.6]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.6/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.6.asc

保存文件并关闭文本编辑器。

要安装MongoDB,请运行以下命令:

sudo yum install mongodb-org

安装完成后,启用并启动MongoDB服务:

sudo systemctl start mongodsudo systemctl enable mongod

创建新的系统用户

创建一个新的用户和组,它将运行我们的Rocket.Chat实例。
为简单起见,我们将用户命名为“火箭”:

sudo useradd -m -U -r -d /opt/rocket rocket

将'nginx'用户添加到新用户组,并更改'/opt/rocket'目录权限,以便Nginx可以访问它:

sudo usermod -a -G rocket nginxsudo chmod 750 /opt/rocket

安装Rocket.Chat

通过键入以下内容切换到用户“火箭”:

sudo su - rocket

下载带有curl的最新稳定版Rocket.Chat:

curl -L https://releases.rocket.chat/latest/download -o rocket.chat.tgz

下载完成后,解压缩存档并将目录重命名为“ Rocket.Chat”:

tar zxf rocket.chat.tgzmv bundle Rocket.Chat

转到“ Rocket.Chat/programs/server”目录并安装所有必需的“ npm”软件包:

cd Rocket.Chat/programs/servernpm install

在创建systemd单元并使用Nginx设置反向代理之前,最好测试一下安装是否成功。

为此,请先设置所需的环境变量:

export PORT=3000export ROOT_URL=http://example.com:3000/export MONGO_URL=mongodb://localhost:27017/rocketchat

接下来,返回到“ Rocket.Chat”目录,并通过发出以下命令来启动“ Rocket.Chat”服务器:

cd ../../node main.js

如果没有错误,我们应该看到以下输出:

➔ +---------------------------------------------+
➔ |                SERVER RUNNING               |
➔ +---------------------------------------------+
➔ |                                             |
➔ |  Rocket.Chat Version: 0.71.1                |
➔ |       NodeJS Version: 8.11.3 - x64          |
➔ |             Platform: linux                 |
➔ |         Process Port: 3000                  |
➔ |             Site URL: http://0.0.0.0:3000/ |
➔ |     ReplicaSet OpLog: Disabled              |
➔ |          Commit Hash: e73dc78ffd            |
➔ |        Commit Branch: HEAD                  |
➔ |                                             |
➔ +---------------------------------------------+

此时,Rocket.Chat已安装在CentOS 7计算机上。
使用“ CTRL + C”停止Rocket.Chat服务器,然后继续下一步。

创建一个系统单位

要将Rocket.Chat作为服务运行,请在'/etc/systemd/system /'目录中创建一个'rocketchat.service'单元文件:

sudo nano /etc/systemd/system/rocketchat.service

将以下内容粘贴到文件中:

/etc/systemd/system/rocketchat.service

[Unit]
Description=Rocket.Chat server
After=network.target nss-lookup.target mongod.target
[Service]
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=rocketchat
User=rocket
Environment=MONGO_URL=mongodb://localhost:27017/rocketchat ROOT_URL=http://example.com:3000/PORT=3000
ExecStart=/usr/local/bin/node /opt/rocket/Rocket.Chat/main.js
[Install]
WantedBy=multi-user.target

保存并关闭文件。

通知systemd已经创建了一个新的单元文件,并通过执行以下命令启动Rocket.Chat服务:

sudo systemctl daemon-reloadsudo systemctl start rocketchat

使用以下命令检查服务状态:

sudo systemctl status rocketchat

输出应如下所示:

● rocketchat.service - Rocket.Chat server
   Loaded: loaded (/etc/systemd/system/rocketchat.service; enabled; vendor preset: disabled)
   Active: active (running) since Tue 2016-04-10 20:30:56 UTC; 8s ago
 Main PID: 32356 (node)
   CGroup: /system.slice/rocketchat.service
           └─32356 /usr/local/bin/node /opt/rocket/Rocket.Chat/main.js

如果没有错误,则可以启用Rocket.Chat服务,使其在启动时自动启动:

sudo systemctl enable rocketchat

使用Nginx设置反向代理

如果我们遵循我们如何在CentOS 7上安装Nginx以及如何在CentOS 7上使用“Let’s Encrypt ”来保护Nginx,则我们应该已经安装了Nginx并配置了SSL证书。

现在,我们需要为我们的Rocket.Chat安装创建一个新的服务器块:

sudo nano /etc/nginx/conf.d/example.com.conf

将以下内容粘贴到文件中:

/etc/nginx/conf.d/example.com.conf

upstream rocketchat_backend {
  server 127.0.0.1:3000;
}
server {
    listen 80;
    server_name example.com www.example.com;
    include snippets/letsencrypt.conf;
    return 301 https://example.com$request_uri;
}
server {
    listen 443 ssl http2;
    server_name www.example.com;
    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;
    include snippets/ssl.conf;
    return 301 https://example.com$request_uri;
}
server {
    listen 443 ssl http2;
    server_name example.com;
    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;
    include snippets/ssl.conf;
    include snippets/letsencrypt.conf;
    access_log /var/log/nginx/example.com-access.log;
    error_log /var/log/nginx/example.com-error.log;
    location/{
        proxy_pass http://rocketchat_backend/;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forward-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forward-Proto http;
        proxy_set_header X-Nginx-Proxy true;
        proxy_redirect off;
    }
}

重新加载Nginx服务以使更改生效:

sudo systemctl reload nginx

配置Rocket.Chat

打开浏览器,然后输入:'http://chat.example.com'。

假设安装成功,将为我们提供Rocket.Chat设置向导,该向导将指导我们设置第一个管理员用户,配置组织机构以及注册服务器以接收免费的推送通知等。

初始设置向导的第一部分将要求我们设置管理员用户:

输入管理员信息后,单击“继续”按钮,然后在下一步中输入组织信息:

初始设置向导的第三部分将提示我们输入服务器信息:

在下一步中,系统将询问我们是否要使用Rocket.Chat的预配置网关和代理。
选择此选项将使我们可以访问Rocket.Chat Apps市场,而其他大多数功能(如推送通知)也可以直接使用。

做出选择,单击“继续”按钮,我们将被重定向到指示工作空间已准备就绪的下一页:

单击“转到工作区”按钮,我们将被重定向到以admin用户身份登录的Rocket.Chat仪表板。