swoole 是 php 的一個擴展,因此安裝 swoole 本質(zhì)上就是安裝一個 php 擴展。swoole 僅支持 linux、freebsd、macos 三種操作系統(tǒng)。
安裝準備
安裝前必須保證系統(tǒng)已經(jīng)安裝了下列軟件
php-7.1?或更高版本 gcc-4.8?或更高版本 make autoconf
一般情況下前三個都已安裝,需要安裝 autoconf 這個工具。
Linux:yum?install?autoconf Mac:brew?install?autoconf
安裝 PHP 的 Swoole 擴展
1、下載 Swoole
下載地址:https://github.com/swoole/swoole-src/releases
一般情況下,下載最新版本即可。
2、解壓到 PHP 擴展目錄中,例如我的解壓路徑是:
/Applications/MAMP/bin/php/php7.2.10/include/php/ext/
解壓出來的目錄可以命名為 swoole 。
3、進入到解壓的 swoole 目錄中,執(zhí)行 phpize 命令,若該命令沒有添加到環(huán)境變量的話,可以執(zhí)行絕對路徑
sudo?/Applications/MAMP/bin/php/php7.2.10/bin/phpize
由于我的電腦上存在多個 PHP 版本,所以我指定了現(xiàn)在使用的版本來執(zhí)行命令。
命令路徑:/php安裝目錄/bin/phpize
4、執(zhí)行命令:
./configure?--with-php-config=/Applications/MAMP/bin/php/php7.2.10/bin/php-config?--enable-openss?--enable-http2
具體路徑根據(jù)實際情況修改。
5、執(zhí)行命令:
make?&&?make?install
成功后,會出現(xiàn)安裝的地址,例如我的地址是:
/Applications/MAMP/bin/php/php7.2.10/lib/php/extensions/no-debug-non-zts-20170718/
進入這個目錄,看里面是否有 swoole.so 。
6、在 php.ini 中添加 swoole 擴展。
一定要選擇當前使用的 PHP 版本配置文件,可以使用 php –ini 命令查看。我的是在:
/Applications/MAMP/bin/php/php7.2.10/conf/php.ini
打開 php.ini 文件,添加擴展:
extension=”/Applications/MAMP/bin/php/php7.2.10/lib/php/extensions/no-debug-non-zts-20170718/swoole.so”
如果使用 MAMP 集成環(huán)境的話,除了修改上述 php.ini 文件,還需要修改集成環(huán)境動態(tài)配置的 php.ini 文件,可在面板 php 選項中點擊版本后的箭頭,或者 File -> Edit Template -> PHP -> PHP 7.xx -> php.ini 進行修改。
7、安裝完成,執(zhí)行命令:
php?-m
看列表中是否有 swoole 模塊,若有則安裝成功。
執(zhí)行 php –ri swoole 命令,可查看 swoole 相關信息。
8、測試
進入到下面的路徑,具體根據(jù)實際修改:
/Applications/MAMP/bin/php/php7.2.10/include/php/ext/swoole/examples/server
里面有個 echo.php 文件,打開后看到有一行代碼:
$serv?=?new?swoole_server("0.0.0.0",?9501);
意思是監(jiān)聽所有 IP ,端口號為9501。
在命令行中,輸入命令:
php?echo.php
若命令在執(zhí)行中,沒有光標,也不報錯,那么新建命令窗口,并輸入如下命令:
Linux: netstat?-anp?|?grep?9501 Mac: ps?-ef?|?grep?9501
可以看到這個進程已經(jīng)在執(zhí)行中了,并且有 pid 進程號,測試成功!
在 thinkphp 框架中安裝 Think-Swoole 擴展
PHP 擴展安裝好之后,就要在框架中安裝擴展了。
首先,我們要先下載好 ThinkPHP 框架(Think-Swoole 擴展目前支持ThinkPHP 5.1 和 ThinkPHP 6,為了演示一些新功能,后面文章中將會使用最新的 ThinkPHP 6 框架),然后到框架根目錄下執(zhí)行 Think-Swoole 的安裝命令:
ThinkPHP 5.1 安裝命令
ThinkPHP 6 安裝命令
安裝完成后,執(zhí)行命令:
php?think?swoole
若看到下圖提示,則插件可以正常使用:
錯誤一:
我安裝好執(zhí)行上述命令的時候報錯了,查看報錯提示,發(fā)現(xiàn)是不能使用 Xdebug 這個插件,關閉就可以了。MAMP 環(huán)境下,在 php 選項里可直接關閉。
錯誤二:
[SwooleException] failed?to?listen?server?port[127.0.0.1:80],?Error:?Permission?denied[13]
打開 app/config/swoole.php ,可以看到 port 對應的是 80 端口,因為 Linux 和 Mac 中,1024 及以下端口只有超級管理員有使用權(quán)限,因此可將端口改為 9501 即可( host 默認是 127.0.0.1 ,代表監(jiān)聽本地地址,這里順便更改為 0.0.0.0 ,表示監(jiān)聽所有地址)。
swoole 服務開啟后,來測試一下,瀏覽器中輸入 127.0.0.1:9501 ,則可以正常訪問:
同時這也表明,Swoole 自帶 HTTP Server,幫我們打開了一個 http 服務,作用等效于 apache 和 nginx。
至此,Think-Swoole 插件安裝完成。