CentOS 7にRocketMQ 4.7.1をインストールし、fastjsonの低バージョンの脆弱性の問題を解決
9641 ワード
文書ディレクトリ
CentOS 7にRocketMQ 4.7.1をインストールし、fastjsonの低バージョンの脆弱性の問題を解決
前言
アリのfastjsonの低バージョン(<=1.2.68)でセキュリティホールが爆発し、RocketMQ 4.7.0はfastjson 1.2.62を使用しているため、RocketMQをRocketMQ 4.7.1(fastjson 1.2.69)にアップグレードする必要がある.
本明細書では、開発試験環境としてのみ使用される、CentOS 7にRocketMQ 4.7.1をインストールするプロセスについて説明する.
インストールプロセス
サーバにはOpenJDK 8がインストールされており、JAVA_が設置されているHOME.
RocketMQのダウンロードと解凍
RocketMQの公式サイトでRocketMQ 4.7.1をダウンロードするリンクを見つけて、RocketMQをダウンロードして解凍します:
#
wget http://ftp.cuhk.edu.hk/pub/packages/apache.org/rocketmq/4.7.1/rocketmq-all-4.7.1-bin-release.zip
#
unzip rocketmq-all-4.7.1-bin-release.zip
# /usr/local/rocketmq
mv rocketmq-all-4.7.1-bin-release /usr/local
ln -s /usr/local/rocketmq-all-4.7.1-bin-release /usr/local/rocketmq
RocketMQのJVMサイズを下げる
RocketMQのデフォルトのJVMは大きすぎて、開発テスト環境で使用するのに適していません.JVMのサイズを下げる必要があります.
RocketMQのインストールディレクトリ(この例では
/usr/local/rocketmq
)で、shスクリプトのJVMパラメータ設定を検索します.find . -name '*.sh' | xargs egrep 'Xms'
次のshスクリプトのJVMパラメータを変更する必要があります.
修正する前に、適切なスクリプトをバックアップしてください.具体的なJVMサイズは実際の状況に応じて設定されます.
bin/runserver.sh
変更前:
JAVA_OPT="${JAVA_OPT} -server -Xms4g -Xmx4g -Xmn2g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
変更後:
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
bin/runserver.sh
変更前:
JAVA_OPT="${JAVA_OPT} -server -Xms4g -Xmx4g -Xmn2g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
変更後:
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
bin/tools.sh
変更前:
JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn256m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m"
変更後:
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m"
Name Serverの起動
#
nohup sh bin/mqnamesrv >/dev/null 2>&1 &
Name Serverのデフォルトポートは9876です.
sh bin/mqnamesrv -p
を実行すると、Name Serverのコンフィギュレーション・アイテムを表示し、-c namesrv.conf
でコンフィギュレーション・ファイルの起動を指定できます.RocketMQのデフォルトのログパスは
~/logs/rocketmqlogs/
です.次回の起動を容易にするために、起動Name Serverコマンドをスクリプトとして保存できます.
Brokerの起動
Brokerを起動するには、接続するName Serverを指定する必要があります.
#
nohup sh bin/mqbroker -n localhost:9876 >/dev/null 2>&1 &
起動Brokerコマンドは、次回の起動を容易にするためにスクリプトとして保存できます.
RocketMQプロセスの表示
ps -ef | grep -v grep | grep rocketmq
RocketMQのテスト
メッセージの送信と受信のテスト
RocketMQ独自のメッセージ作成者と消費者の例を使用して、メッセージの送信と受信をテストします.
export NAMESRV_ADDR=localhost:9876
sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer
sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer
ロックMQを閉じる
Brokerを閉じる
sh bin/mqshutdown broker
シャットダウンBrokerコマンドは、次回のシャットダウンを容易にするためにスクリプトとして保存できます.
Name Serverを閉じる
sh bin/mqshutdown namesrv
Name Serverを閉じる前にBrokerを閉じる必要があります.
次回のシャットダウンを容易にするために、Name Serverコマンドをスクリプトとして保存できます.
Name Serverのポートの変更
RocketMQ Name Serverのデフォルトポートは9876です.以下の方法でName Serverのポートを変更できます.
listenPort=10076
nohup sh bin/mqnamesrv -c namesrv.conf >/dev/null 2>&1 &
ps -ef | grep rocketmq
netstat -tnlp | grep <nameserver_pid>
RocketMQコンソールのインストール
rocketmq-externalsプロジェクトをクローンし、rocketmq-consoleをコンパイルします.
コマンドの例:
git clone https://github.com/apache/rocketmq-externals.git
cd rocketmq-externals/rocketmq-console
mvn clean package -Dmaven.test.skip=true
target/rocketmq-console-ng*.jar
をRocketMQインストールディレクトリ(この例では/usr/local/rocketmq
)の下に配置します.RocketMQインストールディレクトリの下に、RocketMQコンソールを起動するスクリプトを新規作成して、RocketMQコンソールを起動します.
nohup java -jar rocketmq-console-ng*.jar --server.port=8080 --rocketmq.config.namesrvAddr=localhost:9876 > /dev/null 2>&1 &
デフォルトのRocketMQコンソールではパスワードログインは必要ありません.RocketMQを参照してドキュメントを使用して構成してください.
以下を参照してください.
Troubleshooting
質問1:Name ServerとBrokerを起動するか、テストタイムズが間違っています
Please set the JAVA_HOME variable in your environment, We need java(x64)!
しかし、システムにOpenJDK 8がインストールされており、JAVAが設定されています.HOME. 解決策:
which java
を実行してjavaのパスを表示します.たとえば、/usr/bin/java
です.bin/runserverを変更します.shとbin/runbroker.shとbin/tools.sh,注記チェックJAVA_HOME文で、JAVAパスを明確に指定します.
#[ ! -e "$JAVA_HOME/bin/java" ] && JAVA_HOME=$HOME/jdk/java
#[ ! -e "$JAVA_HOME/bin/java" ] && JAVA_HOME=/usr/java
#[ ! -e "$JAVA_HOME/bin/java" ] && error_exit "Please set the JAVA_HOME variable in your environment, We need java(x64)!"
#export JAVA_HOME
export JAVA="/usr/bin/java"