質問: "http://files.vagrantup.com/precise64.box" //ここの # を外してポートを開けました config.vm.network "forwarded_port", guest: 80, host: 8080 ``` ``` vagrant up vagrant ssh vagrant@precise64:~$ sudo apt-get update vagrant@precise64:~$ sudo apt-get install apache2 ``` テキストでは次に ``` Ubuntuはシステムの起動時にApacheが立ち上がるように設定し、インストールしたままのApacheは、 /var/www/ にあるファイルを配信します。 設定を簡単にするために、 /var/www を、デフォルトの共有ファイルである/vagrantへのシンボリックリンクに変更しましょう。 vagrant@precise64:~$ sudo rm -rf /var/www vagrant@precise64:~$ sudo ln -fs /vagrant /var/www --Mitchell Hashimoto 著 玉川竜司 訳 「実践 Vagrant」 ``` とあリます。 以下二点質問です。 1. ここで共有フォルダに置いたファイルがデフォルトでApacheから配信されるようになるので、ホストのエディタで作成した例えばhtmlなどのファイルが、共有フォルダに保存されればブラウザを更新すれば表示されるようにしている(ただしプロビジョニングの自動化はしていないのでvagrant upの度に共有ファイルの設定をしなければならない)、という理解で合っていますか? 2. vagrant@precise64:~$ sudo rm -rf /var/www の -rf オプションはどういった意味でしょうか? googleで調べても出来ませんでした... rmでリムーブするのもなぜでしょうか? vagrant@precise64:~$ sudo ln -fs /vagrant /var/www のみでリンクを貼れないのかな、と疑問に思いました。 (ちなみにvagrant@precise64:~$ sudo ln -fs /vagrant /var/wwwのみ実行すると ln: `/vagrant': hard link not allowed for directory とエラーが返ってきました) ご回答頂ければ有難いですm(_ _)m
回答: > > 1. ここで共有フォルダに置いたファイルがデフォルトでApacheから配信されるようになる > > > 結果的にはそうなるのだろうとは思いますが、 何故`/var/www`の中身を配信し始めるのかに関して知っておきましょう。 UbuntuのApache設定ファイル、どうやるんだっけ? - Qiita ubuntuの場合、`/etc/apache2/apache2.conf`のファイルから辿っていけば、`/var/www`をドキュメントルートにするという記述があるはずです。 更に元を辿れは`httpd`コマンドを利用して確認出来るのですが流石に割愛 > > 2. vagrant@precise64:~$ sudo rm -rf /var/www の -rf オプションはどういった意味でしょうか? > > googleで調べても出来ませんでした... > > > Googleに`rm -rf`と打ち込んだ場合、単語の先頭に`-`が設定されているので除外ワードとして認識されます。 `rm "-rf"`のように`"`(ダブルクォート)で囲みましょう。 因みに`rm -rf`はディレクトリを削除する時のよくあるコマンドです。 `-d`でもディレクトリを削除しますが、中のファイルが1個でも残っていれば不可能なので、再帰的(recursive)を冠する`-r`を利用します。 実際`-r`のみで実行すると「本当に○○を消してしまって大丈夫ですか?」の確認メッセージが滝のように出るので「うるさい、全部Yesださっさとしろ」の強制(force)を冠する`-f`もセットで利用されます。 詳細はぐぐるか`man rm`等で調べてみてください。 > > rmでリムーブするのもなぜでしょうか? > > > シンボリックリンクは既に存在しているファイルやディレクトリを押しのける事は出来ません。 `/var/www`が既に存在しているため新たなシンボリックリンクが作成できず、先に`rm -rf`で対象のディレクトリを削除してから張るという事を行っています。