当前位置: 首页 > 后端技术 > PHP

swoole入门3-swoole开发环境搭建

时间:2023-03-29 14:54:52 PHP

环境在Windows平台上只依赖于Linux、FreeBSD、MacOS三个操作系统,可以使用CygWin或者WSL(WindowsSubsystemforLinux)Linux内核版本2.3.32或者abovegcc4.4orabovegcc-4.8orhigherversionisrequiredfromversionorclang4.x,如果编译失败,请尝试升级gcc编译为libswoole.so作为C/C++库,需要使用cmake-2.4以上版本,推荐使用Ubuntu14、CentOS7、MAC10.14.0以上操作系统PHP版本依赖Swoole-4.x需要PHP-7.1.0以上不依赖PHP的stream、sockets、pcntl、posix、sysvmsg和其他扩展名。PHP只需要安装最基本的扩展ARM平台(树莓派RaspberryPI)请使用1.7.10或更高版本使用GCC交叉编译编译Swoole时需要手动修改Makefile去掉-O2编译参数MIPS平台(OpenWrtRouter)请使用swoole-1.7.21或更高版本并使用GCC交叉编译CygWin环境支持(Windows系统)swoole-1.7.7增加了对cygwin环境的支持。Windows环境下,可以直接使用cygwin+php运行swoole程序。安装cygwin,安装gcc、make、autoconf、php4个包下载swoole源码,在cygwin-shell中执行phpize/configure/make/makeinstall修改php.ini,添加swoole.socygwin模式简化PHP,去掉不用的extensions,避免进程占用过多内存导致Fork操作失败。BashOnWindows10系统增加了对Linux子系统的支持,在BashOnWindows环境下也可以使用swoole。安装命令peclinstallswooleecho'extension=swoole.so'>>/etc/php/7.0/mods-available/swoole.inicd/etc/php/7.0/cli/conf.d/&&ln-s../../mods-available/swoole.ini20-swoole.inicd/etc/php/7.0/fpm/conf.d/&&ln-s../../mods-available/swoole.ini20-swoole.在iniBashOnWindows环境中,必须关闭daemonize选项。config.h需要关闭。HAVE_SIGNALFDDockerOnWindowsWindows下开发可以使用Hyper-V+Docker方便的开发Swoole应用。安装Docker后,在Settings中的SharedDrives选项中共享代码所在的磁盘。然后使用如下命令快速启动Docker容器。e:/path/to为源码所在路径/app为容器内路径在bash中执行cd/app&&phpserver.php编译安装Swoole扩展是按照PHP标准扩展构建的。使用phpize生成编译检测脚本,./configure进行编译配置检测,make进行编译,makeinstall进行安装。请下载releases版本的swoole,直接从github主干拉取最新代码,可能编译通过。但是如果没有特殊要求,请务必编译安装最新版本的swoole。如果当前用户不是root,则可能没有对PHP安装目录的写权限。安装时需要sudo或su如果直接在git分支上gitpull更新代码,请务必在重新编译安装前执行makeclean并准备PHP7.0或更高版本[7.2.9]Swoole4.x.0或更高版本[4.2.8]redis[4.2.0]mysqlipdohiredissocketsmysqlnd编译示例cdswoolessudophpize(找不到,需要在phpbin下指定phpize)sudo./configure--with-php-config=php-configphpbin下--enable-sockets--enable-http2--enable-async-redis--enable-mysqlndsudomake&&makeinstallconfigurephp.ini编译安装成功后,修改php.ini,添加extension=swoole.so通过php-m重启php-fpm或者phpinfo()查看swoole.so是否加载成功,如果没有加载成功可能是php.ini的路径不对,可以使用php--ini定位到php.ini的绝对路径。hiredis安装github地址:https://github.com/redis/hirediscd/deps/hiredissudomake&&makeinstallsudomkdir/usr/lib/hiredissudocplibhiredis.so/usr/lib/hiredis//动态链接库libhiredis.so到/usr/lib/hiredissudomkdir/usr/include/hiredissudocphiredis.h/usr/include/hiredishttp2依赖nghttp2库mac安装:brewinstallnghttp2nginx配置看个人喜好,可以选择不配置server{listen80;rootWORKERDIR/swoole/;server_nameswoole-test.cn;location/{#如果$uri对应的文件存在,则在nginx中处理,否则将请求交给swoole处理try_files$uri@swoole;}location@swoole{proxy_http_version1.1;proxy_redirect关闭;proxy_set_header连接“保持活动状态”;proxy_set_headerX-Real-IP$remote_addr;proxy_set_headerX-Forwarded-For$proxy_add_x_forwarded_for;如果(!-e$request_filename){proxy_passhttp://127.0.0.1:9501;}if(!-f$request_filename){proxy_passhttp://127.0.0.1:9501;}proxy_connect_timeout300秒;proxy_send_timeout300s;proxy_read_timeout300s;proxy_set_header主机$host;}fastcgi_connect_timeout300;fastcgi_send_timeout300;fastcgi_read_timeout300;