负载均衡第一个考虑的是session的会话保持,如果使用4层负载均衡协议可以使用ip哈希来解决,如果7层协议可以使用cookie植入的方法进行全话保持,本人使用的时阿里云SLB,所以需要配置session共享的操作
laravel默认开启csrf,使用的是csrf_token()生成一个随机字符串保存在浏览器和session文件中.然后根据浏览器返回的cookie来找到对应的session文件,获取其中的token进行对比,所以要继续使用csrf就需要session共享
第一步确认下,laravel保持会话方式 config/auth.php文件
'guards' => [ 'web' => [ 'driver' => 'session', 'provider' => 'users', ], ···
第二步查看session文件,看下目前的使用的方式
'driver' => env('SESSION_DRIVER', 'file'),
目前采用的是file的方式,这边我们修改成“database”,多台服务器使用同一个数据库(先确认.env文件是否配置)
‘driver’ => env(‘SESSION_DRIVER’, ‘database’),
当前文件下要配置统一的domain,一定要确认是否都是一致的
'domain' => env('SESSION_DOMAIN', "www.****.com"),
第三步配置数据库表 session表
php artisan session:table php artisan migrate (根据提示输入yes)
输入上述两条指令,即可创建 session表
migrate 某一个指定的迁移文件?
在 database/migrations/ 目录下创建一个新的目录,比如 single/ 将你要 migrate 的那个文件移到上一步创建的 single/ 目录 命令行执行下面的命令: php artisan migrate --path=/database/migrations/single
Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes的解决方式
Laravel 5.4对默认数据库字符集进行了更改,现在utf8mb4它包含了对存储表情符号的支持。这只会影响新的应用程序,只要您运行MySQL v5.7.7及更高版本,就不需要做任何事情。
正如迁移指南中所述,要解决此问题,您只需编辑 AppServiceProvider.php文件并在 boot方法内设置默认字符串长度:
use Illuminate\Support\Facades\Schema; public function boot() { Schema::defaultStringLength(191); }
之后,一切都应该正常工作。
增强服务器处理能力可选方案
Openresty + php-fpm 和 使用 Swoole 加速 Laravel QPS