form1.cn
Make a little progress every day

php-laravel框架做负载均衡需要的一些配置

28th of March 2020 PHP Laravel 442

负载均衡第一个考虑的是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