WSL下Ubuntu18.04搭建Swoole运行环境

国庆节忙完工作 (ಥ _ ಥ),趁着空闲时间多,把用了两年多的(开始卡顿的)笔记本的系统重装成win10,重新搭建好工作环境后,想试下windows的子系统(WSL),以及尝试下swoole。
整个安装过程不算复杂,记录下,方便下次安装。

0. apt换源

https://www.jianshu.com/p/16502ed02e29

1. 安装基本的php及扩展

sudo apt install php7.2 php7.2-curl php7.2-gd php7.2-json php7.2-mysql php7.2-opcache php7.2-dev php-pear

其中:
* php-gmp(会自动安装) : 是一个数学扩展,“These functions allow for arbitrary-length integers to be worked with using the GNU MP library” 提供了一组方法,可以(通过GUN MP库)用来处理任意长度的integers
* php-readline(会自动安装) : 实现了访问 GNU Readline 库的接口. 这些函数提供了可编辑的命令行
* php-pear : 通过pecl安装swoole时要用到
* php-dev : 使用phpize来扩展php模块(即swoole)时用到

2. 安装swoole相关依赖

若不需要打开swoole这些模块,则不需要安装依赖依赖

sudo apt install libhiredis-dev

如果需要支持http2,需要安装nghhtp2,apt/源码安装各试了几次,编译swoole时遇到一些坑,暂时用不到先放着。

3.下载并安装swoole

根据官方文档

BashOnWindows 环境下必须关闭 daemonize 选项
需要修改 config.h 关闭 HAVE_SIGNALFD
需要先下载下来,修改文件后在编译安装

  1. 先下载,或在直接在https://github.com/swoole/swoole-src/releases 下载需要的版本
pecl download swoole
//或 wget https://github.com/swoole/swoole-src/archive/v4.2.1.tar.gz
  1. 解压
tar -zxf swoole-4.2.1.tgz
  1. 有用没用的都打开试下,也可以直接按照默认 ./configure后不加任何配置项【默认是都关闭的】
phpize && \
./configure \
--enable-openssl  \
--enable-async-redis \
--enable-sockets \
--enable-mysqlnd

并且4.0.1版本开始去除了–enable-coroutine编译选项, 改为动态配置
可选项
–enable-http2 //需要安装nghttp2

  1. 关闭 HAVE_SIGNALFD
vim config.h
//找到HAVE_SIGNALFD,注释掉,改成0还是最终运行时还是会报错【但是不影响执行】.根据其他博客中的说法:在第二步解压tgz文件后,修改config.m4文件也可以【直接删除HAVE_SIGNALFD一行即可】
/* have signalfd */
/*#define HAVE_SIGNALFD 1*/
  1. 编译安装
make && sudo make install

4. 修改php.ini

extension=swoole

php -m查看已经安装成功

发表评论

电子邮件地址不会被公开。 必填项已用*标注