- 記事一覧 >
- ブログ記事
CentOS8にRocket.Chatをインストール
はじめに
Rocket.Chatとは、オープンソースのビジネスチャットシステムです。
Node.js(JavaScript)とMeteorフレームワークで作られています。
MIT Licenseで、GitHubにソースコードが公開されています。
SaaS(クラウド)にも対応しています。
そちらは、現時点で2 USD~です。
オンプレミス(自前サーバーで運用)の場合、MIT Licenseですので、無料です。
ということで、さっそく、自前のCentOSサーバーにインストールしてみようと思います。
ソースコードを触る可能性がゼロではないため、Dockerを使わず、ビルドチャレンジになります。
インストール環境:CentOS Linux release 8.3.2011 (VMware上、インターネット接続あり)
【2023年11月更新】
この手順では、
node v14 からしか対応しなくなったため、
Rocket.Chat v3.13.3(ブログ投稿当時のバージョン)をインストールします。
2023年11月現在、v6.4.5まで来ています。
インストール準備
root権限で作業していますので、全てsudoは省略しています。
リポジトリを書き換えます。
# sed -i -e 's/^mirrorlist/#mirrorlist/g' -e 's/^#baseurl=http:\/\/mirror/baseurl=http:\/\/vault/g' /etc/yum.repos.d/CentOS-*repo
【2023年11月更新】
リポジトリが存在せず、
yum -y check-update
でエラーになることが確認されたため、上記手順を追加しました。
アップデート可能なパッケージを調査します。
# yum -y check-update
たくさん表示されたので、yum updateを行いました。
# yum update
mongodbのyumリポジトリ情報を追加します。
# vi /etc/yum.repos.d/mongodb-org.repo
[mongodb-org-4.2]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.2/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.2.asc
node, mongodb インストール
curlをインストールして、そのままNode.jsのリポジトリをインストールします。
# yum install -y curl && curl -sL https://rpm.nodesource.com/setup_12.x | bash -
curl -sL https://rpm.nodesource.com/setup_12.x | bash -
の意味ですが、
まず、
curl -sL https://rpm.nodesource.com/setup_12.x から得られるのは、シェルスクリプトの内容です。
これがパイプを介して、 - に渡り、- (標準出力内容)がシェルスクリプトファイルのような役割になり、
bash [シェルスクリプト]
と実行しています。
# curl -sL https://rpm.nodesource.com/setup_12.x > hoge.sh
# bash hoge.sh
と同じ意味です。
curlのオプションの意味は、以下です。
-L : レスポンスにリダイレクトの指示があったらリダイレクトする。
-s : エラーやプログレス表示をしない(取りに行った情報以外何も表示しない。)
https://rpm.nodesource.com/setup_12.x
から得られるシェルスクリプトは、けっこう長いです。
#!/bin/bash
# Discussion, issues and change requests at:
# https://github.com/nodesource/distributions
#
# Script to install the NodeSource Node.js 12.x repo onto an
# Enterprise Linux or Fedora Core based system.
#
# Run as root or insert `sudo -E` before `bash`:
#
(略)
gcc-c++、make、mongodb(クライアント、サーバー)、node、npm をインストールします。
# yum install -y gcc-c++ make mongodb-org nodejs
yarnをインストールします。※特に必須ではありませんが、一応。
# curl -sL https://dl.yarnpkg.com/rpm/yarn.repo | tee /etc/yum.repos.d/yarn.repo
# yum install -y yarn
yarnはnpmの互換ツールです。yarn,npmの説明はここでは割愛します。
バージョン確認
バージョンを確認します。
【2023年11月更新】
2023年11月現在確認したバージョンです。
# mongo -version
MongoDB shell version v4.2.24
git version: 5e4ec1d24431fcdd28b579a024c5c801b8cde4e2
OpenSSL version: OpenSSL 1.1.1k FIPS 25 Mar 2021
allocator: tcmalloc
modules: none
build environment:
distmod: rhel80
distarch: x86_64
target_arch: x86_64
# node -v
v12.22.12
# npm -v
6.14.16
# npm -v
6.14.18
# yarn -v
1.22.19
Rocket.Chat インストール
サードパーティ製のリポジトリepel-releaseと画像処理ライブラリGraphicsMagickをインストールします。
# yum install -y epel-release
# yum install -y GraphicsMagick
Rocket.Chatをインストールします。
【2023年11月更新】
ブログ投稿当時は、
# curl -L https://releases.rocket.chat/latest/download -o /tmp/rocket.chat.tgz
という手順でしたが、
Rocket.Chat v3.13.3(ブログ投稿当時のバージョン)をインストールするため、修正しました。
# curl -L https://releases.rocket.chat/3.13.3/download -o /tmp/rocket.chat.tgz
# tar -xzf /tmp/rocket.chat.tgz -C /tmp
# cd /tmp/bundle/programs/server && npm install
# mv /tmp/bundle /opt/Rocket.Chat
# useradd -M rocketchat && usermod -L rocketchat
# chown -R rocketchat:rocketchat /opt/Rocket.Chat
useraddコマンド:
-M:--no-create-homeの省略形。ユーザーのホームディレクトリを作成しない。
-L:ユーザーをロックし、使用できなくする。
mongodb, Rocket.Chat 起動
# vi /lib/systemd/system/rocketchat.service
[Unit]
Description=The Rocket.Chat server
After=network.target remote-fs.target nss-lookup.target nginx.service mongod.service
[Service]
ExecStart=/usr/local/bin/node /opt/Rocket.Chat/main.js
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=rocketchat
User=rocketchat
Environment=MONGO_URL=mongodb://localhost:27017/rocketchat?replicaSet=rs01 MONGO_OPLOG_URL=mongodb://localhost:27017/local?replicaSet=rs01 ROOT_URL=http://localhost:3000/ PORT=3000
[Install]
WantedBy=multi-user.target
nodeコマンドの位置を確認します。
# which node
/usr/bin/node
node [main.jsファイル]で起動するのですが、nodeの位置が違うため、修正します。
また、今回は、ブラウザから http://chat.itccorporation.jp:3000 でアクセスしたいため、ROOT_URLを修正します。
# vi /usr/lib/systemd/system/rocketchat.service
ExecStart=/usr/local/bin/node /opt/Rocket.Chat/main.js
↓
ExecStart=/usr/bin/node /opt/Rocket.Chat/main.js
ROOT_URL=http://localhost:3000
↓
ROOT_URL=http://chat.itccorporation.jp:3000
# sed -i "s/^#replication:/replication:\n replSetName: rs01/" /etc/mongod.conf
MongoDB の レプリカセット(レプリケーション)を設定しています。ただし、プライマリ1台です。何でこれを行っているかと言いますと、Rocket.Chatの公式サイトには、以下の説明があります。
「Rocket.Chat uses the MongoDB replica set to improve performance via Meteor Oplog tailing.」
⇒Meteor Oplog tailingにより、パフォーマンスを向上させるため。
以上。
で先に進もうかと思いましたが、一つずつ、紐解いてみました。
Oplog = オペレーションログ(プライマリで起きたことをセカンダリに伝える情報)PostgreSQLのWALみたいなものです。(あくまでイメージ)
Meteor = フレームワークですが、ここでは、Oplogを監視する仕組み
tailing = tail -f access_log のようにずっと見ていること
データの差分を把握するよりもOplogをリアルタイム監視した方がレスポンスが速いからこの設定が必要というわけですね。
公式サイトのCentOS7の手順によりますと、
# sed -i "s/^# engine:/ engine: mmapv1/" /etc/mongod.conf
の手順で、ストレージエンジンをmmapv1にする手順がありますが、これは不要でした。
MMAPv1 ストレージエンジンは、メモリとディスクを駆使して、データの読み書きを担当するプログラムです。MongoDB 4.2から廃止されて、WiredTigerストレージエンジンになりました。WiredTiger(標準設定)の方が優れているようです。
# systemctl enable mongod
# systemctl start mongod
# mongo --eval "printjson(rs.initiate())"
MongoDB shell version v4.2.13
connecting to: mongodb://127.0.0.1:27017/?gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("dc0e6888-0f2f-4135-93c4-29d257deac42") }
MongoDB server version: 4.2.13
{
"info2" : "no configuration specified. Using a default configuration for the set",
"me" : "127.0.0.1:27017",
"ok" : 1
}
"ok" : 1 となっていれば、問題無しです。
# systemctl enable rocketchat
# systemctl start rocketchat
ブラウザアクセス
地味にハマりますが、ファイアウォール有りで、外から見る場合、3000ポートを開ける必要があります。
# firewall-cmd --zone=public --add-port=3000/tcp --permanent
# firewall-cmd --reload
http://chat.itccorporation.jp:3000 へブラウザでアクセス
最初は、管理者アカウントの登録画面になります。
できました!
その他、宣伝、誹謗中傷等、当方が不適切と判断した書き込みは、理由の如何を問わず、投稿者に断りなく削除します。
書き込み内容について、一切の責任を負いません。
このコメント機能は、予告無く廃止する可能性があります。ご了承ください。
コメントの削除をご依頼の場合はTwitterのDM等でご連絡ください。