在 laradock 环境中使用 laravel-swoole 加速你的 laravel 应用。

安装laravel-swoole

1
2
composer require swooletw/laravel-swoole
php artisan vendor:publish --tag=laravel-swoole

开放 workspace 端口

laradock/workspace/Dockerfile 最后添加一行:

1
EXPOSE 1215

然后重新 build workspace 容器。

修改 nginx 配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
upstream swoole-http {
server workspace:1215;
}

map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}

server {

listen 80;
listen [::]:80;

# For https
# listen 443 ssl;
# listen [::]:443 ssl ipv6only=on;
# ssl_certificate /etc/nginx/ssl/default.crt;
# ssl_certificate_key /etc/nginx/ssl/default.key;


server_name study.test;
root /var/www/laravel-learn/public;
index index.php index.html index.htm;

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 "/";
}
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";

charset utf-8;

proxy_pass http://swoole-http$suffix;
}
}

然后重启 nginx

修改 laravel env

1
2
3
SWOOLE_HTTP_HOST=workspace
SWOOLE_HTTP_DAEMONIZE=true
SWOOLE_HOT_RELOAD_ENABLE=true

启动 swoole

1
php artisan swoole:http start | stop | restart | resload

开发环境热更新

调整 swoole_http 中 max_request = 1