RabbitMQ und PHP auf Windows

Bei der Arbeit sind wir gerade dabei mit RabbitMQ ein Messagebroker aufzubauen damit verschiedenste Systeme miteinander kommunizieren können. Da wir eigentlich mit Java entwickeln, ich aber mit Java nicht so viel am Hut habe  (hab ich schon mal erwähnt, dass ich Java nicht mag?), versuchte ich also die Tutorials mit PHP durchzuspielen. Dazu musste ich aber zuerst einmal eine lokale Testumgebung auf meinem Windows-Laptop aufbauen. Leider habe ich dafür keine Anleitung gefunden, welche das von A-Z aufzeigen würde und habe entsprechend viel Zeit verloren. Hier möchte ich also die Schritte festhalten, falls ich das jemals selber wieder machen werde oder evtl jemand anders vor dem gleichen Problem steht.

ACHTUNG: Das ist eine Reine Schritt-für-Schritt-Anleitung ohne echte Erklärunge für das „warum“. Ich übernehme auch keine Garantie auf Vollständigkeit oder Verantwortung für Probleme, welche aus dieser Anleitung enstehen. Es ist nur eine Auflistung von Schritten welche bei mir zu einem funktionierenden System geführt haben.

Ziel ist ein lauffähiges System auf Windows mit AMPPS und RabbitMQ damit diese offiziellen Tutorials durchgespielt werden können. (Ich denke, das sollte so ähnlich auch für XAMPP funktionieren. Das werde ich aber noch separat testen).

Voraussetzung: ein funktionierendes AMPPS.

InSTALLATION rabbitmq

Grundlage ist dieses Tutorial: http://www.rabbitmq.com/install-windows.html

1. Schritt: downloade und installiere „Erlang“: http://www.erlang.org/download.html

2. Schritt: downloade und installiere RabbitMQ : http://www.rabbitmq.com/download.html

3. Schritt (Optional): aktiviere das Management-Plugin von RabbitMQ um via Browser zugreifen zu können:
öffne ein CMD, navigiere zum RabbitMQ-Installatinsordner und tippe folgenden Befehl:

rabbitmq-plugins enable rabbitmq_management

Wenn alles geklappt hat sollte sich jetzt unter: http://localhost:15672/ ein Login-Fenster von RabbitMQ öffnen. (Zugangsdaten guest/guest)

Da unsere Home-Laufwerke im Netzwerk liegen funktionierte das nicht auf Anhieb.  Es zeigte sich eine Fehlermeldung ähnlich dieser:

`failed to create cookie file 'X:..`

Folgende Schritte im CMD waren nötig; dabei wird am Anfang das Home-Laufwerk kurzfristig aufs C: umgestellt, und am Ende mit wieder auf den urspünglichen Wert (im Bsp X:):

SET HOMEDRIVE=C:
rabbitmq-plugins.bat enable rabbitmq_management

(ACHTUNG: das wird eine „failed“-Meldung geben, ist aber ok).

rabbitmq-service.bat stop
rabbitmq-service.bat install
rabbitmq-service.bat start
SET HOMEDRIVE=X:

(Grund ist das Erlang-Cookie, welches so an einem zugreifbaren Ort abgelegt wird).
Nun sollte das Mgmt-Plugin im Browser funktionieren.

PHP fit machen für amqp:

Leider spricht PHP nicht von Hause aus AMQP. Man muss eine Erweiterung installieren (und damit hat PHP für mich ein wenig von seiner Unschuld gegenüber Java verloren).

1.Schritt: Downloade die DLLs von der Seite: http://pecl.php.net/package/amqp/1.4.0/windows. Die benötigte Version lässt sich mit einem phpinfo() finden. Die PHP-Version steht zuoberst auf der Seite, „Thread save“ oder nicht beim Wert: „Thread Safety“.

2.Schritt:  Kopiere die DLLs in folgende Ordner (gefunden bei nathanjohnson.info):
rabbitmq.1.dll in den 32 bit library Ordner
32 bit Windows: c:\Windows\system32.
64 bit Windows: c:\Windows\SysWOW64

php_amqp.dll in den PHP extensions Ordner (zufinden mit phpinfo() bei „extension_dir“, Beispiel: „D:/Ampps/php/ext/“)

3. Schritt: Aktiviere diese Erweiterung in der php.ini mit:

extension=php_amqp.dll

Die richtige php.ini findet man am einfachsten mit phpinfo() bei „Loaded Configuration File“, Beispiel: „D:\Ampps\apache\php.ini“

4. Schritt: webserver neu starten

5. Schritt: Damit man diese Erweiterung auch in sein PHP-Projekt einbinden kann „muss“ man den Composer runterladen und installieren.

Den Windows-Installer findet man hier: https://getcomposer.org/download/

6. Schritt: Erstelle ein composer-file laut Tutorial namens „composer.json“ im Projekt-Ordner:

{
    "require": {
        "videlalvaro/php-amqplib": "v2.1.0"
    }
}

7.Schritt: öffne ein CMD, navigiere zum Projekt-Ordner und führe den folgenden Befehl aus:

composer.phar install

falls der Windows-Dialog „öffnen mit“ aufgeht, breche ab und tippe den gleichen Befehl nochmals, aber OHNE „.phar“.
Im Projektordner findet sich nun ein neuer Ordner namens „vendor“ ansonsten hat es nicht geklappt.

8. und letzter Schritt: erstelle send.php wie im Tutorial beschrieben und öffne es im Browser. Es sollte nun  „[x] Sent ‚Hello World!'“ angezeigt werden. Nun kann man sich voll auf die Tutorials konzentrieren 😉

Leave a Reply