如何在CentOS 7上部署Rocket.Chat
Rocket.Chat是一个完整的团队交流平台,是自托管的Slack替代方案。 它是用Meteor构建的,并提供各种功能,包括服务台聊天,视频会议,文件共享,语音消息,API等。
在本教程中,我们将向您展示如何在使用Nginx作为SSL反向代理的CentOS 7服务器上安装和部署Rocket.Chat。
先决条件
在继续本教程之前,请确保您已满足以下先决条件:
- 根据官方的Rocket.Chat系统要求,CentOS 7服务器至少需要1G RAM。
- 您以具有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 n
sudo 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 mongod
sudo systemctl enable mongod
创建新的系统用户#
创建一个新的用户和组,它将运行我们的Rocket.Chat实例。 为简单起见,我们将命名用户 rocket
:
sudo useradd -m -U -r -d /opt/rocket rocket
添加 nginx
用户到新用户组并更改 /opt/rocket
目录权限,以便Nginx可以访问它:
sudo usermod -a -G rocket nginx
sudo chmod 750 /opt/rocket
安装Rocket.Chat#
切换到用户 rocket
通过键入:
sudo su - rocket
下载带有curl的最新稳定版Rocket.Chat:
curl -L https://releases.rocket.chat/latest/download -o rocket.chat.tgz
下载完成后,解压缩存档并将目录重命名为 Rocket.Chat
:
tar zxf rocket.chat.tgz
mv bundle Rocket.Chat
换成 Rocket.Chat/programs/server
目录并安装所有必需的 npm
套餐:
cd Rocket.Chat/programs/server
npm install
在创建systemd单元并使用Nginx设置反向代理之前,最好测试一下安装是否成功。
为此,请先设置所需的环境变量:
export PORT=3000
export 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计算机上。 使用以下命令停止Rocket.Chat服务器 CTRL+C
并继续下一步。
创建系统单位编号
要将Rocket.Chat作为服务运行,请创建一个 rocketchat.service
单位文件 /etc/systemd/system/
目录:
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-reload
sudo 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 2018-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上使用“让我们加密”来保护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设置向导,该向导将指导您设置第一个管理员用户,配置组织和注册服务器以接收免费的推送通知等。
初始设置向导的第一部分将要求您设置管理员用户:
输入管理员信息后,请点击 Continue
按钮,然后在下一步中输入您的组织信息:
初始设置向导的第三部分将提示您输入服务器信息:
在下一步中,系统将询问您是否要使用Rocket.Chat的预配置网关和代理。 选择此选项将使您可以访问Rocket.Chat Apps市场,而其他大多数功能(如推送通知)也将立即可用。
做出选择,点击 Continue
按钮,您将被重定向到以下页面,表明您的工作区已准备就绪,可以使用:
点击 Go to your workspace
按钮,您将被重定向到以admin用户身份登录的Rocket.Chat仪表板。
结论#
您已经在CentOS 7服务器上成功安装了Rocket.Chat。 现在,您可以开始使用Rocket.Chat与您的团队进行协作,共享文件并实时聊天。
如果您在安装过程中遇到任何问题,请随时发表评论。
火箭聊天nodejs centos mongodb