一、workerman安裝php
workerman是php的一個socket框架,簡化了socket編程,已經爲不少企業所用,今天在centos的ngix+php下安裝了workerman,過程記錄以下。mysql
官網上給的教程nginx
可是我已經安裝了php環境,因此跳過上面的1,2,3,4步驟,直接下載workerman的zip包,進行第5步安裝。git
進入workerman的目錄進行安裝以下。提示錯誤github
[root@localhost server]# ls mysql nginx-1.4.4 phpredis workerman mysql-5.6.21 php redis-2.8.19 nginx php-5.5.7 redis-2.8.19.tar.gz [root@localhost server]# cd workerman/ [root@localhost workerman]# cd workerman/ [root@localhost workerman]# ls bin Common conf Core logs [root@localhost workerman]# cd bin [root@localhost bin]# ls workermand [root@localhost bin]# ./workermand start Workerman is starting ... ----------------------- EXTENSION ------------------------------ * pcntl [NOT SUPORT BUT REQUIRED] You have to enable pcntl Workerman start fail
缺乏擴展pcntl,這個擴展時workerman必須的,這個擴展時php包裏有的,可是我在編譯php的時候沒有--enable-pcntl,在php的源碼包裏果真找到了這個擴展源碼包,下面就是加入這個擴展。web
加入這個擴展後,重啓php-fpm,nginx,再次開啓workermanredis
[root@localhost bin]# ./workermand start Workerman is starting ... ----------------------- EXTENSION ------------------------------ * sysvshm [NOT SUPORT] * sysvmsg [NOT SUPORT] * libevent [NOT SUPORT] ------------------------ WORKERS ------------------------------- user worker listen processes status root BusinessWorker none 32 [OK] root Gateway tcp://0.0.0.0:8480 4 [OK] root StatisticProvider tcp://0.0.0.0:55858 1 [OK] root StatisticWeb tcp://0.0.0.0:55757 1 [OK] root StatisticWorker udp://0.0.0.0:55656 1 [OK] ---------------------------------------------------------------- Workerman start success ...
workerman安裝成功。sql
二、workerman分離編程
雖然workerman能夠做爲Webserver的替代Nginx PHP-FPM等架構,而且性能也比Nginx PHP-FPM高,可是咱們不推薦這樣作,由於PHP的WebServer市場上已經很成熟了,workerman不會再去作重複的事情。反而workerman把精力花在傳統WebServer沒法勝任的角色上,例如非HTTP協議的應用、TCP長連接應用、UDP應用、IM、遊戲服務器、物聯網等。
下載一個基於workerman的聊天框架https://github.com/walkor/workerman-chat,文件結構以下centos
從workerman的配置文件能夠看到,只要將項目放在applications文件夾下均可以運行,由於workerman包含了其配置文件。
用戶訪問的是Web目錄,若是Web目錄放在這裏,web服務器採起的是workerman的內置的服務器,我想將這個Web分離出來,用個人nginx服務器,workerman只是作socket的解析,如何來實現呢?其實很簡單
個人機器上的lnmp能夠訪問的路徑是/alidata/www/yii2newstest/web,我只要上面的Web目錄放在這個/alidata/www/yii2newstest/web中,其餘的不用作任何的更改,就能夠實現訪問了。