Rocket.Chat服務器部署

安裝部署

部署環境

  • OS: CentOS7.6
  • CPU: 8core
  • MEM: 16G
  • Nodejs: v12.14.0
  • MongoDB: v3.6.19
  • Rocket.Chat 3.7.0

所有文件可在這裏下載:

鏈接:https://pan.baidu.com/s/1VhVnWlkb9efQ4ynJucQXoA 
提取碼:ix3b 

安裝操作系統時最好最小化安裝,並將最大的數據盤掛載分配給/srv目錄

關閉系統防火牆和SElinux

service firewalld stop
service iptables stop
chkconfig iptables off 
chkconfig firewalld off
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

內核優化

net.ipv4.ip_forward = 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0
kernel.core_uses_pid = 1
kernel.threads-max=65535
kernel.msgmni = 16384
kernel.msgmnb = 65535
kernel.msgmax = 65535
kernel.shmmax = 68719476736
kernel.shmall = 4294967296
kernel.shmmni = 4096
kernel.sem = 5010 641280 5010 128
net.ipv4.tcp_max_tw_buckets = 6000000
net.ipv4.tcp_sack = 1
net.ipv4.tcp_window_scaling = 1
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216
net.core.wmem_default = 8388608
net.core.rmem_default = 8388608
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.core.netdev_max_backlog = 200000
net.ipv4.tcp_no_metrics_save = 1
net.core.somaxconn = 65535
net.core.optmem_max = 10000000
net.ipv4.tcp_max_orphans = 32768
net.ipv4.tcp_max_syn_backlog = 655360
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_timestamps = 0
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_syn_retries = 2
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_mem = 94500000 915000000 927000000
net.ipv4.tcp_fin_timeout = 10
net.ipv4.tcp_keepalive_time = 300
net.ipv4.tcp_keepalive_probes=10
net.ipv4.tcp_keepalive_intvl=2
net.ipv4.ip_local_port_range = 10000 65535
net.ipv4.route.gc_timeout = 100
net.ipv4.tcp_congestion_control=cubic
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
fs.aio-max-nr = 1024000
fs.file-max = 1024000
kernel.pid_max=327680
vm.swappiness = 0
vm.max_map_count=655360

sysctl -p後建議重啓系統

MongoDB安裝

這裏我用的老版本,官網上我看都直接用4版本了, 反正也沒啥大問題,先用這個吧,畢竟我這兒只下載了這個版本的安裝包。

  • 創建所需要的目錄和用戶
mkdir -p /srv/{app,data,logs,backup}/mongodb
useradd -r -M -s /sbin/nologin mongod

將百度雲裏面的mongodb安裝包sftp到服務器並解壓

tar -zxf mongodb-3.6.19.tar.gz -C /srv/app/mongodb/

創建mongodb服務器的配置:

[root@localhost ~]# cat /srv/app/mongodb/conf/mongod.conf 
systemLog:
  destination: file
  logAppend: true
  path: /srv/logs/mongodb/mongod.log

storage:
  dbPath: /srv/data/mongodb
  journal:
    enabled: true
  engine: mmapv1
  wiredTiger:
    engineConfig:
      cacheSizeGB: 2

processManagement:
  fork: true
  pidFilePath: /run/mongodb/mongod.pid
  timeZoneInfo: /usr/share/zoneinfo

net:
  port: 27017
  bindIp: 127.0.0.1

replication:
  replSetName: rs01

#security:
#  authorization: enabled

添加mongodb的systemd服務啓動配置(開機啓動)

[root@localhost ~]# cat /etc/systemd/system/mongod.service
[Unit]
Description=MongoDB Database Server
Documentation=https://docs.mongodb.org/manual
After=network.target

[Service]
User=mongod
Group=mongod
Environment="OPTIONS=-f /srv/app/mongodb/conf/mongod.conf"
EnvironmentFile=-/etc/sysconfig/mongod
ExecStart=/srv/app/mongodb/bin/mongod $OPTIONS
ExecStartPre=/usr/bin/mkdir -p /var/run/mongodb
ExecStartPre=/usr/bin/chown mongod:mongod /var/run/mongodb
ExecStartPre=/usr/bin/chmod 0755 /var/run/mongodb
PermissionsStartOnly=true
PIDFile=/var/run/mongodb/mongod.pid
Type=forking
LimitFSIZE=infinity
LimitCPU=infinity
LimitAS=infinity
LimitNOFILE=64000
LimitNPROC=64000
LimitMEMLOCK=infinity
TasksMax=infinity
TasksAccounting=false

