介绍
Rocket Chat其实已经出现了蛮久的了,到现在为止生态已经相当的成熟。在可用性上Rocket Chat支持网页,ios,安卓与Windows,每个平台也都有自己独立的应用,直接对标Discord。可惜目前还没有内置的即时语音视频通信服务,但是留出了自定义的部分可以自己部署。剩下的用户权限配置,群组与私人聊天,端到端加密,网页预加载等功能都已经蛮完善的,而且无需太多配置开箱即用。
之前我自己也从头编译配环境部署过几次,今天来水个更简单点的宝塔面板搭建教程。想要无环境从头开始的可以参考官网的搭建教程,也没有麻烦多少。
一.前期准备
1.安装宝塔
这部分没什么说的,使用宝塔官网提供的一键脚本即可,部分mini系统记得先安装wget
.
安装wget:
yum install -y wget
安装宝塔面板
wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh
这里官方使用的python2.7作为运行环境,如果想直接使用python3.x版本请去官网找对应链接。
2.安装所需软件与依赖
环境需求:NodeJS 12.18.4
、Mongodb 4.0.9
、Nginx
依赖需求:GraphicsMagick
宝塔面板安装完成后会提示安装LNMP环境,如果是建站机推荐装一下。如果需要反代Rocket Chat那么Nginx是必装的。
之后进入宝塔面板的软件商店,分别安装MongoDB 4.0.10
与PM2管理器
。
- PM2管理器
在PM2管理器设置中找到Node版本
选项,点击切换为12.18.4,使用默认的高版本在部署时会出现问题。 - MongoDB
在MongoDB的设置中找到配置文件
选项,之后删除Storge:
块中的配置,改为如下配置:
#设置storage引擎,新增engine参数,并修改下dbPath路径,不然会启动不了
#这里生成的数据库到后期会非常大,如果是多分区的系统建议放到存储盘里去。经博主测试软链接也是可以的。
storage:
#新加入部分开始
dbPath: /www/server/mongodb/Rocket.Chat
directoryPerDB: true
engine: mmapv1
journal:
enabled: true
#新加入部分结束
之后新加入一个replication:
块并添加内容:
#配置replica set,新增以下参数
replication:
replSetName: rs01
保存配置文件后MogoDB会自动停止,这时候回到ssh终端,分别输入以下命令:
#新建数据存储路径,即上面配置文件修改的dbPath参数
mkdir /www/server/mongodb/Rocket.Chat
#授权
chown mongo:mongo /www/server/mongodb/Rocket.Chat
#重新启动数据库
/etc/init.d/mongodb start
#启动replica set
mongo --eval "printjson(rs.initiate())"
之后MongoDB会随着宝塔面板自动启动,所以无需在单独配置启动项。
- GraphicsMagick
yum install -y GraphicsMagick
二.Rocket Chat部署与启动
1.Rocket Chat部署
#下载rocket.chat
wget -O rocket.chat.tgz https://releases.rocket.chat/latest/download
#解压并删除
tar -xzf rocket.chat.tgz && rm -rf rocket.chat.tgz
#移动到/opt并重命名
mv bundle /opt/Rocket.Chat
#安装依赖
cd /opt/Rocket.Chat
npm install -g inherits
cd programs/server
npm install
2.配置Rocket Chat服务并启动
ln -sf $(command -v node) /usr/bin/node
#新建rocketchat用户并授权
useradd -M rocketchat && usermod -L rocketchat
chown -R rocketchat:rocketchat /opt/Rocket.Chat
#新建systemd配置文件,将以下代码一起复制到SSH运行
cat > /etc/systemd/system/rocketchat.service <<EOF
[Unit]
Description=Rocket.Chat
After=network.target
Wants=network.target
[Service]
ExecStart=$(command -v node) main.js
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=rocketchat
User=rocketchat
WorkingDirectory=/opt/Rocket.Chat
Environment=MONGO_URL=mongodb://127.0.0.1:27017/rocketchat?replicaSet=rs01 MONGO_OPLOG_URL=mongodb://127.0.0.1:27017/local?replicaSet=rs01 ROOT_URL=http://127.0.0.1:3000/ PORT=3000
Type=simple
Restart=on-failure
RestartSec=42s
[Install]
WantedBy=multi-user.target
EOF
启动Rocket Chat服务:
#低配机器启动会比较缓慢,请耐心等待一会
systemctl start rocketchat
查看Rocket Chat服务运行状态:
systemctl status rocketchat
设置Rocket Chat为开机自动启动:
systemctl enable rocketchat
之后访问vps_ip:3000
,记得在宝塔面板的安全设置中开放3000
端口,如果想用域名访问,不需要开启,继续看下面的反代教程。
三.配置反向代理
如果想搭配域名使用80
、443
端口访问,并且配置SSL的话可以使用Nginx自带的反向代理
功能。虽然宝塔的建站面板中附带有反向代理的设置,但是这里不太适合,我们选择直接修改Nginx对应站点的配置文件
。
首先在宝塔面板的网站面板
中新建一个网站,域名设置为Rocket Chat想要反代使用的域名。之后打开该网站的设置页面,选择配置文件
选项,将如下内容加入至server
块中,注意添加的位置不要破坏其他配置内容。
location ~ ^/.* {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header X-Forward-Proto http;
proxy_set_header X-Nginx-Proxy true;
proxy_http_version 1.1;
proxy_redirect off;
}
点击保存后,再点击SSL
,申请免费的Let's Encrypt
证书,并强制HTTPS
就大功告成了。之后进入Rocket Chat设置中记得将站点域名改成反代所使用的域名,不然邮件链接与一些转跳链接的生成会出现问题。
官方安装教程与使用教程
安装教程:https://docs.rocket.chat/installation/manual-installation/centos
使用教程:https://docs.rocket.chat/
教程可能没用了,到了数据库那边启动就报错
about to fork child process, waiting until server is ready for connections.
forked process: 29703
ERROR: child process failed, exited with 100
To see additional information in this output, start without the "--fork" option.
无解
这个教程是我当时排雷重新搭建之后立马写的,应该不至于失效的这么快吧。等过几天我去找台吃灰的服务器重新弄一下试试。