用nginx和letsencrypt 在Ubuntu 16.04上安装Rocket.Chat
本教程将介绍在Ubuntu 16.04上安装Rocket.chat的步骤。
Rocket.Chat是一种使用Meteor Web框架构建的开源消息应用程序。
Rocket.Chat具有以下功能:视频会议Voice MessagesFile共享特色API
Rocket.Chat是Hipchat和Slack聊天平台的替代方案,适用于愿意完全控制他们的通信 - 语音,视频和文件共享。
在Ubuntu 16.04上安装Rocket.Chat
我们的Rocket.Chat安装将由Letsencrypt提供的Nginx Web服务器和SSL。
所以我们首先在我们设置Rocket.chat之前安装依赖项。
在Ubuntu 16.04上安装nginx和certbot-auto
让我们安装Nginx和Certbot客户端,我们将用于主机Rocket.chat。
我们还将使用UFW防火墙来保护我们的应用程序
$sudo apt-get install nginx ufw g++ build-essential
使用以下命令安装CERTBOT-AUTO。
# wget https://dl.eff.org/certbot-auto -P /usr/local/bin # chmod a+x /usr/local/bin/certbot-auto
我假设我们有一个子域,我们将在nginx上使用Nginx来服务Rocket.Chat应用程序。
请求Letsencrypt SSL证书与Rocket.chat一起使用。
要获取LetSencrypt证书,我们使用该命令。
# export DOMAIN="chat.domain.com" # export EMAIL_ALERT="Hyman@theitroad" # /usr/local/bin/certbot-auto certonly --standalone -d $DOMAIN \ --preferred-challenges http --agree-tos -n -m $EMAIL_ALERT --keep-until-expiring
请记住将Chat.Domain.com与Rocket.chat和Hyman @ OniTor中的有效域/子域替换为Rocket.Chat @ OniTor,以便在SSL即将到期时接收警报。
成功的SSL生成应导致如下所示的消息:
IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/chat.domain.com/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/chat.domain.com/privkey.pem Your cert will expire on 2016-07-04. To obtain a new or tweaked version of this certificate in the future, simply run certbot-auto again. To non-interactively renew *all* of your certificates, run "certbot-auto renew" - If you like Certbot, please consider supporting our work by: Donating to ISRG/Let's Encrypt: https://letsencrypt.org/donate Donating to EFF: https://eff.org/donate-le
chat.domain.com是真实域或者子域。
在Ubuntu上安装MongoDB 16.04
Rocket.Chat使用MongoDB存储其数据。
使用以下命令将其安装在Ubuntu上。
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 2930ADAE8CAF5059EE73BB4B58712A2291FA4AD5 echo "deb [ arch=amd64 ] https://repo.mongodb.org/apt/ubuntu precise/mongodb-org/3.6 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.6.list sudo apt-get update sudo apt-get install -y mongodb-org curl
设置MongoDB副本集
Rocket.Chat使用MongoDB Replica可选择通过Meteor Oplog Tailing来提高性能。
使用yaml语法编辑文件/etc/mongod.conf。
replication: replSetName: "001-rs"
我们需要重新启动MongoDB服务:
# systemctl restart mongod # systemctl enable mongod
启动MongoDB shell并启动副本集:
# mongo > rs.initiate()
我们应该如下所示的
{ "info2" : "no configuration specified. Using a default configuration for the set", "me" : "127.0.0.1:27017", "ok" : 1, "operationTime" : Timestamp(1522961588, 1), "$clusterTime" : { "clusterTime" : Timestamp(1522961588, 1), "signature" : { "hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="), "keyId" : NumberLong(0) } } }
注意"确定"值应该是1.任何其他值,例如:93,意味着出现问题
将Rocket.chat添加以下环境变量为~/.bashrc添加
export MONGO_OPLOG_URL=mongodb://localhost:27017/local?replicaSet=001-rs
现在来源文件:
# source ~/.bashrc
在Ubuntu 16.04上安装GraphicsMagick
GraphicsMagick是一种强大的工具和库集合,用于读取,写入和操纵图像中的任何一种更流行的图像格式,包括GIF,JPEG,PNG,PDF和WebP。
$sudo apt-get install graphicsmagick
在Ubuntu 16.04上安装node.js
使用以下教程在Ubuntu 16.04上安装Node.js:
在CentOS 7/Ubuntu 16.04/Arch Linux/MacOS上安装Node.js
安装Rocket.chat.
现在下载稳定版本的Rocket.Chat:
# curl -L https://releases.rocket.chat/latest/download -o rocket.chat.tgz
然后untar二进制版本:
# tar zxvf rocket.chat.tgz
这会将所有内容扩展到Bundle目录中。
接下来,确保MongoDB服务器已启动并运行。
然后,设置环境变量并运行ROCKET.CHAT服务器:
mv bundle Rocket.Chat cd Rocket.Chat/programs/server npm install cd ../.. export ROOT_URL=http://localhost:3000/ export PORT=3000 export MONGO_URL=mongodb://localhost:27017/rocketchat?replicaSet=001-rs
现在,我们可以使用以下命令运行Rocket.chat:
$sudo node main.js
使用SSL配置nginx
我们现在需要为Rocket.chat服务配置nginx。
将以下内容添加到文件/etc/nginx/conf.d/rocker-chat.conf中
# Upstream definition upstream backend { server 127.0.0.1:3000; } # http to https redirection server { listen 80; server_name chat.domain.com; rewrite ^ https://$server_name$request_uri? permanent; } # HTTPS Server server { listen 443; server_name chat.domain.com; error_log /var/log/nginx/rocket-chat.access.log; ssl on; ssl_certificate /etc/letsencrypt/live/chat.domain.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/chat.domain.com/privkey.pem; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # don’t use SSLv3 ref: POODLE location/{ proxy_pass http://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; } }
将Rocket.chat配置为服务
要使Rocker.chat启动服务器启动,我们需要永远使用它。
Forever NPM软件包提供Forever-Service,它会自动生成用于Rocket.chat等节点应用程序的Init脚本。
使用命令安装永远:
$sudo npm install -g forever
然后,安装Forever-Service。
$sudo npm install -g forever-service
现在使用Forever-Service创建服务:
# forever-service install -s main.js -e "ROOT_URL=https://localhost/\ MONGO_URL=mongodb://localhost:27017/rocketchat?replicaSet=001-rs PORT=3000" rocket-chat
-s指定脚本名称,在这种情况下是main.js -e之后是环境变量我们使用的是火箭聊天是我们正在创建的服务名称
我们应该如下所示的
Platform - Ubuntu 16.04 LTS rocket-chat provisioned successfully Commands to interact with service rocket-chat Start - "sudo service rocket-chat start" Stop - "sudo service rocket-chat stop" Status - "sudo service rocket-chat status" Restart - "sudo service rocket-chat restart"″ message=
现在我们可以开始火箭。
这将初始化由Forever-Service创建的火箭聊天服务。
$sudo service rocket-chat start
要检查状态,请使用:
$sudo service rocket-chat status