laravel-swoole 学习记录

先简单记录下让 swoole 能跑起来的思路,本次应用不多,避免以后再用时忘记。

针对于 laravel 的 swoole 项目 github 上主要有两个还算活跃:laravel-S 和 laravel-swoole,本来看 laravel-S 有中文文档且篇幅不小,先探索它,无奈太小白了,一路坎坷太多最终头大暂时放下了,于是转 laravel-swoole。

首先要说明的是 swoole 目前仅支持 mac 和 Linux,所以这里在 windows 上借助 docker 来探索的。

对 swoole 定位的通俗理解(借用师傅的回答):与其说是「加速器」,更可以说是一个「中转站」或者「代理」。因为 swoole 拉起来的 http 服务使用的是 1215 端口,为了让用户可以直接通过 80 端口访问,所以才使用了 nginx 的中转(代理)功能。nginx 中的 proxy_pass 就是为了实现代理功能的关键命令。(本次只借助 swoole 提高运行效率)

1.安装

首先安装 Swoole 扩展,要进入 docker 的 php 容器执行

pecl install swoole

然后修改 php.ini 增加 一行:

extension=swoole.so

使用 composer 给 laravel 安装此扩展

composer require swooletw/laravel-swoole

发布配置,请运行以下命令以生成配置文件swoole_http.phpswoole_websocket.php在目录中/config

php artisan vendor:publish --tag=laravel-swoole

在 swoole_http.php 中,开发环境可修改 server.host 为 0.0.0.0,方便外部访问 docker 内部地址。

其默认监听端口是 1215,保持默认,所以需要在此 docker 容器的配置文件中添加一个端口映射,类似这样:laravel-swoole 学习记录_第1张图片

重启 docker 容器后 docker exec phpcontainer bash 进入容器内部执行 swoole 服务器的启动命令:

php artisan swoole:http start

这个时候就应该可以在外部通过 9001 端口访问网站了,达到用 swoole 加速的目的。

下面继续用 nginx 代理配置 swoole 服务器,将以下文档中提供的配置信息添加入 nginx 配置文件:

map  $ http_upgrade  $ connection_upgrade {
    默认升级;
    ''       关闭;
}
服务器 {
     listen  80 ;
    server_name your.domain.com;
    root / path / to / laravel / public;
    index index.php;

    location  = /index.php {
         #确保
        “public”目录中
        没有名为“not_exists” #的文件。try_files / not_exists @swoole;
    }

    location  / {
         try_files  $ uri  $ uri / @swoole;
    }

    location  @swoole {
         set  $ suffix  “” ;

        如果($ URI =的index.php){
             组 $后缀 “/” ;
        }

        proxy_set_header主机$ http_host ;
        proxy_set_header Scheme $ scheme ;
        proxy_set_header SERVER_PORT $ server_port ;
        proxy_set_header REMOTE_ADDR $ remote_addr ;
        proxy_set_header X-Forwarded-For $ proxy_add_x_forwarded_for ;
        proxy_set_header升级$ http_upgrade ;
        proxy_set_header连接$ connection_upgrade ;

        
        #IF https #proxy_set_header HTTPS“on”;

        #下面地址应填要让 nginx 中转去的 swoole 服务器的地址,比如 192.168.0.0:9001
        proxy_pass http://127.0.0.1:1215 $ suffix ;
    }
}

重启 nginx 后应该可以在外部通过 your.domain.com:80(原 nginx 的外部映射端口)访问经过 swoole 处理的项目了。

暂时先到这,待更多探索后继续补充。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(laravel-swoole 学习记录)