前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何在Ubuntu 14.04上安装,配置和部署Rocket.Chat

如何在Ubuntu 14.04上安装,配置和部署Rocket.Chat

原创
作者头像
灬半痴
修改2018-10-22 12:01:51
2.5K0
修改2018-10-22 12:01:51
举报

介绍

Rocket.Chat是一个使用Meteor构建的开源消息应用程序。它支持视频会议,文件共享,语音消息,具有功能齐全的API等。Rocket.Chat非常适合那些喜欢完全控制通信的人。

在本教程中,我们将在新的Ubuntu服务器上安装和配置Rocket.Chat,并通过Nginx设置反向代理以提高安全性并使访问Rocket.Chat更加容易。一旦我们完成,你将拥有一个Rocket的功能实例。几乎可以从任何地方访问。

准备

要学习本教程,您需要:

  • 一台已经设置好可以使用sudo命令的非root账号的Ubuntu服务器(Ubuntu 14.04服务器,建议最小1 GB的RAM),并且已开启防火墙。没有服务器的同学可以在这里购买,不过我个人更推荐您使用免费的腾讯云开发者实验室进行试验,学会安装后再购买服务器
  • 完全注册的域名。如果你没有域名,建议您先去这里注册一个域名
  • 确保您的域名配置为指向您的服务器。
  • SSL证书。如果你有域名,保护你网站的最简单方法是使用腾讯云SSL证书服务,它提供免费的可信证书。腾讯云SSL证书安装操作指南进行设置。如果你没有域名,建议您先去这里注册一个域名,如果你只是使用此配置进行测试或个人使用,则可以使用自签名证书,不需要购买域名。自签名证书提供了相同类型的加密,但没有域名验证公告。关于自签名证书,你可以参考为Apache创建自签名SSL证书如何为Nginx创建自签名SSL证书这两篇文章。

第1步 - 安装依赖项

在本节中,我们将安装一些Rocket.Chat的依赖项,例如MongoDB和NodeJS。

让我们从启动并运行MongoDB开始吧。首先,我们需要添加一个密钥服务器,以便我们可以访问这些包。

代码语言:javascript
复制
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10

然后我们需要设置repo来使用。

代码语言:javascript
复制
echo "deb http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.0.list

现在,更新包列表。

代码语言:javascript
复制
sudo apt-get update

既然这样做了,我们可以继续安装npmmongodb-orgcurlgraphicsmagick,这是Rocket.Chat的所有依存关系:

代码语言:javascript
复制
sudo apt-get install npm mongodb-org curl graphicsmagick

我们需要使用NPM安装包以允许我们更改节点版本:

代码语言:javascript
复制
sudo npm install -g n

使用该程序包将节点版本更改为0.10.40

代码语言:javascript
复制
sudo n 0.10.40

接下来,我们将安装Rocket.Chat本身并进行一些配置。

第2步 - 安装Rocket.Chat

首先,使用curl下载最新稳定版的Rocket.Chat 。

代码语言:javascript
复制
curl -L https://rocket.chat/releases/latest/download -o rocket.chat.tgz

使用该tar命令展开我们刚刚下载的存档。

代码语言:javascript
复制
tar zxvf rocket.chat.tgz

这会将整个存档扩展为名为的目录bundle。让我们将bundle目录的内容移动到更容易记住的地方。

代码语言:javascript
复制
mv bundle Rocket.Chat

转到我们将使用NPM安装Rocket.Chat的目录。

代码语言:javascript
复制
cd Rocket.Chat/programs/server

安装Rocket.Chat。

代码语言:javascript
复制
npm install

回到上级Rocket.Chat目录。

代码语言:javascript
复制
cd ../..

我们需要设置一些环境变量来帮助Rocket.Chat跟踪URL,端口等内容。

首先,将ROOT_URL变量设置为您的域名。这必须是URL的形式。

代码语言:javascript
复制
export ROOT_URL=https://example.com/

MONGO_URL变量下设置MongoDB的URL 。

