ホーム > Programming > Mac (OS X Mountain Lion) でApache & PHP を有効にし、Dropboxで同期する方法

Mac (OS X Mountain Lion) でApache & PHP を有効にし、Dropboxで同期する方法

2013 年 5 月 16 日 コメントをどうぞ コメント

MacとWindowsを併用していて、それぞれデスク用とモバイル用に2台ずつある。
従来から、ApacheのDocument RootはDropbox内に入れておいて、WindowsでのみApacheを動かして開発していた。

最近、Adobe Museを使ったり、Coda2を試したりでMacでの開発環境も整えたいなと思い、Apache&PHPを使えるようにした。

このメモは、Mac (OS X 10.8 / Mountain Lion) でApacheを起動し、PHPを有効にし、なおかつDropboxでDocument Rootを同期し、ステージング環境としてドメイン名でローカルの環境にアクセスできるようにする一連の作業の流れ。

  1. とりあえずApacheが起動することを確認する。Mountain LionではWeb共有の機能が無くなっているので、Terminalから起動する。
    sudo apachectl start

    Safariで http://localhost/ にアクセス、「It works!」が表示されれば起動できている。

  2. 作業しやすいように設定ファイルがまとめられている /private/etc 以下に自分がアクセスできるよう権限を追加する。
    具体的には、ファインダの「移動→フォルダへ移動」で /etc を指定して /private/etcに移動し、Command + i でフォルダの情報を表示。「共有とアクセス権」の鍵アイコンを解除し、+ ボタンを押して出てくる自分の名前を選択、「読み/書き」を選択、歯車アイコンをクリックし「内包している項目に適用…」を指定してウィンドウを閉じる。(これで/etc以下のファイルを自分だけ自由に読み書きできる)
  3. Apacheの設定ファイル /private/etc/apache2/httpd.conf を適当なテキストエディタで開き、Dropbox内のフォルダをDocument Rootに指定するよう設定を書き換える。
    書き換えるのは2カ所
    169行目くらい、Document RootにDropbox内の開発データが入っているフォルダを指定する

    前:DocumentRoot /Library/WebServer/Documents
     ↓
    後:DocumentRoot /Users/ユーザー名/Dropbox/開発フォルダ

    もう一カ所、196行目くらいの ディレクティブの指定も同じパスに変更する

    前:<Directory "/Library/WebServer/Documents">
     ↓
    後:<Directory "/Users/ユーザー名/Dropbox/開発フォルダ">
  4. PHPを動かすため、httpd.confの117行目くらいにあるphpモジュールの読み込み指定のコメントアウトを解除する
    前:#LoadModule php5_module libexec/apache2/libphp5.so
     ↓
    後:LoadModule php5_module libexec/apache2/libphp5.so
  5. 複数サイトの開発環境を用意するため、バーチャルホストを使えるようにする。
    httpd.confの476行目付近でバーチャルホスト用の設定ファイルをインクルードする指定があるので、コメントアウトを解除する

    前:#Include /private/etc/apache2/extra/httpd-vhosts.conf
     ↓
    後:Include /private/etc/apache2/extra/httpd-vhosts.conf
  6. httpd.confを上書き保存、そして設定を反映するためApacheを再起動
    sudo apachectl restart
  7. この時点で http://localhost/ にアクセスすると、 Access Denied とかエラーが出るはず。これはDropbox内の開発環境のフォルダにApacheが権限がないためアクセスできないことが原因。なので、開発フォルダをApacheが読み出し&実行できるように chmod コマンドで権限を調整する。
    まず、開発フォルダにアクセスするため、Dropboxフォルダの権限調整

    sudo chmod 755 /Users/ユーザー名/Dropbox/

    次に、開発フォルダ内の全フォルダ・全ファイルの権限調整

    sudo chmod -R o+r /Users/ユーザー名/Dropbox/開発フォルダ
  8. ドメイン名で開発環境にアクセスできるように、まず hosts ファイルで名前とIPのマッピングをする。
    /private/etc/hosts をエディタで開き、ファイル末尾にIPアドレスとホスト名・ドメイン名の対応を書き加える。
    ボクの場合、本番と開発環境ではホスト名を変えてどちらも同時にアクセスできるようにしている。たとえば本番サイトが http://xyz.jp/ の場合、開発環境は http://local.xyz.jp/ でアクセスできる。localでもdevでもbetaでもかまわないし、hostsを都度編集するなら本番と同じでもかまわない。

    127.0.0.1 local.xyz.jp
    127.0.0.1 local.abc.com

    hostsは上書き保存すればだいたいそのまま反映される。もし反映されない気がしたら以下のコマンドでキャッシュをクリアするとよい。

    sudo dscacheutil -flushcache
  9. 今度はApache側でホスト名・ドメイン名の設定をする。設定は /private/etc/apache2/extra/httpd-vhosts.conf なので、httpd-vhosts.conf をエディタで開いて、不要な設定は消してしまい、その後に以下のようにVirtualHost ディレクティブで設定を追加する。
    NameVirtualHost local.abc.com:80
    <VirtualHost local.abc.com:80>
        DocumentRoot /Users/ユーザー名/Dropbox/開発フォルダ/abc.com
        ServerName local.abc.com
    </VirtualHost>
    NameVirtualHost local.xyz.jp:80
    <VirtualHost local.xyz.jp:80>
        DocumentRoot /Users/ユーザー名/Dropbox/開発フォルダ/xyz.jp
        ServerName local.xyz.jp
    </VirtualHost>
  10. 設定を保存したら、Apacheを再起動して反映する。
    sudo apachectl start
  11. 今度はSafariで、 http://local.abc.com/ あるいは http://local.xyz.jp/にアクセスして、ホスト名・ドメイン名で開発環境にアクセスできることを確認する。

以上で設定は完了。

Mountain LionはMacを再起動した後もApacheの状態が維持されており、一度Apacheを起動すると止めるまで動いている。自分のネットワークで開発しているうちはいいけれど、公共のネットワークに繋ぐ場合は他人がアクセスしてきてもおかしくないので、不要な時はApacheを止める。

sudo apachectl stop

あくまで今日(2013.5.15)時点での状況なので、今後のアップデートで変わるかもしれないので注意。

カテゴリー: Programming
  1. 2013 年 8 月 11 日 03:08 | #1

    参考にさせて頂きました。
    VirtualHostの設定で悩んでいたのですが、おかげさまで解決しました。
    ありがとうございます!

  2. まる。
    2013 年 10 月 3 日 19:16 | #2

    2の手順を行うと、
    etc配下のsudoersの権限設定も変更されてしまって、
    sudoコマンドが実行できなくなりました。
    /private/etc/sudoersを個別に権限設定(0440)して実行できるようには
    なりましたが、気になったのでご報告まで。

  1. トラックバックはまだありません。