So-net無料ブログ作成
  • ブログをはじめる
  • ログイン
スポンサードリンク
前の5件 | -

RocketChat(mongodb)のバックアップ・リストア [Linux]

RocketChatのバックアップリストアのメモ
OSはCentOS7で実施。
基本的にRocketChatはDBのバックアップが出来ればリストアは可能。

バックアップ
・DBのバックアップ
# mongodump -o /tmp/backup/mongo.db
で、mongodbのデータ全てをバックアップ出来る。

・ファイルアップロード先を変更している場合
デフォルトのGridFSの場合は不要かも??
# tar cf /tmp/backup/rocketfiledata.tar /var/snap/rocketchat-server/common/uploads ←設定しているファイルアップロード先

で、バックアップ完了

リストアは
・RocketChatの停止
# systemctl stop rocketchat
# systemctl status rocketchat

・既存DBの削除
# mongo
> use rocketchat
> db.dropDatabase()

・DBのリストア
# mongorestore /tmp/backup/mongo.db/

・ファイルアップロードのリストア
# cd /
# tar vxf /tmp/backup/rocketfiledata.tar

・RocketChatの起動
# systemctl start rocketchat
# systemctl status rocketchat

で、リストア完了。

バックアップはRocketChatが動作したままでも出来ますが、極力使っていない時間帯(夜間とか)に
取るほうが良さそう。
バックアップのシェルスクリプト作成して、cronで夜間バックアップとか。

Rocket.Chatのバージョンアップメモ(0.56→0.65) [Linux]

前回インストールしたRocket.Chatをバージョンアップしたときのメモ。
OSはCentOS7で実施。

Rocket.Chatをバージョンアップする前に、他もアップデートをする。
proxy配下の場合は以下を実施
# export http_proxy=http://proxy-server:port
# export https_proxy=http://proxy-server:port

# yum clean all
# yum --enablerepo=epel check-update
# yum --enablerepo=epel update

kernelが更新された場合は,再起動する。
# reboot

再起動した場合でproxy配下の場合は以下を再度実施
# export http_proxy=http://proxy-server:port
# export https_proxy=http://proxy-server:port

Rocket.Chatを停止
# systemctl stop rocketchat
# systemctl stop mongod

node.jsのバージョンを8.9.3にする
# n 8.9.3
# node -v

既存のファイルを退避
# cd /opt
# mv Rocket.Chat Rocket.Chat_0.56.0 ←バージョン情報
# mv rocket.chat.tgz rocket.chat.tgz_0.56.0 ←バージョン情報

Rocket.Chatの最新バージョンのダウンロード
# curl -L https://releases.rocket.chat/latest/download -o rocket.chat.tgz

Rocket.Chatのインストール
# tar vxfz rocket.chat.tgz
# mv bundle Rocket.Chat
# chown -R rocketchat. Rocket.Chat
# cd Rocket.Chat/programs/server/
# npm install
前バージョンの設定ファイルのコピー
# cp -p Rocket.Chat_0.56.0/rocketchat.env Rocket.Chat/

mongodbとrocketchatの起動
# systemctl start mongod
# systemctl start rocketchat

Rocket.Chatのルーム名で日本語が使えなかったので、利用できるように設定変更
管理者ユーザーでログイン
管理→全般→UTF8→EXPAND→UTF8形式名の検証パターン
[0-9a-zA-Z-_.]+
[ぁ-んァ-ヶーa-zA-Za-zA-Z0-9一-龠-0-9-、。_.]+
に変更する。

バージョンアップして気がついたところ。
デザインが少し変わった。
サブディレクトリ設定で,ファイルのアップロードが出来るようになった。
http://xxx/rocket/ など
サブディレクトリ設定だと何故かアイコンが表示されない(設定で回避可能??)。
bmpファイルがアップロードできない(アップロード時のプレビューは表示される)。
くらいかな。他にもあるかも。
操作が変わっているところが有るので、本番運用してたらアップデート前に検討が必要かも。

追記・・・
今回アップデートしたRocket.ChatのVer.0.65.0は画像ファイルをアップロードするとサムネイル表示がボケていたのですが、このあとに出たVer.0.65.1にアップデートしたらキレイに表示されるようになりましたので、気になる方はアップデートしたほうが良いかもしれません。

CentOS7のIPv6無効化設定 [Linux]

