說是安裝,不如說是配置。不象在windows下的那種。
首先,到 http://rocketmq.apache.org/ 下載軟件(當前版本4.5.2)並解壓到 /usr/local 下面。Java也事先解壓過(別的軟件用到。我並沒有將其配置到環境變量里。)。在啟動文件里會說明如何用Java的。
比如解壓后的文件夾為 rocketmq452。日志文件和存儲文件分別存放到 /var/rocketmqlog 和 /var/rocketmqstore。
在說明如何配置之前,推薦一個博客 ,分為4篇。首篇鏈接:https://blog.csdn.net/autfish/article/details/89226461
(一)基礎
(二)進階 (重要概念)
(三)高可用部署
(四)常見問題
推薦的博客里 講的內容,理解了就好。但是我們要配置的是開機自動運行(作為服務)的(systend)腳本。
namesrv 用於組織協調 broker代理。啟動腳本 rocketmqname.service
[Unit] Description=RocketMQ-Nameserver After=network.target [Service] Environment=JAVA_HOME=/usr/local/jdk1.8.0_201/ ExecStart=/usr/local/rocket452/bin/mqnamesrv ExecStop=/usr/local/rocket452/bin/mqshutdown namesrv [Install] WantedBy=multi-user.target
Environment=JAVA_HOME=/usr/local/jdk1.8.0_201/ 的意思是 把 JAVA_HOME=/usr/local/jdk1.8.0_201/ 賦值給 Environment。
如果不寫 Environment= ,是沒有用的。
broker,可以理解為需要向namesrv注冊。啟動腳本 rocketmqbroker.service
[Unit] Description=RocketMQ-Broker After=rocketmqname.service [Service] Environment=JAVA_HOME=/usr/local/jdk1.8.0_201/ ExecStart=/usr/local/rocket452/bin/mqbroker -c /usr/local/rocket452/conf/broker.conf ExecStop=/usr/local/rocket452/bin/mqshutdown broker [Install] WantedBy=multi-user.target
如果沒有指定( 腳本里的參數 -c )配置文件或者配置文件里沒有配置store路徑,將默認 ~/store。該腳本沒有指定運行的用戶,所有如果默認的話就會指向 /root/store
腳本配置后的首次啟動,最好清空store里的內容(如果存在的話),否則在初始化時可能過不去。
conf目錄下的那些配置文件都可以改。比如xml文件的日志配置中默認是把日志寫到 用戶目錄中。我是把 ${user.home} 改為 /var里面了。
有些時間沒法博客了。這個雖然用來充數,但是也是耗費時間總結的。
順便說一下,可以到 https://github.com/apache/rocketmq-externals 下載 rocketmq-console 。這個代碼有點古老,不要隨便升級里面的依賴,否則會運行不下去。
我把controller注解都改了,結果提示我 org.springframework.web.bind.annotation.* 通配符的錯誤。
把包名改短了,也無法運行。需要把 support目錄下的2個文件的 注解內容修改下( @ControllerAdvice(basePackages = "rocketmq.console") )。
rocketmq-console.service
[Unit] Descroption=rocketmq-console8809 After=syslog.target network.target [Service] Type=simple #Type=forking User=root Group=root #timeout seconds TimeoutSec=0 #Environment=HOME=/root ExecStart=/usr/local/jdk1.8.0_201/bin/java -jar /var/www/rocketmq-console8809.jar ExecReload=/bin/kill -s HUP $MAINPID ExecStop=/bin/kill -s QUIT $MAINPID #ExecStop=/usr/bin/kill -15 $MAINPID SuccessExitStatus=143 [Install] WantedBy=multi-user.target
上面的代碼里,懶得新建服務賬號,就直接用root賬號。我這是在測試環境里。