VirtualBoxのホストとゲスト間でファイル共有する方法

前回はVirtualBox+CentOS7にGitとNode.jsをインストールしました。

開発用Webサーバーとしてはかなり使える状態になっています。

今回は、ホストOSであるMacとゲストOSのCentOS7間でのファイル共有を設定します。

これを設定すると、Macでファイルを編集すればCentOS7側にも反映されている、という状態になります。

VirtualBox+CentOS7に開発用Webサーバーを構築するお話は今回で一応の最後となります。

MacとCentOS7でファイル共有

まずはVirtualBoxマネージャー側の設定ですが、仮想マシンの設定画面から「共有フォルダ」を開き、ウインドウ右のプラスボタンを押します。

仮想マシン設定のファイル共有

仮想マシン設定のファイル共有

「フォルダーのパス」→「その他」をクリックし、共有したいフォルダを選択します。さらに下部にある「自動マウント」と「永続化する」をチェックします。

フォルダを選択して「自動マウント」と「永続化する」にチェック

フォルダを選択して「自動マウント」と「永続化する」にチェック

OKを押すと、設定画面内下の「フォルダーリスト」に選択したフォルダが追加されています。

共有フォルダを設定した状態

共有フォルダを設定した状態

ここでCentOS7を起動します。もし既に起動していた場合には再起動します。

ここからCentOS7側で操作します。起動してログインしたら、既にデスクトップ上にアイコンが表示されていると思います。

共有フォルダを設定した時のゲストOSのデスクトップ

共有フォルダを設定した時のゲストOSのデスクトップ

このフォルダをApacheで公開するフォルダとして設定します。

まずvboxsfグループにユーザーを追加し、Apacheからも接続できるようにします。

sudo gpasswd --add (ユーザー名) vboxsf
sudo gpasswd --add apache vboxsf

Apacheの公開フォルダ「/var/www/html/」の中にフォルダを新規作成し、そのフォルダに対して共有フォルダをマウントします。「/etc/rc.d/rc.local」に以下の行を追加します。

mount --bind /media/sf_(フォルダ名) /var/www/html/(フォルダ名)

ここまでではまだマウントできません。マウントのために起動時にrc.localを実行する必要がありますが、権限が無いからです。そこでchmodで実行権限を付与します。

sudo chmod u+x /etc/rc.d/rc.local

ここでCentOS7を再起動します。これで完了です。

Apacheのキャッシュ問題

私の場合、ここまでで開発をスタートしようと思ったところ、ファイルを編集してもブラウザ上では反映されない、という問題が発生しました。間違いなくファイルは変更されているのに、と思いいろいろ探るとどうやらApacheのキャッシュの問題だということが判りました。

VirtualBoxの共有フォルダを使うと、その中のファイルの変更をApacheが感知できず、キャッシュに残っているファイルがそのまま表示される、という状態です。

というわけで、Apacheの設定ファイル「httpd.conf」に以下の2行を追加します。

EnableMMAP Off
EnableSendfile Off

私はApacheのVirtualHost内に設定しました。CentOS7の端末を使ってviで表示すると以下のようになります。

httpd.confでキャッシュを無効化

httpd.confでキャッシュを無効化

これでキャッシュの問題は解決しました。

今回で終了

というわけで、ようやくまともに開発用Webサーバーとして使えるようになりました。

当然ながら開発するものによってさらに設定を必要とする部分もあるので、他の設定なども必要になります。

そのためのベースと捉えていただければよいかと思います。

スポンサードリンク

twitterまたはFacebookでもコメントして頂けます