Laravel 5でデータベース接続にUNIXドメインソケットを使う
2017-02-28
備忘録として。Laravel 5でデータベース接続にUNIXドメインソケットを使う方法を解説します。なお、本記事の検証はLaravel 5.4及びMySQL 5.7で実施しています。
UNIXドメインソケットとは
UNIXドメインソケットとは、同一OSのプロセス間でデータを交換するためのデータ通信の終点及びその方法のことです。
同一のOSのプロセス間通信なので、Webサーバー及びデータベースサーバーが同一のOS(ホスト)上で動作している必要があります。いわゆる単一サーバー構成です。
一般的に、通常のTCP接続(MySQLなら127.0.0.1:3306
での指定)よりもパフォーマンス的に有利とされています。
MySQLの設定
UNIXドメインソケットのパスを設定もしくは確認します。
MySQLの設定ファイル/etc/my.cnf
を開き、以下の行を確認します。存在しない場合は、適当なパスを設定してください。
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
socket=
に記載されているパス/var/lib/mysql/mysql.sock
が、ソケットのパスです。このパスを控えておきましょう。
設定を変更した場合は、MySQLの再起動を忘れないようにしましょう。
MySQL以外の場合も、同様にソケットの場所を設定・確認します。
Laravelの設定
データベース設定ファイルconfig/database.php
へ、環境変数からUNIXドメインソケットのパスを設定するコードを追加します。
return [
// ...
'connections' => [
// ...
'mysql' => [
// ...
'unix_socket' => env('DB_UNIX_SOCKET', ''), // この行を追加
// ...
],
// ...
],
// ...
];
あとは、.env
ファイルで、環境変数DB_UNIX_SOCKET
に/var/lib/mysql/mysql.sock
を設定すればおしまいです。
DB_CONNECTION=mysql
DB_UNIX_SOCKET=/var/lib/mysql/mysql.sock
DB_DATABASE=database_name
DB_USERNAME=username
DB_PASSWORD=password
まとめ
皆さんも、Laravel 5でデータベース接続にUNIXドメインソケットを使用してみてはいかがでしょうか。