読者です 読者をやめる 読者になる 読者になる

GeekFactory

int128.hatenablog.com

Apache Qpidのインストール

linux message queue

AMQP実装の一つであるApache Qpidのインストールについて残しておきます。ドキュメント斜め読みで作業してるので、不足等ありましたらご指摘いただけると嬉しいです。

使用してるもの:

Broker (C++)

メッセージブローカーをインストールします。

依存関係は qpid-0.12/cpp/INSTALL に記載されています。 yum 等でインストールしておきましょう。EC2 Micro Instanceでビルドする場合はスワップを作成しておくことをお勧めします。

cd qpid-0.12/cpp
./bootstrap
./configure --prefix=/usr/local/qpid
make
sudo make install

デーモンの実行ユーザを作成します。

sudo groupadd -g 56 qpidd
sudo useradd -u 56 -g 56 -d /usr/local/qpid -s /sbin/nologin qpidd
sudo chown qpidd:qpidd /usr/local/qpid
sudo chown qpidd:qpidd -R /usr/local/qpid/var
sudo cp qpid-0.12/cpp/etc/qpidd /etc/init.d/qpidd

起動スクリプトは配布パッケージの qpid-0.12/cpp/etc/qpidd にあります。 /usr/local/qpid にインストールした場合は下記のように改変します。

--- tmp/qpid-0.12/cpp/etc/qpidd 2010-06-11 21:49:52.000000000 +0900
+++ /etc/init.d/qpidd   2011-10-29 17:48:13.485728409 +0900
@@ -35,6 +35,8 @@
 # description: Qpidd is an AMQP broker. It receives, stores, routes and forwards messages using the AMQP protcol.
 # processname: qpidd
 
+basedir=/usr/local/qpid
+
 prog=qpidd
 lockfile=/var/lock/subsys/$prog
 pidfile=/var/run/qpidd.pid
@@ -49,8 +51,8 @@
 RETVAL=0
 
 #ensure binary is present and executable
-if [[ !(-x /usr/sbin/$prog) ]] ; then
-    echo "/usr/sbin/$prog not found or not executable" 
+if [[ !(-x $basedir/sbin/$prog) ]] ; then
+    echo "$basedir/sbin/$prog not found or not executable" 
     exit 5
 fi
 
@@ -62,9 +64,9 @@
 fi
 
 start() {
-        [[ $QPID_DATA_DIR ]] || QPID_DATA_DIR=/var/lib/qpidd
+        [[ $QPID_DATA_DIR ]] || QPID_DATA_DIR=$basedir/var/lib/qpidd
         echo -n $"Starting Qpid AMQP daemon: "
-       daemon --pidfile $pidfile --check $prog --user qpidd /usr/sbin/$prog --data-dir $QPID_DATA_DIR --daemon $QPIDD_OPTIONS
+       daemon --pidfile $pidfile --check $prog --user qpidd $basedir/sbin/$prog --data-dir $QPID_DATA_DIR --daemon $QPIDD_OPTIONS
        RETVAL=$?
        echo
        [ $RETVAL = 0 ] && touch $lockfile
@@ -72,7 +74,7 @@
            touch $pidfile
            chown qpidd.qpidd $pidfile
             [ -x /sbin/restorecon ] && /sbin/restorecon $pidfile
-           runuser - -s /bin/sh qpidd -c "/usr/sbin/$prog --check > $pidfile"
+           runuser - -s /bin/sh qpidd -c "$basedir/sbin/$prog --check > $pidfile"
        fi
        return $RETVAL
 }
sudo /etc/init.d/qpidd start

Management tools

管理ツールをインストールします。

cd qpid-0.12/python
sudo ./setup.py install --prefix /usr/local/qpid
cd qpid-0.12/tools
sudo ./setup.py install --prefix /usr/local/qpid
cd qpid-0.12/extra/qmf
sudo ./setup.py install --prefix /usr/local/qpid

site-packagesが別の場所に入るため、 PYTHONPATH で指定しておきます。ディストリビューションに合わせて設定してください。ここでは /etc/profile.d/qpid-tools.sh で指定しました。

# Set up path for Apache Qpid tools
export PATH="$PATH:/usr/local/qpid/bin"
export PYTHONPATH="${PYTHONPATH}${PYTHONPATH:+:}/usr/local/qpid/lib/python2.6/site-packages"

ブローカー一覧が表示されれば成功です。

qpid-stat -b

サンプルは qpid-0.12/python/examples 等に入っています。