IPv6化が進んでいるなかで、CentOS7もインストールした直後はIPv6が有効になっているが,利用する環境によっては無効にしたほうが良い場合もあるので、その時の設定メモ。

インストール後のネットワーク設定表示
IPv6表示がある「inet6」
# ip a
1: lo: mtu 65536 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 08:00:27:95:1c:41 brd ff:ff:ff:ff:ff:ff
inet 192.168.100.100/24 brd 192.168.100.255 scope global enp0s8
valid_lft forever preferred_lft forever
inet6 fe80::a00:27ff:fe95:1c41/64 scope link
valid_lft forever preferred_lft forever

grub.cfgを編集する。
編集前
# cat /etc/default/grub
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet"
GRUB_DISABLE_RECOVERY="true"

編集後
# cat /etc/default/grub
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="ipv6.disable=1 crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap"
GRUB_DISABLE_RECOVERY="true"

GRUB_CMDLINE_LINUX行に「ipv6.disable=1」を追加する。
ついでに,「rhgb quiet」を削除すると起動時のプログレスバーが表示しなくなる。

grub.cfgへ反映する。
# grub2-mkconfig -o /boot/grub2/grub.cfg
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-3.10.0-327.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-327.el7.x86_64.img
Found linux image: /boot/vmlinuz-0-rescue-ec70996ac21e4bd0accccbb754cc93ea
Found initrd image: /boot/initramfs-0-rescue-ec70996ac21e4bd0accccbb754cc93ea.img
done

再起動をする
# reboot

IPv6の表示が消えた
# ip a
1: lo: mtu 65536 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
2: eth0: mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 08:00:27:95:1c:41 brd ff:ff:ff:ff:ff:ff
inet 192.168.100.100/24 brd 192.168.100.255 scope global enp0s8
valid_lft forever preferred_lft forever

OSでIPv6を無効化すると,IPv6を標準で利用するアプリでエラーが発生するので、アプリの設定で無効化する。
postfixのIPv6関連エラー
無効化前は・・・
# tail /var/log/maillog
postfix/pickup[2105]: warning: inet_protocols: disabling IPv6 name/address support: Address family not supported by protocol
postfix/qmgr[2106]: warning: inet_protocols: disabling IPv6 name/address support: Address family not supported by protocol

# systemctl status postfix
● postfix.service - Postfix Mail Transport Agent
Loaded: loaded (/usr/lib/systemd/system/postfix.service; enabled; vendor preset: disabled)
Active: active (running) since           JST; 1h 16min ago
Process: 2015 ExecStop=/usr/sbin/postfix stop (code=exited, status=0/SUCCESS)
Process: 2032 ExecStart=/usr/sbin/postfix start (code=exited, status=0/SUCCESS)
Process: 2029 ExecStartPre=/usr/libexec/postfix/chroot-update (code=exited, status=0/SUCCESS)
Process: 2024 ExecStartPre=/usr/libexec/postfix/aliasesdb (code=exited, status=0/SUCCESS)
Main PID: 2104 (master)
CGroup: /system.slice/postfix.service
tq2104 /usr/libexec/postfix/master -w
tq2105 pickup -l -t unix -u
mq2106 qmgr -l -t unix -u

postfix[2032]: /usr/sbin/postconf: warning: inet_protocols: disabling IPv6 name/address support: ...rotocol
postfix[2032]: /usr/sbin/postconf: warning: inet_protocols: disabling IPv6 name/address support: ...rotocol
postfix[2032]: postsuper: warning: inet_protocols: disabling IPv6 name/address support: Address f...rotocol
postfix[2032]: /usr/sbin/postconf: warning: inet_protocols: disabling IPv6 name/address support: ...rotocol
postfix/master[2104]: warning: inet_protocols: disabling IPv6 name/address support: Address family...otocol
postfix/master[2104]: warning: inet_protocols: disabling IPv6 name/address support: Address family...otocol
postfix/master[2104]: daemon started -- version 2.10.1, configuration /etc/postfix
systemd[1]: Started Postfix Mail Transport Agent.
postfix/pickup[2105]: warning: inet_protocols: disabling IPv6 name/address support: Address family...otocol
postfix/qmgr[2106]: warning: inet_protocols: disabling IPv6 name/address support: Address family n...otocol
Hint: Some lines were ellipsized, use -l to show in full.

postfixの設定でIPv6を無効にする。
# vi /etc/postfix/main.cf
inet_protocols = all
    ↓
inet_protocols = ipv4

