こんにちは、私はNginx + PHP5-FPMでUbuntuウェブサーバーを設定しました。開発者がテストアプリケーションを開発できる場所から、開発者を投げ込むchroot環境(jailkitを使用)を作成しました。
Chroot刑務所:/ home/jail
NginxとPHP5-FPMはchrootの外部で実行されますが、chrootされた環境内のWebサイトで機能するように構成されています。
これまでのところ、NginxとPHP5-FPMは、以下を除いて問題なくファイルを提供しています。MySQLに接続しようとすると、次のエラーが発生します。SQLSTATE [HY000] [2002]ローカルMySQLに接続できませんソケットを介したサーバー '/var/run/mysqld/mysqld.sock'
今、私は問題がchroot環境の外でmysqld.sockを参照するchrootされていないphp.ini(実際には現在MySQLのデフォルト設定を使用しています)が原因であると私は信じています。
私の質問は、ループバックなどを介してMySQLにアクセスするようにPHPを構成するにはどうすればよいですか?(Googleの結果の提案として見つかりましたが、指示はありません)
または、他の明らかな設定がない場合は、お知らせください。ハードリンクを作成するオプションがある場合(mysqlが再起動されても利用可能なままです)、それも便利です。
私は自分の問題を解決しました。 Ubuntuは/ var/runをtmpfsに格納するため、Jailkitはmysqld.sockへのハードリンク参照を作成できませんでした。これはシステムからは別のパーティションのように見えます(ハードリンク機能が壊れています)。代わりに、次のように/ var/run/mysqldをjailにマウントしています:mount --bind /var/run/mysqld /home/jail/var/run/mysqld/
Host
値127.0.0.1
として使用するのはどうですか? TCP接続はソケットを書き込みません(unixのlocalhost
値とは異なります)を使用します。
My.cnfファイルのsocketオプションを使用してMySQLのソケットを制御できます。
socket = /home/jail/var/run/mysqld/mysqld.sock