Laradock 使用 Swoole

  • 环境:mac
  • docker 版本:2.0.0.3(31259)
  • laradock 版本 :254a9ae19490b53fc8f0647d81b7581c312f0724
  • laravel 版本:5.4.*
  • laravel-swoole 版本:^2.5
  1. 首先我们需要在 laradock.env文件下面修改WORKSPACE_INSTALL_SWOOLE=true
  2. 重新 build 一下虚拟机 docker-compose build workspace
  3. 重新 build 好了之后,启动
  4. 进入虚拟机检查一下是否安装成功了 php -m | grep swoole,如果打印出了swoole,就证明安装成功了
  5. 接下来,我们要修改一下 nginx 的配置文件
         map $http_upgrade $connection_upgrade {
             default upgrade;
             ''      close;
         }
         upstream laravels {
             # Connect IP:Port
             server workspace:1215 weight=5 max_fails=3 fail_timeout=30s;
             keepalive 16;
         }
         server {
    
             listen 80;
         #    listen [::]:80 ipv6only=on;
    
             server_name yourdomain.com;
             root /var/www/swoole/public;
             index index.php index.html index.htm;
             error_log /var/www/swoole_error.log;
    
             location = /index.php {
                 # Ensure that there is no such file named "not_exists"
                 # in your "public" directory.
                 try_files /not_exists @swoole;
             }
    
             location / {
                  try_files $uri $uri/ @swoole;
             }
    
             location @swoole {
                 set $suffix "";
    
                 if ($uri = /index.php) {
                     set $suffix ?$query_string;
                 }
    
                 proxy_set_header Host $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 Upgrade $http_upgrade;
                 proxy_set_header Connection $connection_upgrade;
    
                 # IF https
                 # proxy_set_header HTTPS "on";
    
                 proxy_pass http://laravels$suffix;
             }
    
             location ~ /\.ht {
                 deny all;
             }
    
             location /.well-known/acme-challenge/ {
                 root /var/www/letsencrypt/;
                 log_not_found off;
             }
         }
    
    这份配置文件,是参照官方文档的,这里面有个很关键的地方,就是修改 upsteam 那里,server workspace:1215。因为我们 Nginx 的运行是跟 laravel 的环境在不同一台机子的,所以你必须修改这里的upsteam,不然就会造成502。
  6. 接下来,我们进入我们的 laravel 项目,安装一下laravel-swoolecomposer require laravel-swoole
  7. 然后接下来,我们可以修改一下 .env 文件,让laravel-swoole变成守护进程启动还有指定 swoole 代理的host,SWOOLE_HTTP_HOST=workspace SWOOLE_HTTP_DAEMONIZE=true,端口我没有修改,默认是1215,如果有需要可以自行修改,记得修改nginx。
  8. php artisan swoole:http start,启动swoole,打开我们的网页
  9. 我修改了host,所以我用的是自定义的域名,打开之后如果你看到
    image.png

    恭喜你,成功了。另外,假设你发现启动了swoole 之后,性能反而变慢了,那就要进行一些参数调优了,具体可以参照官方的文档swoole,这里就不展开讲了。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 《Docker环境下的前后端分离部署与运维》课程脚本 [TOC] 一、Docker虚拟机常用命令 先更新软件包yu...
    mingminy阅读 648评论 0 0
  • =========================================================...
    lavor阅读 3,623评论 0 5
  • Nginx简介 解决基于进程模型产生的C10K问题,请求时即使无状态连接如web服务都无法达到并发响应量级一万的现...
    魏镇坪阅读 2,180评论 0 9
  • =========================================================...
    _灯火阑珊处阅读 2,528评论 0 3
  • 从未觉得窗外地里的小树种得那么整齐 从未发现黄色的土地里还有未收割的玉米秸 从未发现窗外的民居是那么错落有致 从未...
    四月的麦田阅读 430评论 0 3

友情链接更多精彩内容