Rocket.Chat 开源IM系统部署

news/2024/7/7 21:18:12

Rocket.Chat


官方给出的文档也个人觉得太麻烦了,并且对ubuntu的支持程度远高于CentOS,自己就折腾写了个安装的笔记,如果是在公司内部或者是部门内部还是很有用处的,比较看中的功能有和gitlab或github的整合,以及注册认证和消息邮件外发

官方文档:https://rocket.chat/docs/installation/manual-installation/centos/

环境依赖

  • CentOS6.5
  • Nginx
  • Mongodb v2

安装步骤

  • 安装Mongodb
vim /etc/yum.repos.d/mongodb.repo

写入以下内容

[mongodb-org]
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

Run

yum -y install epel-release curl GraphicsMagick npm mongodb-org-server mongodb-org gcc-c++

提前配置数据库

mongo
>use rocketchat     //添加数据库
>exit
service mongod restart
  • 安装node.js

这里就按照官方给出的文档安装了,那个有点麻烦

curl --silent --location https://rpm.nodesource.com/setup_8.x | bash -
yum -y install nodejs
  • 安装Rocket.Chat
cd /opt

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

mv bundle Rocket.Chat
cd Rocket.Chat/programs/server

npm install

cd ../..

配置 PORT, ROOT_URL and MONGO_URL:

export PORT=3000
export ROOT_URL=http://your-host-name.com-as-accessed-from-internet:3000/
export MONGO_URL=mongodb://localhost:27017/rocketchat

启动服务

service mongod restart && chkconfig mongod on
service nginx start && chkconfig nginx on
  • 启动服务
node main.js

现在就能登录http://your-host-name.com-as-accessed-from-internet:3000/进行访问了

配置Nginx+SSL代理

  • 安装nginx
yum -y install nginx
  • 配置Nginx

创建自签证书

首先,创建证书和私钥的目录
# mkdir -p /etc/nginx/cert
# cd /etc/nginx/cert
创建服务器私钥,命令会让你输入一个口令:
# openssl genrsa -des3 -out nginx.key 2048
创建签名请求的证书(CSR):
# openssl req -new -key nginx.key -out nginx.csr
在加载SSL支持的Nginx并使用上述私钥时除去必须的口令:
# cp nginx.key nginx.key.org
# openssl rsa -in nginx.key.org -out nginx.key
最后标记证书使用上述私钥和CSR:
# openssl x509 -req -days 365 -in nginx.csr -signkey nginx.key -out nginx.crt

配置rocketchat.conf

vim /etc/nginx/nginx.d/rocketchat.conf
注意将默认的default.conf删除掉,不然影响80端口

server {
  listen 80;
  server_name im.mydomain.com;
  return 301 https://$host$request_uri;
}

# HTTPS Server
server {
    listen 443;
    server_name im.mydomain.com;
    error_log off;

    ssl on;
    ssl_certificate /etc/nginx/cert/nginx.crt;
    ssl_certificate_key /etc/nginx/cert/nginx.key;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

    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 $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;
    }
}

Auto Start Rocket.Chat

  • CentOS7

CentOS7下推荐如下配置,添加一个服务项:

[Unit]
  Description=The Rocket.Chat server
  After=network.target remote-fs.target nss-lookup.target nginx.target mongod.target
  [Service]
  ExecStart=/usr/local/bin/node /opt/Rocket.Chat/main.js
  StandardOutput=syslog
  StandardError=syslog
  SyslogIdentifier=rocketchat
  User=root
  Environment=MONGO_URL=mongodb://localhost:27017/rocketchat ROOT_URL=http://your-host-name.com-as-accessed-from-internet:3000/ PORT=3000
  [Install]
  WantedBy=multi-user.target

Now you can enable this service by running:

systemctl enable rocketchat.service
systemctl start  rocketchat.service
  • CentOS6

CentOS6下推荐使用Supervisor服务,需要我们写个脚本来自动执行,这样的话就能免去很多步骤

安装supervisor

yum install supervisor

编辑脚本并添加执行全权限

vim /opt/Rocket.Chat/start.sh
chmod +x /opt/Rocket.Chat/start.sh
脚本内容如下

#/bin/bash
cd /opt/Rocket.Chat/
export PORT=3000
export ROOT_URL=http://your-host-name.com-as-accessed-from-internet:3000/    //根据自己的环境修改配置
export MONGO_URL=mongodb://localhost:27017/rocketchat
node /opt/Rocket.Chat/main.js

配置supervisord服务

vim /etc/supervisord.conf

在最后添加一下内容

[program:rocketchat]
command=bash /opt/Rocket.Chat/start.sh
directory=/opt/Rocket.Chat
autostart=true
autorestart=true
logfile=/var/log/supervisor/rocketchat.log
log_stderr=true
user=root

启动supervisord

service supervisord start && chkconfig supervisord on

此时rocket也就一起起来了

转载于:https://www.cnblogs.com/tchroot/p/7616922.html


http://www.niftyadmin.cn/n/2828638.html

相关文章

MongoDB学习笔记(二)--Capped集合 GridFS存储文件

Capped集合 Capped集合的大小是固定的,如果空间都被用完了,新添加的对象会取代最旧的那个数据。 创建使用了db.createCollection()方法创建了一个名字为mycapped,空间大小为1000…

unity开发相关环境(vs、MonoDevelop)windows平台编码问题

情景描述:最近在做Unity的网络底层,用VS编写源码,MonoDevelop用来Debug,在Flash Builder上搭建的Python做协议生成器,期间有无数次Unity莫名奇妙的的down掉了,然后仔细分析了一下: 1、unity会爆…

基于Linq to edmx的实体数据模型(EDM)类名批量修改工具

C#实体数据模型(EDM)类名批量修改工具 最近打算用EF来开发一下新的系统,但是数据库中的表名被直接映射为了实体类名,但是我的表名为Base_XXX(XXX为表名)的格式,这导致我在操作数据的时候不得不写如下的代码: UserCenterEntities dataBase newUserCenterEntities();//获取所有用…

阿里云推出国内首个社保云系统

本文讲的是阿里云推出国内首个社保云系统,1月14日消息,国内首个“人社一体化信息系统”在阿里云平台上诞生。该系统包括浙江省淳安县社会保险、就业、执法、仲裁等几十个政府业务系统,承载着全县45万人的社会保险信息以及超过3000家的参保单位…

php判断是不是文件夹,php怎么判断是文件还是文件夹

php判断是文件还是文件夹的方法:首先利用is_dir()函数判断指定的文件是否是一个文件夹,如果是则返回true;然后利用is_file()函数判断指定的文件是否是常规的文件,如果是则返回true。is_dir() 函数检查指定的文件是否是一个目录。如…

40. combo的displayField和valueField属性

转自:https://xsl2007.iteye.com/blog/773464 下拉框combo可以设置displayField和valueField属性,这两个值值相当于Java中的map,一个键一个值,displayField是下拉框中显示的值,valueField是隐藏的一个值,也…

qt5.4 windows qtcreator 开启时崩溃

2019独角兽企业重金招聘Python工程师标准>>> http://forum.qt.io/topic/42047/cannot-run-application-written-with-qt5-3-and-qml-in-win7-x86 http://forum.qt.io/topic/48742/creator-3-3-crash-on-startup-qt-5-4 http://stackoverflow.com/questions/211273…

「科普」几十部以程序员为主角的影片

不得不说现在有些些电视剧/电影都给咱们程序员长脸了,但是万万没想到程序员当主角的影片这么多,今天先不说国内的,来看看国外的:硅谷(四季)美国这是一部讲述程序员转型创业的故事。发生在美国硅谷&#xff…