swoole 的安装
ok,上一篇我们安装了php7.4, 虽然在各个机子上安装了千百回了,下面我们开始安装swoole.
https://wiki.swoole.com/#/
上面是官网,学什么都是刷文档, 上方文档是必须刷一遍的。这篇文章是记录安装过程,我看下有没有什么坑。
一,centos7 , php7.4 上面swoole的安装。
一上来给了三个源码地址,先下载呗
git clone https://github.com/swoole/swoole-src.git
我选了第一个。
好慢,发现phpize我没安装。
yum install php74-php-devel
然后phpize命令并不可用,找不到命令。
find / -name phpize
找到命令在
/opt/remi/php74/root/usr/bin/phpize
直接执行报错
Cannot find config.m4.
Make sure that you run '/opt/remi/php74/root/usr/bin/phpize' in the top level source directory of the module
找了半天原因
[https://www.jianshu.com/p/49e9c6b21ec4](https://www.jianshu.com/p/49e9c6b21ec4)
就是说
phpize 命令必须在扩展的文件夹内才可以使用
。
先不管,我swoole下载好了, github慢,下次建议用csdn的快些。
于是按照步骤
cd swoole-src && \
phpize && \
./configure && \
make && sudo make install
我进入目录后phpize果然可以执行了, 但不是直接phpize,是
/opt/remi/php74/root/usr/bin/phpize
想直接能执行,把文件放/usr/bin/就好了, 建一个软硬链接。我这里先不管。
./configure 时报错。
configure: error: Cannot find php-config. Please use --with-php-config=PATH
我们的目录
/opt/remi/php74/root/usr/bin/php-config 我用find命令找到的。
所以尝试命令
./configure --with-php-config=/opt/remi/php74/root/usr/bin/php-config
我想起了我本地gcc版本,我查看下
gcc -v 是 gcc 版本 4.8.5。将将符合需求,不管这个。
make && sudo make install
应该安装成功了。
查看下php.ini位置
php74 -i|grep php.ini
然后 extension=swoole.so
php -m 查看,已经有swoole模块了。
总结来讲还是有坑的哈, 主要是我php安装不一样。
安装到一半看见其实有命令 pecl install swoole , 就不用编译那么费劲了。
官方给了一个docker官方镜像,可我根本打不开。我在本地docker, 开个php7.4容器。自己再编译安装下。
我本地workeman 已经对应了 60001~60005端口。我们swoole就对应
60010~60015端口吧。
开容器
docker run -itd -p 60010:60010 -p 60011:60011 -p 60012:60012 -v /Users/guanliyang/php:/usr/share/nginx/html --name swoole4-php7.4 77cd7cd803b2
只对应3个接口吧, 只用来学习够用了。进容器
docker exec -it b7f9b5fc3b64 /bin/bash
还挺麻烦的,主要啥都没有
apt-get update
apt-get install git
git clone https://gitee.com/swoole/swoole.git
咱们试试国内这个云地址是快些不, 牛,国内的确实秒速。
只不过前两条命令要半个多小时,csdn不到10秒。
gcc -v
这个gcc version 8.3, 够新,放心。
还是这几个命令
cd swoole-src && \
phpize && \
./configure && \
make && sudo make install
这里phpize有的,不用担心,make test 不用执行, 刚刚看视频说了,内置了test, 你执行也报一堆黄色错误,没啥用。
我们和上面一样用find命令查找下php.ini位置, 发现没有。
/usr/local/etc/php
我们仿照这个copy一个
cp php.ini-development php.ini
有了。容器里真完蛋,我下载个vim用了一个小时。慢的要死。
vim /usr/local/etc/php/php.ini
添加 extension=swoole.so
验证下
php -m
哦,有了。
到此我们安装成功了,至少看上去是这样。
例子代码贴上去,端口改成60010 ,php 执行,不报错,证明安装成功。
我们容器里安装两个命令。 ps 和 apt-get install telnet
apt-get install telnet
apt-get install procps
ps 命令
经过测试, 我mac宿主机去
telnet 127.0.0.1 60010
报错
Escape character is '^]'.
直接退出。
docker里面安装了 telnet, 执行后, php 挂起程序输出
Client: Connect.
例子算半通,不管继续下面的学习。
正好我搭建了两套环境, centos中我也测试了一下,结果一样。
总之证明安装成功了,往下学习。
思考一下
例子中ip是127.0.0.1, 我在docker中开php进程, 在宿主机telnet 127.0.0.1 60010,并不通,
还是docker老问题,mac上宿主机ping不通容器ip。
我又测试了一下,centos上开php进程,
mac上 telnet 192.168.1.4 9501 还是不通。
证明不是这么玩的哈,其实workeman也不通,workeman ip
写的是 0.0.0.0 就是所有ip都通的,写127.0.0.1 ,就只有在本机上,才telnet。
至于开放端口,在哪都能通,我们还得往下看。
安装成功,往下看,继续扫描文档。