rabbitMQ php實踐第一步,安裝與其中的坑
阿新 • • 發佈:2019-01-11
摘要:經過了兩天的rabbitMQ的理論學習,決定開始實踐。本想著一箇中間件的安裝應該挺簡單的,沒想到也是大坑跌出,最終把經驗記錄一下
一、安裝rabbitMQ
rabbitMQ(以下全部簡稱為rmq)是由erlang編寫的,在安裝rmq之前應該還要安裝erlang的環境。不過在mac上由於homebrew的存在就是這一切變得很簡單:
$ brew update
$ brew install rabbitmq
安裝完畢後就在
/usr/local/Cellar/rabbitmq/3.5.3/ 路徑下了, {PATH}/sbin/rabbitmq-server便是服務啟動程式了
二、安裝rabbitMQ-c
這是第一個坑,php使用amqp與rmq進行通訊,php擴充套件是C來寫的,而這個rabbitMQ-c就是一個c與rmq通訊庫,必須要安裝!下面是安裝命令以及資源地址:
$ git clone git://github.com/alanxz/rabbitmq-c.git
$ mkdir build && cd build
$ cmake -DCMAKE_INSTALL_PREFIX=/usr/local ..
$ cmake --build . --target install
安裝可以用cmake也可以用原始碼包來安裝,這個隨意。接下來就是一個巨坑了,花費了博主兩天時間才搞定。。。真是一口老血:
# ./librabbitmq/amqp_openssl_hostname_validation.h:34:10:
fatal error:
'openssl/x509v3.h' file not found
#include <openssl/x509v3.h>
rmq依賴ssl進行通訊,但是make時找不到檔案。試了7-8種方案,baidu...google...stackoverflow,包括換資源包、從新安裝openssl、換cmake進行安裝等,最終問題根源與解決方案在下面:
TA把mac出廠的openssl嚴格的保護了起來,homebrew安裝的openssl在編譯時根本沒派上用場,不想動原來的東西,又需要讓新的openssl派上用場,這裡需要用到link了:
$ brew link openssl
# Warning: openssl is keg-only and must be linked with --force
# Note that doing so can interfere with building software.
$ brew link openssl —force
# inking /usr/local/Cellar/openssl/1.0.2e_1... 1556 symlinks created
成功了,在回去安裝一下rmq-c,可以編譯過了!!!
三、安裝php amqp擴充套件
常規的解壓縮,phpize,configure ,安裝,把.so檔案加入php.ini配置,重啟,OK!
附帶config引數: –with-php-config={PATH}/php-config –with-amqp
四、使用composer安裝client lib
{
"require": {
"php-amqplib/php-amqplib": ">=2.6.1"
} } 接下來就是最驚心動魄的,結合理論來實踐了! 總結: 以前碰到問題解決都是寫在evernote內給自己使用的,現在放到部落格上會多寫一些心得以供分享吧。 無論是寫程式本身、元件、系統都會碰到很多問題。有些疑難雜症在面前擋著,感覺就像進入了一道迷宮,眼前有好幾個可能可行的解決方案,不知道哪個才能解決問題,而汪汪每一個解決方案未必是一執行就能知道是否有效的,下面也許是更多新的分叉路,讓問題變得撲朔迷離。這是沒有辦法的事,但一定把問題真的搞清楚,吸收變成自己的經驗,即使當下很忙之後也要抽空去整理歸納,這樣才能把越來越多而疑難雜症變成小問題。
"require": {
"php-amqplib/php-amqplib": ">=2.6.1"
} } 接下來就是最驚心動魄的,結合理論來實踐了! 總結: 以前碰到問題解決都是寫在evernote內給自己使用的,現在放到部落格上會多寫一些心得以供分享吧。 無論是寫程式本身、元件、系統都會碰到很多問題。有些疑難雜症在面前擋著,感覺就像進入了一道迷宮,眼前有好幾個可能可行的解決方案,不知道哪個才能解決問題,而汪汪每一個解決方案未必是一執行就能知道是否有效的,下面也許是更多新的分叉路,讓問題變得撲朔迷離。這是沒有辦法的事,但一定把問題真的搞清楚,吸收變成自己的經驗,即使當下很忙之後也要抽空去整理歸納,這樣才能把越來越多而疑難雜症變成小問題。