在CentOS(EC2)上安装RocketChat,安装部分
的输入数据被认为是错误的。
· 我所属的公司使用的是Slack的免费版。
· 我想要切换到付费版(个人想法和愿望)。
· 但是考虑到Slack的使用方式和使用率,缺乏具体的说服材料来切换到付费版。
· 作为比较对象,Rocket.Chat被提到。
作业的前提条件
・我会在AWS环境下创建
・我在Route53上管理持有的域名的主机区域
・虽然我本希望在容器中进行,但是我没有把握能够稳定地操作,所以我选择直接安装在操作系统上。
粒度的記錄
只需提供一个选项:对于VPC和EC2的创建,我们不会深入讨论。
开始做作业
实例选择
最低要求
Single core (2 GHz)
1 GB RAM
30 GB of SSD
我的想法是:
・使用t3.micro实例(不使用无限制突发)
・如果不够用,稍后更改实例类型
・为了工作目的,附加EIP
・作为服务等待ALB的连接
事前准备
sudo su -
# パッケージ周りは最新に
yum update -y
# timeZoneは変えておく
timedatectl set-timezone Asia/Tokyo
# 検証だから一切悩まない(#2019/07/22 リンクを編集していたため実体に修正)
sed -i "s/SELINUX=enforcing/SELINUX=disable/g" /etc/selinux/config
reboot
从这里开始,我们将按照基本的步骤安装CentOS。
sudo su -
# mongoのrepoを追加する
cat << EOF | sudo tee -a /etc/yum.repos.d/mongodb-org-4.0.repo
[mongodb-org-4.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/7/mongodb-org/4.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.0.asc
EOF
# Node.jsのinstall準備ぽい
curl -sL https://rpm.nodesource.com/setup_8.x | bash
# コンパイラとmongoとNode.jsのinstall
yum install -y gcc-c++ mongodb-org nodejs
# epelのrepo追加とGraphicsMagickというものをinstallする
yum install -y epel-release && sudo yum install -y GraphicsMagick
# nodeのパケージマネージャ使ってinheritsとnというものを入れておるが全然わかんないな。
npm install -g inherits n && n 8.11.4
将RocketChat核心组件引入
sudo su -
# 多分install用であると思われるtargzの取得
curl -L https://releases.rocket.chat/latest/download -o /tmp/rocket.chat.tgz
# /tmpに展開
tar -xzf /tmp/rocket.chat.tgz -C /tmp
# ようやくinstall。ぎょうさんWARNIGが出るが見てないふり(ERRORじゃなきゃ焦らないしERRORでも諦めるから大丈夫)
cd /tmp/bundle/programs/server && npm install
# 多分Buildしたものをopt下に配置してるんだと思う
mv /tmp/bundle /opt/Rocket.Chat
# 実行ユーザの整理とかプロダクトのディレクトリの権限整理とか
useradd -M rocketchat && usermod -L rocketchat
chown -R rocketchat:rocketchat /opt/Rocket.Chat
# 自動起動スクリプト配置
# ここ自分だと/usr/libの方に置くんだけど、こういうものなのかとか少し悩む
cat << EOF | tee -a /lib/systemd/system/rocketchat.service
[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=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
EOF
# サービス全般設定
# 何番でmongoがlistenするかは知らないけど、多分DefaultPortなのだろう。
# ROOT_URLは直で受けないから、とりあえずそのままでもいいだろう。
# この辺はサービスあげてから再度見直し。
vi /usr/lib/systemd/system/rocketchat.service
====
MONGO_URL=mongodb://localhost:27017/rocketchat?replicaSet=rs01
MONGO_OPLOG_URL=mongodb://localhost:27017/local?replicaSet=rs01
ROOT_URL=http://your-host-name.com-as-accessed-from-internet:3000
PORT=3000
====
# mongoの設定ぽいけど何かはわからん。いやなんとなくはわかるよ、なんとなくは。
sed -i "s/^# engine:/ engine: mmapv1/" /etc/mongod.conf
sed -i "s/^#replication:/replication:\n replSetName: rs01/" /etc/mongod.conf
终于启动了
sudo su -
# monogの自動起動有効化と起動
systemctl enable mongod && systemctl start mongod
# 一応ポート確認
netstat -anp | grep mongo
# まじでわからん。調べてもない。だから成長しない。
mongo --eval "printjson(rs.initiate())"
# ようやく本体起動
systemctl enable rocketchat && systemctl start rocketchat
netstat -anp | grep node
让我们试着联系一下
请输入管理员信息等等。
输入各种内容,最后选择”保持独立”。
表示
将ALB嵌入并进行DNS注册和TLS安全化。
・在注册机上将NS定向到Route53
・通过CertificateManager生成服务器证书(DNS验证)
・通过ALB将TCP:3000导入EC2的SG以接收
・创建ALB,从ACM中选择证书,目标组的端口为3000
・将ALB的DNS名称注册到Route53(选择A /别名记录)
・顺便提一下,我一直将MyIP(我的计算机外部IP)放在SG中开放进行操作,虽然现在有点晚。
我成功地实现了TLS化!
让人在意的事情
注册时的域名限制是什么?
・我沒有設定過這個記憶。
・不管使用什麼地址,我覺得都可以註冊成功。
一开始注册和忘记密码的邮件从哪里飞来的?
・未解除OutBound25Block。
・未进行Postfix到SES的Relay。
需要在Any上打开,有什么方法吗?
・是否插入Cognito? 会降低用户友好性?
・是否将AWS WAF放在前面?
我打算在下次解决这些令人担忧的问题。