編譯安裝Erlang+RabbitMQ

楔子

由於國內信創越來越火,客戶現場也開始使用國產操作系統替換CentOS之類的開源操作系統,最近做實施的同事找到我,說現場是ARM架構的操作系統編譯安裝RabbitMQ一直提示無法啓動也沒有日誌文件生成,找過了好幾個同事都沒解決這才找到我。我就在這裏記錄下安裝步驟及碰到的問題與解決辦法。

環境說明

名稱 版本
麒麟操作系統 V10系統 飛騰版 ARM 64位架構
Linux內核 4.19.90-24.4.v2101.ky10.aarch64
Erlang 24.2
RabbitMQ 3.9.1 unix通用版本

安裝基礎編譯環境

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查一下你的命令是從哪響應的。

參考:

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