confファイル確認
# postfix check

postfix再起動
# systemctl restart postfix

ステータス確認
# systemctl status postfix
● postfix.service - Postfix Mail Transport Agent
Loaded: loaded (/usr/lib/systemd/system/postfix.service; enabled; vendor preset: disabled)
Active: active (running) since           JST; 32s ago
Process: 8983 ExecStop=/usr/sbin/postfix stop (code=exited, status=0/SUCCESS)
Process: 8996 ExecStart=/usr/sbin/postfix start (code=exited, status=0/SUCCESS)
Process: 8994 ExecStartPre=/usr/libexec/postfix/chroot-update (code=exited, status=0/SUCCESS)
Process: 8992 ExecStartPre=/usr/libexec/postfix/aliasesdb (code=exited, status=0/SUCCESS)
Main PID: 9068 (master)
CGroup: /system.slice/postfix.service
tq9068 /usr/libexec/postfix/master -w
tq9069 pickup -l -t unix -u
mq9070 qmgr -l -t unix -u

systemd[1]: Starting Postfix Mail Transport Agent...
postfix/master[9068]: daemon started -- version 2.10.1, configuration /etc/postfix
systemd[1]: Started Postfix Mail Transport Agent.

ログ確認
# tail /var/log/maillog
postfix/postfix-script[9066]: starting the Postfix mail system
postfix/master[9068]: daemon started -- version 2.10.1, configuration /etc/postfix

エラーが表示されなくなった。
他にもChronyなどもエラーが表示されるので、個別に対応が必要。
(動作はするので、エラーが気になれば)

rsyslogサーバのログファイル名をホスト名にするのと,保存先を月ごとに分けるメモ [Linux]

rsyslogサーバのログファイル名をホスト名にするのと,転送されたログの保存先を月ごとに分けるメモ。

デフォルトのsyslogサーバファシリティ(local0からlocal7)で振り分けし,rsyslog.confに設定された出力先にログが記録される。
この設定だと、どのサーバのログか分かりにくいのと振分数に限界が有るので、送信元サーバが多い場合は対応が難しい。

ホスト名でログを記録する場合は,ファシリティ設定が記述されている箇所より上に設定を入れれば,ホスト単位でログを記録することが可能。

例) hostnameというホスト名で,/var/systemlog配下に,年/ホスト名/月/ホスト名.logで保存する場合。
・ログ出力を下記のようにしたい場合
/var/systemlog/2017/hostname/12/hostname.log

・設定例として
$template hostlog,"/var/systemlog/%$year%/%fromhost%/%$month%/%fromhost%.log"
:fromhost-ip, !isequal, "127.0.0.1" -?hostlog
& stop

ホスト名については,名前解決が出来ないとホスト名にならず,IPアドレスがファイル名となるので,DNSサーバが無い場合は,/etc/hostsファイルに記述すればホスト名で記録される。

%fromhost%を%hostname%にすると,出力元のホスト名になる。

上記の設定だと,1つのサーバで複数プロセスのログを転送していた場合,全て1つのファイルに纏まってしまうので,特定のホストだけ分けたいときは,上記設定の上に

$template aaalog,"/var/log/%$year%/%fromhost%/%$month%/%fromhost%_%programname%.log"
:fromhost-ip, isequal, "192.168.100.110" -?aaalog
& stop

