楔子
由於國內信創越來越火,客戶現場也開始使用國產操作系統替換CentOS之類的開源操作系統,最近做實施的同事找到我,說現場是ARM架構的操作系統編譯安裝RabbitMQ一直提示無法啓動也沒有日誌文件生成,找過了好幾個同事都沒解決這才找到我。我就在這裏記錄下安裝步驟及碰到的問題與解決辦法。
環境說明
名稱 | 版本 |
---|---|
麒麟操作系統 | V10系統 飛騰版 ARM 64位架構 |
Linux內核 | 4.19.90-24.4.v2101.ky10.aarch64 |
Erlang | 24.2 |
RabbitMQ | 3.9.1 unix通用版本 |
- 關於RabbitMQ與Erlang版本對應關係,參見:https://www.rabbitmq.com/which-erlang.html
- Erlang源碼安裝包下載地址:https://github.com/erlang/otp/releases
- RabbitMQ源碼安裝包下載地址:https://github.com/rabbitmq/rabbitmq-server/releases
安裝基礎編譯環境
yum -y install gcc glibc-devel make ncurses-devel openssl-devel xmlto perl gtk2-devel binutils-devel
安裝Erlang
# 解壓erlang源碼包到/usr/local/otp_src_24.2
tar -zxvf otp_src_24.2.tar.gz -C /usr/local
# 進入erlang源碼編譯目錄
cd /usr/local/otp_src_24.2/
# 創建安裝目錄
mkdir /usr/local/erlang
# 檢查編譯環境,設置安裝目錄
./configure --prefix=/usr/local/erlang
# 編譯 & 安裝
make
make install
# 將編譯安裝的erlang加入環境變量,並使之生效(無需進入目錄即可執行)
echo 'export PATH=$PATH:/usr/local/erlang/bin' >> /etc/profile
source /etc/profile
# 查看是否安裝成功
erl -version
安裝RabbitMQ
# 解壓rabbitmq安裝包
tar -xvf rabbitmq-server-generic-unix-3.9.1.tar.xz
# 移動rabbitmq目錄到/usr/local/rabbitmq
mv rabbitmq-server-generic-unix-3.9.1 /usr/local/rabbitmq
# 將rabbitmq加入環境變量,並使之生效(無需進入目錄即可執行)
echo 'export PATH=$PATH:/usr/local/rabbitmq/sbin' >> /etc/profile
source /etc/profile
啓動RabbitMQ
# 後臺啓動
rabbitmq-server -detached
# 查看狀態
rabbitmqctl status
# 啓用管理插件
rabbitmq-plugins enable rabbitmq_management
初始化用戶
# 添加用戶 用戶名admin 密碼123456 ,密碼可以自己指定
rabbitmqctl add_user admin 123456
# 給budget分配vhost
rabbitmqctl set_permissions -p "/" admin ".*" ".*" ".*"
# 分配管理權限
rabbitmqctl set_user_tags admin administrator
# 重啓rabbitmq
rabbitmqctl stop && rabbitmq-server -detached
重啓後訪問 15672 端口進入Web管理界面,安裝與初始化部署到這裏就結束了,下邊記錄些錯誤情況
遇到的問題
執行 rabbitmq-server 報如下錯誤:
{"init terminating in do_boot",{error,{crypto,{"no such file or directory","crypto.app"}}}}
init terminating in do_boot ({error,{crypto,{no such file or directory,crypto.app}}})
提示crypto庫找不到,原因是在編譯Erlang時crypto依賴的openssl庫沒找到。
解決辦法:安裝 openssll、openssl-devel,重新編譯安裝
yum install -y openssl openssl-devel
cd <Erlang編譯目錄>
make clean
./configure --prefix=/usr/local/erlang
make
make install
這個錯誤有參考價值,就拿過來記錄下。雖然我在操作時也提示是這個問題,但並不是我編譯安裝的位置提示出來的!之前幾個同事編譯時未安裝openssl,編譯出有問題的Erlang並放到了環境變量很靠前的位置,導致我編譯正確的Erlang沒被執行。。所以在這裏我推薦大家編譯安裝後用which查一下你的命令是從哪響應的。
參考: