作者:Y_虞儿 | 来源:互联网 | 2023-08-29 14:16
通过Composer安装(packagist)。必须是3.7版本3.5会报错composerrequirehhxsv5laravel-s:~3.7.0-vvv#确保你的co
- 通过Composer安装(packagist)。必须是3.7版本3.5会报错
composer require "hhxsv5/laravel-s:~3.7.0" -vvv
# 确保你的composer.lock文件是在版本控制中
2.注册Service Provider(以下两步二选一)。
Laravel
: 修改文件config/app.php
,Laravel 5.5+支持包自动发现,你应该跳过这步
'providers' => [ //... Hhxsv5\LaravelS\Illuminate\LaravelSServiceProvider::class, ],
Lumen
: 修改文件bootstrap/app.php
$app->register(Hhxsv5\LaravelS\Illuminate\LaravelSServiceProvider::class);
3.发布配置和二进制文件。
-
每次升级LaravelS后,需重新publish;点击Release去了解各个版本的变更记录。
-
php artisan laravels publish
# 配置文件:config/laravels.php
# 二进制文件:bin/laravels bin/fswatch bin/inotify
4.修改配置config/laravels.php
:监听的IP、端口等,请参考配置项。
运行
php bin/laravels {start|stop|restart|reload|info|help}
在运行之前,请先仔细阅读:
注意事项(非常重要)。
- 命令说明
start
启动LaravelS,展示已启动的进程列表 "ps -ef|grep laravels"。支持选项 "-d|--daemonize" 以守护进程的方式运行,此选项将覆盖laravels.php
中swoole.daemonize
设置;支持选项 "-e|--env" 用来指定运行的环境,如--env=testing
将会优先使用配置文件.env.testing
,这个特性要求Laravel 5.2+
stop
停止LaravelSrestart
重启LaravelS,支持选项 "-d|--daemonize" 和 "-e|--env"reload
平滑重启所有Task/Worker/Timer进程(这些进程内包含了你的业务代码),并触发自定义进程的onReload
方法,不会重启Master/Manger进程;修改config/laravels.php
后,你只能
调用restart
来实现重启
与Nginx配合使用(推荐)
gzip on;
gzip_min_length 1024;
gzip_comp_level 2;
gzip_types text/plain text/css text/Javascript application/json application/Javascript application/x-Javascript application/xml application/x-httpd-php image/jpeg image/gif image/png font/ttf font/otf image/svg+xml;
gzip_vary on;
gzip_disable "msie6";
upstream swoole {# 通过 IP:Port 连接server 127.0.0.1:5200 weight=5 max_fails=3 fail_timeout=30s;# 通过 UnixSocket Stream 连接,小诀窍:将socket文件放在/dev/shm目录下,可获得更好的性能#server unix:/xxxpath/laravel-s-test/storage/laravels.sock weight=5 max_fails=3 fail_timeout=30s;#server 192.168.1.1:5200 weight=3 max_fails=3 fail_timeout=30s;#server 192.168.1.2:5200 backup;keepalive 16;
}
server {listen 80;# 别忘了绑Host哟server_name laravels.com;root /xxxpath/laravel-s-test/public;access_log /yyypath/log/nginx/$server_name.access.log main;autoindex off;index index.html index.htm;# Nginx处理静态资源(建议开启gzip),LaravelS处理动态资源。location / {try_files $uri @laravels;}# 当请求PHP文件时直接响应404,防止暴露public/*.php#location ~* \.php$ {# return 404;#}location @laravels {# proxy_connect_timeout 60s;# proxy_send_timeout 60s;# proxy_read_timeout 120s;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://swoole;}
}
使用laravel-s导致tymon/jwt-auth用户返回上一次认证用户信息解决
- 在laravel中用了laravel-s导致tymon/jwt-auth每次获取用户信息的时候总是返回上一次用户的信息,可以设置config/app.php中的providers配置为:
-
'providers' => [Illuminate\Pagination\PaginationServiceProvider::class,// 不要移动这两个组件的顺序\Illuminate\Auth\AuthServiceProvider::class,\Tymon\JWTAuth\Providers\LaravelServiceProvider::class,......],
swoole easywechat 支付回调出现 Invalid request XML.
vendor/overtrue/wechat/src/Payment/Notify/Handler.php
把$this->app['request']->getContent(); 改成think\facade\Request::getContent();
最后重启swoole就可以了。