本文介绍使用Nginx和Letsencrypt的方法在Ubuntu 16.04系统上安装Rocket.Chat。它是一个使用Meteor Web框架构建的开源消息传递应用程序,具有视频会议、语音留言、文件共享、功能齐全的API功能,是Hipchat和Slack Chat平台的替代品,适合那些喜欢完全控制其通信的人,比如语音、视频和文件共享。我们安装的Rocket.Chat将使用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上使用子域来为具有有效DNS记录的Rocket.Chat应用程序提供服务。
请求使用Letsencrypt SSL证书与Rocket.Chat一起使用 要获得Letsencrypt证书,我们使用该命令: # export DOMAIN="chat.domain.com" # export EMAIL_ALERT="admin@domain.com" # /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和admin@domain.com的有效域/子域,并使用电子邮件地址在SSL即将到期时接收警报。 成功的ssl生成应该会有下图的信息输出:
chat.domain.com是你的真实域名或子域名。
在Ubuntu 16.04上安装MongoDB 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 参考:在Ubuntu 18.04/16.04系统中安装MongoDB的方法。 安装MongoDB Replica Set: Rocket.Chat使用MongoDB replica set OPTIONALLY通过Meteor Oplog尾部提高性能,使用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) } } } 注意“ok”值应为1,任何其他值,即93,表示出错。 将Rocket.Chat的以下环境变量添加到~/.bashrc(参考:什么是bashrc配置文件,如何对其进行编辑): export MONGO_OPLOG_URL=mongodb://localhost:27017/local?replicaSet=001-rs 然后执行: # source ~/.bashrc
在Ubuntu 16.04上安装graphicsmagick及Node.js GraphicsMagick是一个强大的工具和库集合,用于以任何更流行的图像格式(包括GIF、JPEG、PNG、PDF和WebP)读取,写入和操作图像,运行以下命令: $ sudo apt-get install graphicsmagick 关于在Ubuntu 16.04上安装Node.js,可以参考文章:Ubuntu 16.04安装Node.js。
安装Rocket.Chat的方法 下载地址可以看:https://ywnz.com/linuxrj/3692.html 现在下载Rocket.Chat的稳定版本: # curl -L https://releases.rocket.chat/latest/download -o rocket.chat.tgz 然后解压二进制版本: # tar zxvf rocket.chat.tgz 这会将所有内容扩展到捆绑目录中,接下来,确保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 参考画面截图:
注:在Ubuntu下使用snap安装命令,支持Ubuntu 18.04等版本: sudo snap install rocketchat-server
使用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; } }
forever配置Rocket.Chat服务 为了让Rocker.Chat在服务器启动时启动,我们需要forever配置它,npm包提供forever-service,自动生成节点应用程序的初始脚本,如Rocket.Chat。 使用以下命令安装forever: $ 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之后是我们正在使用的环境变量。 rocket-chat是我们正在创建的服务名称。 你应该得到这样的输出: 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" 现在我们可以启动Rocket.Chat,这将初始化由forever-service创建的rocket-chat service: $ sudo service rocket-chat start 要检查状态,请使用: $ sudo service rocket-chat status
相关主题 |