1. 程式人生 > >RabbitMQ(二)CentOS6.7 下的 HelloWorld

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
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.
解決方法見7)中的問題1.解決後繼續

因為網速慢,遇到問題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.7Ansible部署

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.7MySQL資料庫忘記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.7RabbitMQ3.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/Centos5openssh升級到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 數據庫,所以第一步是卸載數據庫)。 卸載系統自帶