当前位置: 首页 > 文档资料 > Swoole 中文文档 >

安装Swoole

优质
小牛编辑
134浏览
2023-12-01

Swoole扩展是按照PHP标准扩展构建的。使用phpize来生成编译检测脚本,./configure来做编译配置检测,make进行编译,make install进行安装。

  • 如无特殊需求, 请务必编译安装Swoole的最新release版本或v4.4LTS
  • 如果当前用户不是root,可能没有PHP安装目录的写权限,安装时需要sudo或者su
  • 如果是在git分支上直接git pull更新代码,重新编译前务必要执行make clean
  • 仅支持 Linux(2.3.32 以上内核)、FreeBSDMacOS 三种操作系统,低版本Linux系统(如CentOS 6)可以使用RedHat提供的devtools编译,参考文档, 在Windows平台,可使用CygWinWSL(Windows Subsystem for Linux)
  • 部分扩展与Swoole扩展不兼容,参考扩展冲突

安装准备

安装前必须保证系统已经安装了下列软件

  • php-7.1 或更高版本
  • gcc-4.8 或更高版本
  • make
  • autoconf

快速安装

1.下载swoole源码

2.从源码编译安装

下载源代码包后,在终端进入源码目录,执行下面的命令进行编译和安装

!> ubuntu 没有安装phpize可执行命令:sudo apt-get install php-dev来安装phpize

cd swoole-src && \
phpize && \
./configure && \
make && sudo make install

3.启用扩展

编译安装到系统成功后, 需要在php.ini中加入一行extension=swoole.so来启用Swoole扩展

进阶完整编译示例

!> 初次接触Swoole的开发者请先尝试上方的简单编译,如果有进一步的需要,可以根据具体的需求和版本,调整以下示例中的编译参数。编译参数参考

以下脚本会下载并编译master分支的源码, 需保证你已安装所有依赖, 否则会遇到各种依赖错误

mkdir -p ~/build && \
cd ~/build && \
rm -rf ./swoole-src && \
curl -o ./tmp/swoole.tar.gz https://github.com/swoole/swoole-src/archive/master.tar.gz -L && \
tar zxvf ./tmp/swoole.tar.gz && \
mv swoole-src* swoole-src && \
cd swoole-src && \
phpize && \
./configure \
--enable-openssl  \
--enable-http2 && \
make && sudo make install

PECL

注意: PECL发布时间晚于Github发布时间

Swoole项目已收录到PHP官方扩展库,除了手工下载编译外,还可以通过PHP官方提供的pecl命令,一键下载安装

pecl install swoole

添加Swoole到php.ini

最后,编译安装成功后,修改php.ini加入

extension=swoole.so

通过php -m来查看是否成功加载了swoole.so,如果没有可能是php.ini的路径不对。
可以使用php --ini来定位到php.ini的绝对路径,Loaded Configuration File一项显示的是加载的php.ini文件,如果值为none证明根本没加载任何php.ini文件,需要自己创建。

!> 对PHP版本支持和PHP官方维护版本保持一致,参考PHP版本支持时间表

其他平台编译

ARM平台(树莓派Raspberry PI)

  • 使用 GCC 交叉编译
  • 在编译 Swoole 时,需要手工修改 Makefile 去掉 -O2 编译参数

MIPS平台(OpenWrt路由器)

  • 使用 GCC 交叉编译

Windows WSL

Windows 10 系统增加了 Linux 子系统支持,BashOnWindows 环境下也可以使用 Swoole。安装命令

apt-get install php7.0 php7.0-curl php7.0-gd php7.0-gmp php7.0-json php7.0-mysql php7.0-opcache php7.0-readline php7.0-sqlite3 php7.0-tidy php7.0-xml  php7.0-bcmath php7.0-bz2 php7.0-intl php7.0-mbstring  php7.0-mcrypt php7.0-soap php7.0-xsl  php7.0-zip
pecl install swoole
echo 'extension=swoole.so' >> /etc/php/7.0/mods-available/swoole.ini
cd /etc/php/7.0/cli/conf.d/ && ln -s ../../mods-available/swoole.ini 20-swoole.ini
cd /etc/php/7.0/fpm/conf.d/ && ln -s ../../mods-available/swoole.ini 20-swoole.ini

!> WSL 环境下必须关闭 daemonize 选项
低于17101WSL,源码安装configure后需要修改 config.h 关闭 HAVE_SIGNALFD

Docker官方镜像

https://hub.docker.com/r/phpswoole/swoole

编译选项

这里是./configure编译配置的额外参数,用于开启某些特性

通用参数

--enable-openssl

启用SSL支持

使用操作系统提供的libssl.so动态连接库

--with-openssl-dir

启用SSL支持 并 指定openssl库的路径, 需跟上路径参数: --with-openssl-dir=/opt/openssl/

--enable-http2

开启对HTTP2的支持

依赖nghttp2库, 在v4.3.0后不再需要安装依赖, 改为内置, 但仍需要增加该编译参数来开启http2支持

特殊参数

!> 如无历史原因不建议启用

--enable-mysqlnd

启用mysqlnd支持,启用Coroutine\MySQL::escapse方法。启用此参数后,PHP必须有mysqlnd模块,否则会导致Swoole无法运行。

依赖mysqlnd模块

--enable-sockets

增加对php的sockets资源的支持。开启此参数,swoole_event_add就可以添加sockets扩展创建的连接到Swoole事件循环中。
ServerClientgetSocket()方法也需要依赖此编译参数。

依赖sockets扩展, v4.3.2后该参数的作用被削弱了, 因为Swoole内置的Coroutine\Socket可以完成大部分事情

Debug参数

!> 生产环境不可以启用

--enable-debug

打开调试模式。使用gdb跟踪需要在编译Swoole时增加此参数。

--enable-debug-log

打开内核DEBUG日志。(Swoole版本 >= 4.2.0)

--enable-trace-log

打开追踪日志,开启此选项后swoole将打印各类细节的调试日志,仅内核开发时使用

PHP编译参数

--enable-swoole

静态编译Swoole扩展到PHP中

!> 此选项是在编译PHP而不是Swoole时使用的

安装视频教程

安装常见问题