RabbitMQ(二)CentOS6.7 下的 HelloWorld
前一篇寫了在Windows下的安裝使用,這次記錄下CentOS6.7下的安裝使用.
其實在CentOS下和Windows下過程是一樣的,都是 先安裝Erlang環境,再安裝RabbitMQ Server.
只不過CentOS下經常遇到各種問題,所以感覺上麻煩點.
主要分以下部分
1)安裝Erlang環境
2)安裝RabbitMQ Server
3)啟動server,並啟用管理臺外掛
4)新增使用者並設定許可權
5)外網登入管理臺
6)程式碼連線CentOS下的MQ
7)遇到的問題及解決辦法
1)安裝Erlang環境
官網提供了3種安裝方法,我這裡用第一種.
我最開始 選擇了centos,然後下載19.1.5這個版本, 然後進行安裝發現少一堆包.
最後還是安裝網頁下發的 說明進行線上安裝
首先
wget https://packages.erlang-solutions.com/erlang-solutions-1.0-1.noarch.rpm
rpm -Uvh erlang-solutions-1.0-1.noarch.rpm
這2句一般不會遇到問題,然後
sudo yum install erlang
遇到問題1
解決方法見7)中的問題1.解決後繼續http://packages.erlang-solutions.com/rpm/centos/6/x86_64/repodata/primary.xml.gz: [Errno -1] Metadata file does not match checksum Trying other mirror. erlang-solutions/primary | 869 kB 00:00 http://packages.erlang-solutions.com/rpm/centos/6/x86_64/repodata/primary.xml.gz: [Errno -1] Metadata file does not match checksum Trying other mirror. Error: failure: repodata/primary.xml.gz from erlang-solutions: [Errno 256] No more mirrors to try.
因為網速慢,遇到問題2
[Errno 12] Timeout on
解決方法見7)中的問題2.解決後繼續
Erlang安裝完成.
2)安裝RabbitMQ Server
需要先下載 rpm檔案 , (上面給的官網安裝地址 最上面就有下載的地方)
然後執行下面命令
rpm --import https://www.rabbitmq.com/rabbitmq-release-signing-key.asc
yum install rabbitmq-server-3.6.5-1.noarch.rpm
注:上面yum命令 要在 下載的rpm檔案的目錄下進行遇到問題3
Error: Package: rabbitmq-server-3.6.5-1.noarch (/rabbitmq-server-3.6.5-1.noarch)
Requires: socat
解決方法見7)中的問題3.解決後繼續完成安裝
3)啟動server,並啟用管理臺外掛
執行 whereis rabbitmq
結果 rabbitmq: /etc/rabbitmq /usr/lib/rabbitmq
執行 cd /usr/lib/rabbitmq/bin
執行 rabbitmq-server start
結果如下
RabbitMQ 3.6.5. Copyright (C) 2007-2016 Pivotal Software, Inc.
## ## Licensed under the MPL. See http://www.rabbitmq.com/
## ##
########## Logs: /var/log/rabbitmq/[email protected]
###### ## /var/log/rabbitmq/[email protected]
##########
Starting broker...
completed with 0 plugins.
可以看到預設沒有外掛,然後我們去啟動管理臺的外掛
[[email protected] bin]# rabbitmq-plugins enable rabbitmq_management
The following plugins have been enabled:
mochiweb
webmachine
rabbitmq_web_dispatch
amqp_client
rabbitmq_management_agent
rabbitmq_management
Applying plugin configuration to [email protected] failed.
* Could not contact node [email protected]
Changes will take effect at broker restart.
* Options: --online - fail if broker cannot be contacted.
--offline - do not try to contact broker.
這裡出現了 contact node [email protected] 的提示,但是當時沒注意,就繼續往下了
執行啟動命令. 啟動完成
整體如下圖
啟動完成.
4)新增使用者並設定許可權
因為假想中這是伺服器,我們平時訪問肯定都是在外網,所以預設的guest只能在本機使用肯定不行了.(官方推薦刪掉guest或者修改密碼)
所以我們需要新增一個可以外網訪問的使用者.
可以在頁面新增(更簡單一點),也可以用命令新增. 我們這裡用命令
rabbitmqctl add_user admin 123456
遇到問題4,和啟動外掛時候有點類似 Error: unable to connect to node [email protected]: nodedown
解決方法見7)中的問題4.解決後繼續
rabbitmqctl set_user_tags admin administrator
rabbitmqctl set_permissions -p "/" admin ".*" ".*" ".*"
上面2句分別是設定角色(非官方說法),設定外網登入許可權
OK.新增使用者授權完成.
5)外網登入管理臺
在本地瀏覽器輸入CentOS的管理臺地址 http://192.168.1.100:15672/
這裡要注意下centos的防火牆狀態,我測試就直接把防火牆關了
關閉防火牆
/etc/init.d/iptables stop
使用剛才建立的admin登入後,如下圖
如果登入失敗,返回狀態是401的話,就是許可權設定的有問題.
6)程式碼連線CentOS下的MQ
程式碼和上一篇Windows下的基本一樣,只是需要指定下IP,使用者名稱,密碼
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
public class Send {
private final static String QUEUE_NAME = "hello";
public static void main(String[] argv) throws Exception {
ConnectionFactory factory = new ConnectionFactory();
factory.setHost("192.168.1.100");
factory.setUsername("admin");
factory.setPassword("123456");
Connection connection = factory.newConnection();
Channel channel = connection.createChannel();
channel.queueDeclare(QUEUE_NAME, false, false, false, null);
String message = "Hello World!";
channel.basicPublish("", QUEUE_NAME, null, message.getBytes("UTF-8"));
System.out.println(" [x] Sent '" + message + "'");
channel.close();
connection.close();
}
}
接收的類也一樣
import com.rabbitmq.client.*; import java.io.IOException; public class Recv { private final static String QUEUE_NAME = "hello"; public static void main(String[] argv) throws Exception { ConnectionFactory factory = new ConnectionFactory(); factory.setHost("192.168.1.100"); factory.setUsername("admin"); factory.setPassword("123456"); Connection connection = factory.newConnection(); Channel channel = connection.createChannel(); channel.queueDeclare(QUEUE_NAME, false, false, false, null); System.out.println(" [*] Waiting for messages. To exit press CTRL+C"); Consumer consumer = new DefaultConsumer(channel) { @Override public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException { System.out.println("consumerTag"+consumerTag); System.out.println("properties"+properties.getMessageId()); String message = new String(body, "UTF-8"); System.out.println(" [x] Received '" + message + "'"); } }; channel.basicConsume(QUEUE_NAME, true, consumer); } }
埠號因為是預設的,指定不指定無所謂了.
執行程式碼,成功執行.
7)遇到的問題及解決辦法
問題1
http://packages.erlang-solutions.com/rpm/centos/6/x86_64/repodata/primary.xml.gz: [Errno -1] Metadata file does not match checksum
Trying other mirror.
解決1
先安裝網上的 yum clean all 發現沒解決.
繼續深入
wget --no-cache http://packages.erlang-solutions.com/rpm/centos/6/x86_64/repodata/primary.xml.gz
sha1sum primary.xml.gz
得到下面的
1572f7949d751054a14e0b24ea3f2592633d06c4 primary.xml.gz
然後找到本地的
cd /var/cache/yum/x86_64/6/erlang-solutions
vim repomd.xml
發現裡面的數值和我們計算的不一致,則修改成上面計算的.(下面是我修改後的)
<data type="primary">
<location href="repodata/primary.xml.gz"/>
<checksum type="sha">1572f7949d751054a14e0b24ea3f2592633d06c4</checksum>
<timestamp>1478542719</timestamp>
<open-checksum type="sha">61989f5a64efd4daecd0d719457a47a2290b7126</open-checksum>
</data>
儲存,退出.繼續執行 sudo yum install erlang, 我這還有個這種提示,但是繼續往下運行了. 問題解決
搞定!
問題2
[Errno 12] Timeout on
解決2
vim /etc/yum.conf
設定超時時間 加上 timeout=1200
網速慢可以設定更長點.
搞定!問題3
Error: Package: rabbitmq-server-3.6.5-1.noarch (/rabbitmq-server-3.6.5-1.noarch)
Requires: socat
解決3
看提示就是需要socat的包,
去下載socat
yum install socat
結果出現
Loaded plugins: fastestmirror, refresh-packagekit, security
Setting up Install Process
Loading mirror speeds from cached hostfile
* base: mirrors.btte.net
* extras: mirrors.btte.net
* updates: mirror.bit.edu.cn
No package socat available.
Error: Nothing to do
繼續解決,更新源
wget --no-cache http://www.convirture.com/repos/definitions/rhel/6.x/convirt.repo -O /etc/yum.repos.d/convirt.repo
yum install socat
yum install rabbitmq-server-3.6.5-1.noarch.rpm
搞定! 問題4
Error: unable to connect to node [email protected]: nodedown
解決4
這個問題官網也提到過,說是cookie不一致之類的問題.
網上搜了好多,其實在我們 開啟管理臺外掛的時候,就已經看到提示了. 那就是重啟解決.
最後執行
service rabbitmq-server restart
然後再執行命令, 果然OK.
搞定! 總結下.在centos下安裝,不同的機器可能遇到不同的問題.我安裝了3次就分別遇到不同的問題.都記錄在裡面了. 一般通過網上搜索都可以解決!
相關推薦
RabbitMQ(二)CentOS6.7 下的 HelloWorld
前一篇寫了在Windows下的安裝使用,這次記錄下CentOS6.7下的安裝使用. 其實在CentOS下和Windows下過程是一樣的,都是 先安裝Erlang環境,再安裝RabbitMQ Server. 只不過CentOS下經常遇到各種問題,所以感覺上麻煩點. 主要
centos6.7下安裝mysql5.6.22同時解決中文亂碼問題
系統服務 iptable nod -- 1.7 亂碼問題 dport 5.6 復制 1.下載 http://dev.mysql.com/downloads/mysql/ 或者使用wget下載: wget http://dev.mysql.com/get/Do
CentOS6.7下Ansible部署
utf usr 需要 meta gist roo been check tro Ansible是一種集成IT系統的配置管理, 應用部署, 執行特定任務的開源平臺. 它基於Python語言實現, 部署只需在主控端部署Ansible環境, 被控端無需安裝代理工
CentOS6.7下配置發送郵件
mail postfix MAIL服務配置 環境: [root@m01 ~]# cat /etc/redhat-release CentOS release 6.7 (Final)[root@m01 ~]# uname -mx86_64[root@m01 ~]# uname -r2.6.32-573
centos6.7下的系統備份與恢復(bacula 的安裝、配置和執行)
一、安裝bacula 這裡對上一節的第一種bacula部署結構進行介紹。 主機名 IP地址 作業系統 應用角色 baculaServer 10.0.172.185 centos6.7 Director、SD、Console baculaClient 1
linux之Centos6.7下安裝Mysql過程
謹以此博文,記錄安裝過程,自學不易,讓後面的同學少踩點坑。 安裝 yum install -y mysql mysql-server 啟動 service mysql start 如果提示不能識別的service 需要: chkconfig mysqld on 設定my
CentOS6.7下MySQL資料庫忘記root密碼解決方法
一、更改my.cnf配置檔案 編輯/etc/my.cnf檔案,在[mysqld]下新增skip-grant-tables,儲存退出。如圖: 重啟mysql服務:services mysqld restart 二、更改root密碼 重啟mysqld服務後,執行mysql命令,
Centos6/7下靜默安裝oracle10g
Centos6/7下靜默安裝Oracle10g 遠端安裝oracle10g,通過網上資料,不斷摸索成功安裝。先在本地虛擬機器Centos7上做實驗,快照恢復快照恢復,安裝了幾十次成功之後,再在伺服器Centos6上安裝,(6和7還是有區別的,比如預設防火牆)中
Linux(centos6.7)下vsftp服務的配置
vsftpd 伺服器基礎設定 1、所需要的軟體及軟體結構 在centos6下可以直接yum install vsftpd來進行安裝,可以先檢視系統是否已經安裝。 安裝完軟體之後,在/etc/vsftpd的目錄下我們可以看到一下幾個檔案,比較重要,大家務必先對這個幾個檔案的
centos6.7下的docker安裝
1.更新epel第三方軟體庫,執行命令 yum install epel-release 2.安裝docker yum install docker-io 3.修改配置檔案 vi /etc/sysco
centos6.7下安裝ambari2.2.2出現的幾種問題
1.首先是語言問題,中文會導致報錯. 修改 /etc/sysconfig/i18n 改為LANG="en_US.UTF-8" 重啟 2.其次Ambari agent machine hostname (localhost.localdomain) does not matc
Centos6.7下平滑升級SSH
最近客戶給了一個漏洞掃描報告,需要我這協助做一下ssh的漏洞修復,因為是通過堡壘機遠端進行的連線,所以,網上說的一些需要解除安裝ssh,再重新編譯的方法不適合我此時的環境,因此,採用重新build rpm包,來進行update ,這裡記錄一下。 作業系統:cen
centos6.7下安裝中文輸入法
1. 安裝中文輸入法 # yum install "@Chinese Support" 2. 設定中文輸入法 在桌面頂部的選單欄中, 依次System(系統)–Preferences(首選項
centos6.7下搭建git伺服器(2017最新版)
前提:網上有很多centos搭建git伺服器的教程,但很多都沒有說清楚,導致我在安裝的時候走了很多彎路,耗費了一天時間在那裡研究許可權管理一塊。鑑於此,準備重新發個最新版的centos搭建git伺服器。 技術交流QQ群:242722019 一.centos os
CentOS6.7下RabbitMQ3.6.14安裝報錯:{error,{missing_dependencies,[crypto,ssl],
CentOS6.7安裝RabbitMQ3.6.14報錯:重新一下openssl就可以了。1. 安裝openssltar -zvxf openssl-1.0.1s.tar.gzcd openssl-1.0.1s./config --prefix=/usr/local/opens
CentOS6.7下安裝MySQL
第一步:到MySQL官網上下載linux版本的MySQL rpm 安裝包。第二步: 將該壓塑包解壓後,有如下檔案:第三步:安裝檔案,我們需要安裝的檔案有 MySQL-server-5.6.26-1.linux_glibc2.5.i386.rpm、MySQL-cli
Centos6.7下 samba伺服器的搭建與配置(share共享模式)
Samba服務介紹 在早期的網路世界當中,檔案資料在不同主機之間的傳輸大多是使用 ftp 這個好用的伺服器軟體來進行傳送。不過使用 FTP 傳輸檔案卻有個小小的問題, 那就是你無法直接修
Centos6.7下安裝mysql5.5
error: Failed dependencies:libc.so.6()(64bit) is needed by MySQL-client-5.6.20-1.el6.x86_64libc.so.6(GLIBC_2.11)(64bit) is needed by MySQL-client-5.6.20-1.
Centos6/Centos5下openssh升級到openssh-7.5p1
升級 openssh 近日,國家信息安全漏洞共享平臺(CNVD)收錄了OpenSSH的多個漏洞(CNVD-2016-12688、CNVD-2016-12687、CNVD-2016-12686、CNVD-2016-12684,對應CVE-2016-10009、CVE-2016-10010、CVE-201
centos6.4下安裝mysql5.7.18
https chmod stat groupadd grep 內容 nload inf c-c 1、安裝前工作 在安裝前需要確定現在這個系統有沒有 mysql,如果有那麽必須卸載(在 centos7 自帶的是 mariaDb 數據庫,所以第一步是卸載數據庫)。 卸載系統自帶