创建laravel项目
- 宿主机:
cd /docker/www #进入你的项目目录,目录不存在mkdir先创建
composer create-project laravel/laravel shopby # composer下载创建一个laravel项目,shopby为项目名
chmod -R 777 shopby
- 创建docker容器,新创建一个php容器,命名为laravel8.49
docker run -p 9001:9001 -d --name laravel8.49 -v /docker/www:/docker/www --privileged=true php:7.4-fpm
docker exec -it laravel8.49 bash #进入容器
cd /docker/www/shopby
php artisan serve --host=0.0.0.0 --port=5201 #启动laravel项目,绑定5201端口
配置nginx反向代理
宿主机:
docker inspect laravel8.49 | grep “IPAddress” #查看容器ip地址
vim /docker/nginx/default.conf # 加入下面代码,文件目录名等参数请根据您自己的填写
server {
listen 80;
listen [::]:80;
server_name lshopby.com
root /docker/www/shopby/public;
index index.php index.html;
location / {
try_files $uri @laravels;
}
location @laravels {
proxy_http_version 1.1;
proxy_set_header Connection "";
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Real-PORT $remote_port;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header Scheme $scheme;
proxy_set_header Server-Protocol $server_protocol;
proxy_set_header Server-Name $server_name;
proxy_set_header Server-Addr $server_addr;
proxy_set_header Server-Port $server_port;
proxy_pass http://laravel;
}
}
docker restart nginx # 重启nginx服务
打开本地绑定域名,访问成功
swoole组件加速laravel
cd /docker/www/shopby
composer require hhxsv5/laravel-s
laravel-s扩展包具备自动发现功能(Laravel 5.5 以上版本可用),无需手动在 config/app.php 配置文件中注册,安装完成后,运行如下 Artisan 命令相应脚本和配置文件发布到根目录下:
php artisan laravels publish
vim .env #修改配置
#.env 加入下面代码
LARAVELS_LISTEN_IP=0.0.0.0
LARAVELS_LISTEN_PORT=5201
LARAVELS_WORKER_NUM=4
swoole方式启动laravel
php bin/laravels start #swoole方式启动
不使用swoole启动
php artisan serve --host=0.0.0.0 --port=5202 #不使用swoole启动
ab测试2种方式性能对比
vim /docker/nginxdefault.conf #修改nginx配置设置代理
#lshopby.com指向swoole版的laravel
#rshopby.com指向没有swoole的laravel
upstream laravel_swoole{
server 172.17.0.6:5201 weight=5 max_fails=3 fail_timeout=30s;
keepalive 16;
}
server {
listen 80;
listen [::]:80;
server_name lshopby.com
root /docker/www/shopby/public;
index index.php index.html;
location / {
try_files $uri @laravels;
}
location @laravels {
proxy_http_version 1.1;
proxy_set_header Connection "";
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Real-PORT $remote_port;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header Scheme $scheme;
proxy_set_header Server-Protocol $server_protocol;
proxy_set_header Server-Name $server_name;
proxy_set_header Server-Addr $server_addr;
proxy_set_header Server-Port $server_port;
proxy_pass http://laravel_swoole;
}
}
upstream laravel{
server 172.17.0.6:5202 weight=5 max_fails=3 fail_timeout=30s;
keepalive 16;
}
server {
listen 80;
listen [::]:80;
server_name rshopby.com
root /docker/www/shopby/public;
index index.php index.html;
location / {
try_files $uri @laravels;
}
location @laravels {
proxy_http_version 1.1;
proxy_set_header Connection "";
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Real-PORT $remote_port;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header Scheme $scheme;
proxy_set_header Server-Protocol $server_protocol;
proxy_set_header Server-Name $server_name;
proxy_set_header Server-Addr $server_addr;
proxy_set_header Server-Port $server_port;
proxy_pass http://laravel;
}
}
docker restart nginx # 重启nginx容器
ab测试swoole加速的laravel
ab -n 2000 -c 100 http://lshopby.com:80/
ab测试没有swoole加速的laravel
ab -n 2000 -c 100 http://rshopby.com:80/
这个ab测试结果相差还是挺夸张的…