代码语言:javascript
复制
export MONGO_URL=mongodb://localhost:27017/rocketchat

PORT变量设置为3000

代码语言:javascript
复制
export PORT=3000

现在您可以使用以下命令运行Rocket.Chat:

代码语言:javascript
复制
node main.js

如果没有任何错误,它就可以了!但是现在, 用CTRL+C停止Rocket.Chat。现在安装了Rocket.Chat,我们需要设置Nginx以使用反向代理代理其所有流量,从而更轻松地访问Rocket.Chat并使用您的SSL证书加密所有通信。

第3步 - 使用Nginx设置反向代理

首先,安装Nginx。

代码语言:javascript
复制
sudo apt-get install -y nginx

将证书的私钥移动到/etc/nginx/certificate.key

代码语言:javascript
复制
sudo cp /path/to/your/key /etc/nginx/certificate.key

例如,如果您创建了Let's Encrypt证书,则可以使用sudo cp /etc/letsencrypt/live/your_domain_name/privkey.pem /etc/nginx/certificate.key

修改密钥的权限,以便未经授权的窃贼无法访问。

代码语言:javascript
复制
sudo chmod 400 /etc/nginx/certificate.key

将证书本身复制到/etc/nginx/certificate.crt

代码语言:javascript
复制
sudo cp /path/to/your/cert /etc/nginx/certificate.crt

如果您创建了Let's Encrypt证书,则命令类似于sudo cp /etc/letsencrypt/live/your_domain_name/cert.pem /etc/nginx/certificate.crt

我们将为Rocket.Chat创建一个全新的配置,因此您可以删除默认设置以使其更容易一些。

代码语言:javascript
复制
sudo rm /etc/nginx/sites-enabled/default

如果您将来因任何原因需要该文件,它仍然可以用nano或您喜欢的文本编辑器在 /etc/nginx/sites-available/default

创建一个新/etc/nginx/sites-enabled/default

代码语言:javascript
复制
sudo nano /etc/nginx/sites-enabled/default

首先,我们将添加一个upstream块:

代码语言:javascript
复制
# Upstreams
upstream backend {
    server 127.0.0.1:3000;
}

在下面,让我们创建一个server块。第一部分告诉Nginx在这种情况下监听连接的端口:443。它还让我们知道我们的主机名是什么。不要忘记替换example.com为您的域名。

代码语言:javascript
复制
server {
    listen 443;
    server_name example.com;

在这一点,我们告诉Nginx的在哪里存储Rocket.Chat的访问日志,并将其分别指向我们放置在/etc/nginx/certificate.key/etc/nginx/certificate.crt的SSL证书和密钥。

代码语言:javascript
复制
    error_log /var/log/nginx/rocketchat.access.log;
​
    ssl on;
    ssl_certificate /etc/nginx/certificate.crt;
    ssl_certificate_key /etc/nginx/certificate.key;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # don’t use SSLv3 ref: POODLE

现在我们用一个location块完成配置:

代码语言:javascript
复制
    location / {
        proxy_pass http://example.com: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;
    }
}

这是完整的参考文件:

代码语言:javascript
复制
server {
    listen 443;
    server_name example.com;
    error_log /var/log/nginx/rocketchat.access.log;
​
    ssl on;
    ssl_certificate /etc/nginx/certificate.crt;
    ssl_certificate_key /etc/nginx/certificate.key;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # don’t use SSLv3 ref: POODLE
​
    location / {
        proxy_pass http://example.com: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;
    }
}

保存并退出该文件。最后,重启Nginx以完成工作。

代码语言:javascript
复制
sudo service nginx restart

检查Nginx是否正在运行。

代码语言:javascript
复制
sudo service nginx status

如果您看到以下消息,则Nginx已启动并正在运行:

代码语言:javascript
复制
 * nginx is running

如果看到错误消息,请检查日志/var/log/nginx/rocketchat.access.log和/ /var/log/nginx/access.log或错误日志/var/log/nginx/error.log。您还可以运行nginx -t以验证您的Nginx配置文件,这是大多数错误显示的位置。

