资讯专栏INFORMATION COLUMN

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

jerryloveemily / 1959人阅读

摘要:安装命令环境下必须关闭选项需要修改关闭在下开发可以使用来方便的开发应用,安装好后再里的选项里共享代码所在磁盘。为源码所在路径为容器内路径在里执行编译安装扩展是按照标准扩展构建的。

环境依赖

仅支持 Linux、FreeBSD、MacOS 三种操作系统

在Windows平台,可使用CygWin或WSL(Windows Subsystem for Linux)

Linux 内核版本 2.3.32 以上

gcc4.4 以上版本或者clang

4.x版本起需要gcc-4.8或更高版本, 编译失败请先尝试升级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平台(树莓派Raspberry PI)

请使用 1.7.10 或更高版本

使用 GCC 交叉编译

在编译 Swoole 时,需要手工修改 Makefile 去掉 -O2 编译参数

MIPS平台(OpenWrt路由器)

请使用 swoole-1.7.21 或更高版本

使用 GCC 交叉编译

CygWin环境支持(Windows系统)
swoole-1.7.7 增加了对 cygwin 环境的支持,在 Windows 环境下,可以直接使用 cygwin + php 来跑 swoole 程序。

安装 cygwin,并安装 gcc、make、autoconf、php 4个包

下载swoole源码,在 cygwin-shell 中进行 phpize/configure/make/make install

修改 php.ini,加入 swoole.so

cygwin 模式下需要对 PHP 进行简化,去掉不使用的扩展,避免进程占用内存过大,导致 Fork 操作失败
BashOnWindows
Windows 10 系统增加了 Linux 子系统支持,BashOnWindows 环境下也可以使用 swoole。安装命令
    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

BashOnWindows 环境下必须关闭 daemonize 选项

需要修改 config.h 关闭 HAVE_SIGNALFD

DockerOnWindows
在 Windows 下开发可以使用 Hyper-V+Docker 来方便的开发 Swoole 应用,安装好 Docker 后再 Settings 里的 Shared Droves 选项里共享代码所在磁盘。然后使用如下命令来快速启动 Docker 容器。

e:/path/to 为源码所在路径

/app 为容器内路径

在 bash 里执行 cd /app && php server.php

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

请下载releases版本的swoole,直接从github主干上拉取最新代码可能会编译不过

如无特殊需求, 请务必编译安装swoole的最新版本

如果当前用户不是root,可能没有PHP安装目录的写权限,安装时需要sudo或者su

如果是在git分支上直接git pull更新代码,重新编译前务必要执行make clean

安装准备

PHP 7.0或更高版本[7.2.9]

Swoole 4.x.0以上版本[4.2.8]

redis[4.2.0]

mysqli

pdo

hiredis

sockets

mysqlnd

编译示例
cd swoole
sudo phpize (找不到,需要指定php的bin下的phpize)
sudo ./configure --with-php-config=php的bin下的php-config --enable-sockets --enable-http2 --enable-async-redis --enable-mysqlnd
sudo make && make install
配置php.ini
编译安装成功后,修改php.ini加入
extension=swoole.so
重启php-fpm
通过php -m或phpinfo()来查看是否成功加载了swoole.so,如果没有可能是php.ini的路径不对,可以使用php --ini来定位到php.ini的绝对路径。
hiredis安装
github地址:https://github.com/redis/hiredis
cd /deps/hiredis
sudo make && make install
sudo mkdir /usr/lib/hiredis
sudo cp libhiredis.so /usr/lib/hiredis //将动态连接库libhiredis.so至/usr/lib/hiredis
sudo mkdir /usr/include/hiredis
sudo cp hiredis.h /usr/include/hiredis
http2
依赖nghttp2库
mac安装:brew install nghttp2
nginx配置
看个人喜好,可选择不配置
server {
    listen 80;
    root WORKERDIR/swoole/;
    server_name swoole-test.cn;
    location / {
        #如果$uri对应的文件存在,在nginx处理,否则把请求交给swoole处理
        try_files $uri @swoole;
    }
    location @swoole {
        proxy_http_version 1.1;
        proxy_redirect off;
        proxy_set_header Connection "keep-alive";
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        if (!-e $request_filename) {
          proxy_pass http://127.0.0.1:9501;
        }
        if (!-f $request_filename) {
          proxy_pass http://127.0.0.1:9501;
        }
        proxy_connect_timeout 300s;
        proxy_send_timeout 300s;
        proxy_read_timeout 300s;
        proxy_set_header Host $host;
    }
   fastcgi_connect_timeout 300;
   fastcgi_send_timeout 300;
   fastcgi_read_timeout 300;

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/29714.html

相关文章

  • 使用swoole改造laravel应用

    摘要:使用改造应用标签空格分隔概述介绍是为开发的生产级异步编程框架。然后你可以看到以下信息现在可以通过访问来进入应用。 使用swoole改造laravel应用 标签(空格分隔): php 1. 概述 1.1 swoole介绍 Swoole 是为 PHP 开发的生产级异步编程框架。 他是一个纯 C 开发的扩展, 他允许 PHP 开发者在 PHP 中写 高性能,可扩展的并发 TCP, UDP,...

    cpupro 评论0 收藏0
  • 【宇润日常疯测-007】Swoole 协程与传统 fpm 同步模式比较

    摘要:初识协程执行结果协程与同步模式比较我们一直在说协程适合用于密集场景,在同样的硬件配置环境下,它会比传统的同步模式承载更多的访问量。假设一次查询为,在传统同步模式下,当前进程在这的时间里,是不能做其它操作的。同步模式,耗费左右的是。 如果说数组是 PHP 的精髓,数组玩得不6的,根本不能算是会用PHP。那协程对于 Swoole 也是同理,不理解协程去用 Swoole,那就是在瞎用。 首先...

    henry14 评论0 收藏0
  • Swoole 初探:环境搭建入门案例

    摘要:对于这一问题企业一般多会采用其他技术,比如使用或者其他语言。但是有了之后,由于底层全是用语言实现,其出色的性能深受追捧。由于以前适用场景的局限性比较大,所以会有说重新定义了的说法。到这里的环境已经搭建完成了。 Swoole 是一个 php 的扩展,它的核心目标就是解决 php 在实现一些高访问 server 服务中可能遇到的一系列问题,这些问题用原生的 php 往往并不能很方便高效的解...

    toddmark 评论0 收藏0
  • nginx、swoole高并发原理初探

    摘要:一阅前热身为了更加形象的说明同步异步阻塞非阻塞,我们以小明去买奶茶为例。等奶茶做好了,店员喊一声小明,奶茶好了,然后小明去取奶茶。将响应结果发给相应的连接请求处理完成因为基于,所以每个可以处理无数个连接请求。如此,就轻松的处理了高并发。 一、阅前热身 为了更加形象的说明同步异步、阻塞非阻塞,我们以小明去买奶茶为例。 1、同步与异步 ①同步与异步的理解 同步与异步的重点在消息通知的方式上...

    denson 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<