http://www.puphpet.comを使用して、多くのプロジェクトの vagrant+puppet 環境を正常に生成しています。そして今週、Laravel 4 を使ったプロジェクトのプロトタイプを書く仕事を任されました。私はフルタイムでプロジェクトに取り組むつもりはないので、VM 環境を作るのが最善だと考えました。人はレポのクローンを作成できます。Laravel 4 の経験があまりないので、開発環境ですべてを問題なく実行できました。次に、最初の移行を実行しようとしましたが、ここで問題はapp/storage
ファイルのアクセス許可から始まります。
1. アプリ/ストレージは Web ユーザーが書き込み可能である必要があります
同期されたフォルダーのプロビジョニングから id: vagrant を取り出し、所有者とグループを次のように www-data に設定します。
config.vm.synced_folder "./www", "/var/www", owner: "www-data", group: "www-data"
2. Artisan は vagrant ボックス内からのみ実行でき、DB にアクセスできます。
vagrant ssh
www フォルダーから artisan を実行します。
3.移行を使用するには、アプリ/ストレージとアプリ/データベースがvagrantユーザーによって書き込み可能である必要があります
Grrr、わかりました、次のひどいコードをvagrantファイルに追加しました(注、最初にPuppetでこれを実行しようとしましたが、かかりませんでした):
config.vm.provision :shell, :inline =>
"usermod -a -G www-data vagrant"
4. app/storage と app/database はグループによって書き込み可能ではありません
ああああ!!! では、この Puppet ディレクティブを試してみましょう。
file { "/var/www/app/storage":
source => "/var/www/app/storage/",
mode => 0775,
ensure => 'directory',
owner => 'www-data',
group => 'www-data',
recurse => true
}
いいえ、うまくいきません。Puppetexec {}
ディレクティブで同じことを試みましたが、効果がありませんでした。vagrant 同期フォルダーのアクセス許可は、ゲストではなくホスト マシンによって設定されているようです。
最後に、ホスト マシンのフォルダーのアクセス許可を手動で変更することになりました。これを行う簡単な方法はありますか?次の開発者に、クローン作成後にすべてを再セットアップするのではなく、レポからクローンできる心配のない環境を提供できるようにしたいと本当に思っています。
アップデート
Apache 実行ユーザーを変更すると、リロード時に vagrant がそれをオーバーライドしないことがわかりました。そのため、手動で行ったところ、同期されたフォルダーのアクセス許可と所有者を変更するよりもうまく機能しています。現在、Puppet でその変更を手動で行う方法を見つけようとしています。