确保您仍在Rocket.Chat文件夹中。

代码语言:javascript
复制
cd ~/Rocket.Chat

然后运行以下命令启动Rocket.Chat再次备份。

代码语言:javascript
复制
node main.js

Rocket.Chat现在应该可以在https://example.com中使用了。您可以通过在您喜欢的浏览器中访问该地址来验证这一点。

在下一节中,我们将使用名为的节点模块将Rocket.Chat配置为在引导时自动运行forever-service

第4步 - 配置Rocket.Chat即服务

forever-service自动为节点应用程序(如Rocket.Chat)生成初始化脚本。首先,我们需要安装forever自己,forever-service取决于它。

代码语言:javascript
复制
sudo npm install -g forever

然后,安装forever-service

代码语言:javascript
复制
sudo npm install -g forever-service

使用forever-service方法创建服务

代码语言:javascript
复制
sudo forever-service install -s main.js -e "ROOT_URL=https://example.com/ MONGO_URL=mongodb://localhost:27017/rocketchat PORT=3000" rocketchat
  • -s后面跟着的标志main.js告诉我们的脚本永远是命名的main.js,而不是app.js默认的。
  • 随后有"ROOT_URL=https://example.com/ MONGO_URL=mongodb://localhost:27017/rocketchat PORT=3000"-e标志将我们的环境变量传递给永久服务。
  • 最后,rocketchat告诉永远服务命名服务的内容。

有关forever-service语法的更多详细信息,请运行forever-service --help

现在我们可以启动Rocket.Chat了。这将初始化由forever-service创建的rocketchat服务。

代码语言:javascript
复制
sudo start rocketchat

Rocket.Chat现在应该在你在步骤2中设置的URL上生效。确保你在这里使用HTTPS。

Rocket.Chat应该准备好了。在下一节中,我们将把我们的第一个管理员用户添加到Rocket.Chat并浏览界面。

第5步 - 配置和使用Rocket.Chat

访问我们之前设置的Rocket.Chat的URL。你应该看到这样的东西:

单击注册新帐户,然后输入第一个管理员的用户信息。

单击“ 提交”,然后为新用户选择用户名:

单击“ 使用此用户名”后,您将进入主页:

就这样!您将在右侧看到,已经为您创建了#general频道。如果你点击它,你将被带到聊天室。随意玩一下。

现在让我们来看看界面。首先,让我们继续点击Channels旁边的微小加号按钮创建一个新频道

把它命名为你想要的任何东西:

现在点击“ 保存”,您将进入新频道。

要访问管理界面,请单击用户名旁边的小箭头。它将下拉菜单:

单击“ 管理”。它将显示第二个菜单:

使用此菜单,我们可以配置和管理Rocket.Chat安装的各个方面。在“ 用户”部分,我们可以管理各个用户的权限,甚至可以邀请新用户。我们还可以使用“ 集成”视图为我们的安装添加更多功能。

结论

恭喜!现在,您和您的团队拥有自己的聊天解决方案:Rocket.Chat,在Ubuntu 14.04服务器上运行。它设置为用forever-service在启动时自动启动,并使用Nginx反向代理完全配备SSL。您现在可能想要添加更多成员,创建更多通道,或者可以查看“管理”菜单的“集成”部分。玩的开心!

更多Ubuntu教程请前往腾讯云+社区学习更多知识。

参考文献:《How To Install, Configure, and Deploy Rocket.Chat on Ubuntu 14.04》

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 介绍
    • 准备
      • 第1步 - 安装依赖项
        • 第2步 - 安装Rocket.Chat
          • 第3步 - 使用Nginx设置反向代理
            • 第4步 - 配置Rocket.Chat即服务
              • 第5步 - 配置和使用Rocket.Chat
                • 结论
                相关产品与服务
                SSL 证书
                腾讯云 SSL 证书(SSL Certificates)为您提供 SSL 证书的申请、管理、部署等服务,为您提供一站式 HTTPS 解决方案。
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档