3

PHP、Apache2、および MySQL がプリインストールされたカスタム仮想マシン ベース ボックスを入手しました。したがって、このボックスを使用して仮想マシンを起動するだけで、Chef Cookbooks から上記のものをインストールする必要はありません。

ただし、インストールしようとしている Chef Cookbook が 1 つありますが、失敗しています。インストールしようとしているクックブックは、MySQL データベースに接続して使用する PHP スクリプトを実行します。

失敗する理由は、PHP が mysql サーバーに接続できないためです。スクリプトが接続を試みた時点で MySQL が開始されていない (または準備ができていない) ためだと思います。VM を起動したときにのみ失敗します。プロビジョニングすると(vagrantプロビジョニング)、機能します。そのため、PHP スクリプトが接続を試みたときに MySQL の準備ができていないと思います。

エラー:

mysql_connect(): ソケット '/var/run/mysqld/mysqld.sock' (2) を介してローカル MySQL サーバーに接続できません .....

Chef Cookbook Recipe のコード:

execute "doInstall" do
  cwd "/vagrant"
  command "php path/to/my/script.php"
end

何か案は?

4

1 に答える 1

1

多分あなたはすることができます

service "mysql" do
  action :start, :immediately
end

レシピの最初に、または単にヒューリスティックを実行します

execute "doInstall" do
  cwd "/vagrant"
  command "sleep 10; php path/to/my/script.php"
end

これは私には少し汚いようですが、あなたの問題をすぐに解決するかもしれません。

于 2013-03-19T17:27:01.823 に答える