[Install]
WantedBy=multi-user.target

進行服務啓動

chown -Rf mongod:mongod /srv/{app,data,logs,backup}/mongodb
systemctl enable mongod.servie 
systemctl start mongod.service
sleep 10s; /srv/app/mongodb/bin/mongo --eval "printjson(rs.initiate())"

安裝Rocket.Chat

將rocketchat服務安裝包和nodejs安裝包導入服務器

#第一步,準備文件和nodejs環境
tar -zxf rocket.chat-3.7.0.tgz
mv bundle /srv/app/Rocket.Chat
mkdir -p /opt/nodejs
xz -d node-v12.14.0-linux-x64.tar.xz
tar -zxf node-v12.14.0-linux-x64.tar -C /opt/nodejs/
ln -s /opt/nodejs/node-v12.14.0-linux-x64/node /usr/bin/
ln -s /opt/nodejs/node-v12.14.0-linux-x64/npm /usr/bin/
npm config set registry https://registry.npm.taobao.org
npm install -g inherits n

# 第二步,正式安裝rocket.chat
cd /srv/app/Rocket.Chat/programs/server && npm install

#添加用戶並修改權限
useradd -r -M -s /sbin/nologin rocketchat
chown -Rf rocketchat:rocketchat /srv/app/Rocket.Chat

添加服務啓動配置:

[root@localhost ~]# cat /etc/systemd/system/rocketchat.service 
[Unit]
Description=The Rocket.Chat server
After=network.target mongod.target

[Service]
Type=simple
Environment="MONGO_URL=mongodb://localhost:27017/rocketchat?replicaSet=rs01"
Environment="MONGO_OPLOG_URL=mongodb://localhost:27017/local?replicaSet=rs01"
Environment="ROOT_URL=http://localhost:3000/"
Environment="PORT=3000"
ExecStart=/usr/bin/node /srv/app/Rocket.Chat/main.js
Restart=on-failure

StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=rocketchat
User=rocketchat

[Install]
WantedBy=multi-user.target

啓動服務:

systemctl enable rocketchat
systemctl start rocketchat

這樣服務就能啓動了, 不過也有可能會有一些報錯,就需要看/var/log/message日誌進行解決了

訪問 http://ip:3000就能看到界面了。

nginx代理

這裏nginx的安裝就不多說了,相信各位道友都有很好的解決辦法,實在嫌麻煩的朋友可以用yum安裝搞定;不多說,直接上配置:

server {
    listen   80 default_server;
    listen   [::]:80 default_server;
    listen   443 default_server ssl http2;
    listen   [::]:443 default_server ssl http2;
    server_name  _;
    return 444;
    include  /srv/app/tengine/conf/ssl_xxx.top.conf;
}

# Upstreams
upstream backend {
    server 127.0.0.1:3000;
}

server {
    listen       80;
    server_name  chat.xxx.top;
    return 301   https://$host$request_uri;
    access_log   /srv/logs/nginx/rocketchat_access.log  nginxjson;
    error_log    /srv/logs/nginx/rocketchat_error.log;
}

server {
    listen 443 ssl http2;
    server_name  chat.xxx.top;
    client_max_body_size 200M;
    access_log /srv/logs/nginx/rocketchat_access.log;
    error_log  /srv/logs/nginx/rocketchat_error.log;
	
    ssl on;
    ssl_certificate       /srv/app/tengine/cert/xxx.top/nginx.crt;
    ssl_certificate_key   /srv/app/tengine/cert/xxx.top/nginx.key;
    ssl_dhparam           /srv/app/tengine/cert/xxx.top/dhparams.pem;
    ssl_protocols TLSv1.2 TLSv1.1 TLSv1;
    ssl_ciphers ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256;
    ssl_prefer_server_ciphers on;
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m;
    
  
    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-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto https;
        proxy_set_header X-Nginx-Proxy true;

        proxy_redirect off;
    }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章