を入れれば,プロセス毎にファイルが分けられる(必要数入れる)。
& stop」の箇所ですが,昔は「& ~」だったよう。
& ~で設定を入れると,
rsyslogd: warning: ~ action is deprecated, consider using the 'stop' statement instead [try http://www.rsyslog.com/e/2307 ]
のエラーが表示される(動作はする)。

上記設定で,最後の設定の下に「& stop」を入れないと,これより下のファシリティ設定のログにも記録されるので注意。

rsyslog.confのconfigチェックは
# rsyslogd -N 1
で,エラーが出なければ良い。

ちなみに下記表示は
rsyslogd: unknown priority name ""
は,messagesの設定などで,
*.info;mail.none;authpriv.none;cron.none;
最後に;が有ると表示される。

ログのローテーションはlogrotateを利用する。
/etc/logrotate.d/
配下に設定ファイルを追加する。
/etc/logrotate.d/system-log

例)日次ローテーションで,ローテーションしたファイルは圧縮。ファイルは365日残す場合。
/var/systemlog/*/*/*/*.log
{
missingok
daily
dateext
compress
nocreate
ifempty
sharedscripts
postrotate
/usr/bin/find /var/syslog/ -mtime +365 -delete
/usr/bin/find /var/syslog/ -mtime +730 | /usr/bin/xargs rm -rf
/bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
endscript
}

通常rotate設定を使用すればファイル削除コマンドは不要だが,保存先のディレクトリが月が変わると使えないみたいなので,rmで削除する。
nocreateを入れないと既に終わった月フォルダ配下にもファイルが作成されるので、必ず入れたほうが良いと思う。

SRX300ポリシー設定(DestinationNATの場合) [Network]

インターフェースとゾーンの設定した後にポリシー設定。
DestinationNATを利用する設定メモ。DestinationNATを利用する場合,untrust側にきた通信がtrust側のどの端末と通信させるかの設定が必要。
インターネットへ公開するサーバ用の設定などに使用することが多い。

設定例)
untrust側からの要求アドレス100.100.100.100 → SRX300(NAT変換:192.168.100.100(trust側IPアドレス)) → trust側サーバー(192.168.100.100)

・untrustからtrustへの通信(DestinationNAT)
trust側へNAT通信するuntrust側からの要求アドレスのtrust側IPアドレスの割り当て
 アドレスプール名:pool-global1
 trust側IPアドレス:192.168.100.100
 アドレスプール名:pool-global11
set security nat destination pool pool-global1 address 192.168.100.100/32
・ルールセット名(untrustpc)の動作設定
 ルールセット名:untrustpc
 untrust側からtrustへの通信で,destinationNATを使用。
set security nat destination rule-set untrustpc from zone untrust
set security nat destination rule-set untrustpc to zone trust

・untrust側要求IPアドレスのルール設定
 ルールuntrustpcで,untrust側へ100.100.100.1への要求通信がきた場合,アドレスプールpool-global1を適用する。
set security nat destination rule-set untrustpc rule global1 match destination-address 100.100.100.1/32
set security nat destination rule-set untrustpc rule global1 then destination-nat pool pool-global1

・アドレス設定(Addressbook登録)
 アドレスブック名global1のIPアドレスは192.168.100.100/32
set security zones security-zone trust address-book address global1 192.168.100.100/32

・ポリシー設定(100.100.100.1への接続要求あり,25/tcp(smtp)だけ許可)
 接続元は全て
set security policies from-zone untrust to-zone trust policy po-global1 match source-address any
 ポリシー名po-local1で,destのアドレスはアドレスブックglobal1へ
set security policies from-zone untrust to-zone trust policy po-global1 match destination-address global1
 プロトコルはsmtp
set security policies from-zone untrust to-zone untrust policy po-global1 match application junos-smtp
 上記条件は許可する
set security policies from-zone trust to-zone untrust policy po-global1 then permit
※以下は必要に応じて(ログとカウント設定)
 セッションが閉じたタイミングでログを取得
set security policies from-zone untrust to-zone trust policy po-global1 then log session-close
 ポリシーカウント取得
set security policies from-zone untrust to-zone trust policy po-global1 then count

ポリシーが設定されていない通信は全て拒否されるので,別途拒否設定は不要だが,
ログとかが取れないので,有ったほうが良いかと。
 ポリシー名untrustDenyAllを設定。送信元アドレス全て
set security policies from-zone untrust to-zone trust policy untrustDenyAll match source-address any
 送信先アドレス全て
set security policies from-zone untrust to-zone trust policy untrustDenyAll match destination-address any
 プロトコル全て
set security policies from-zone untrust to-zone trust policy untrustDenyAll match application any
 上記条件は拒否する
set security policies from-zone untrust to-zone trust policy untrustDenyAll then deny
※以下はログを取得する場合
 セッション開始時にログ取得
set security policies from-zone untrust to-zone trust policy untrustDenyAll then log session-init

全拒否のポリシーは該当ゾーン(from-zone untrust to-zone trust)の一番下へ移動する。
 ポリシーpo-global1の後ろ(下)にuntrustDenyAllを移動。前(上)に移動する場合は,afterをbeforeにする。
insert security policies from-zone untrust to-zone trust policy po-global1 after untrustDenyAll

ルール名とかプール名はどちら側からの通信か分かるようにした方が整理しやすい。
DestinationNATの場合は
ルール名:Dest-xxx
プール名:DestPool-xxx
など
前の5件 | -
スポンサードリンク