LoginSignup
7
8

More than 5 years have passed since last update.

Vagrantの共有フォルダにゲストOSのapacheが書き込めない件

Posted at
ホストがOSX,ゲストがCentOS7でやっています。

Vagrantの共有フォルダ(Synced Folders)はこれが無かったらVagrant使ってねーよってぐらい便利です。
Vagrantfileに下記の感じで書くだけですし。

config.vm.synced_folder "/var/www/hogehoge", "/var/www/hogehoge", create:true

apacheの設定でEnableSendfileをoffにしていないとファイルを更新しても反映されないので注意。apacheのhttpd.confにネットワーク越しにマウントしているときはoffにしてねと書いてあります。

さて、これで共有フォルダをapache経由で表示できる様になりましたが、上記設定だと共有ファイルのownerが全部vagrantになってしまいます。その為、apacheから共有フォルダに書き込めません。パーミッションを0777に変更しようとしても変更出来ません。そこでファイルに書き込めるように以下の設定をします。

config.vm.synced_folder "/var/www/hogehoge", "/var/www/hogehoge", create:true,owner:"apache",group:"apache"

こうすると、共有フォルダ内のownerが全てapacheになって書き込めるようになります。

さて、そうすると今度は別の問題が出てきてしまいました。バッチ処理でファイルを書き込むときにapacheユーザーでないと書き込めません。なので、結局nfsでつなぐことに。macだとnfsでつなぐのちょこっと設定するだけなので簡単です。

config.vm.synced_folder "/var/www/hogehoge", "/var/www/hogehoge", :nfs => true

こんな感じでファイルは全てuid 501になります。

cat /etc/exports
# VAGRANT-BEGIN: 501 c44222be-6460-4c1a-a320-b3423ef74144
"/private/var/www/hogehoge" 192.168.12.12 -alldirs -mapall=501:20
# VAGRANT-END: 501 c44222be-6460-4c1a-a320-b3423ef74144

これで色々OKだったのですが、PHPのセッションファイルがファイルを600で作るので作った後に書き込めないというw
最終手段でゲスト上のapacheユーザーのuidを/etc/passwdを書き換えて501にしちゃいました。

パーミッションだけを変えるなんかいい方法あるんだろうか・・・。

7
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
8