OSXをMavericksからYosemiteにアップグレードした際に、Apacheのバージョン違いのためにlocalhostが動かなくなってしまい、復旧するための各種設定でつまづいたので、httpd.confとかhttpd-vhosts.confあたりの設定を備忘録的にまとめてみました。
はじめに
設定する項目は、以下になります。
- Apache を自動で起動させるようにする
- PHP を使えるようにする
- ~/Sites(~/サイト)を使えるようにする
- バーチャルホストを使えるようにする
- SSI を使えるようにする
編集するファイルは以下になります。
- httpd.conf
- httpd-userdir.conf
- {username}.conf
- httpd-vhosts.conf
なお、各ファイルの編集はvimを使用しています。
ターミナルで、以下のようにして編集してください。
$ sudo vim /etc/apache2/{filename}
上記コマンド入力後、ファイルが表示されたら、[A]キーを押すと編集開始、[esc]+[:]+[w]+[return]で保存、[esc]+[:]+[q]+[return]で編集終了です。省略して[esc]+[:]+[w]+[q]+[return]としても大丈夫みたいです。
Apache
Yosemiteにははじめからインストールされていますが、これを自動的に起動させるために、ターミナルで以下のコマンドを入力します。
$ sudo launchctl load -w /System/Library/LaunchDaemons/org.apache.httpd.plist
手動で(再)起動させる時は、以下のコマンドを入力します。
$ sudo apachectl restart
このコマンドは、各種ファイルを編集した際にApacheに反映されているかを確認するためによく使います。
Apacheが起動しているかどうかチェック
http://localhost/ にアクセスして、「It works!」が出ればOK。
httpd.conf を編集する
Apacheの起動が確認できたら、次はhttpd.confを編集します。
ここでPHPやバーチャルホスト等を使うための設定をして行きます。
ファイルの場所
/etc/apache2/httpd.conf
変更箇所
103、160、166、168、169行目あたりにある以下のコメントアウトを外す
#LoadModule include_module libexec/apache2/mod_include.so
#LoadModule vhost_alias_module libexec/apache2/mod_vhost_alias.so
#LoadModule userdir_module libexec/apache2/mod_userdir.so
#LoadModule rewrite_module libexec/apache2/mod_rewrite.so
#LoadModule php5_module libexec/apache2/libphp5.so
↓
LoadModule include_module libexec/apache2/mod_include.so
LoadModule vhost_alias_module libexec/apache2/mod_vhost_alias.so
LoadModule userdir_module libexec/apache2/mod_userdir.so
LoadModule rewrite_module libexec/apache2/mod_rewrite.so
LoadModule php5_module libexec/apache2/libphp5.so
212行目あたりのServerNameのコメントアウトを外して編集
#ServerName www.example.com:80
↓
ServerName {※自分の場合:PCのlocal IPに変更}
※この部分、Apacheのconfigtestで出るエラーを回避するために編集しましたが、Mavericksではエラーは出るものの触らなくても大丈夫だったので、この編集は必要ないかもしれません。
221、222行目あたり Directoryの内容を編集
AllowOverride none
Require all denied
↓
AllowOverride all
Require all granted
250行目あたり、OptionsにIndexes、Includesを追加
Options FollowSymLinks Multiviews
↓
Options FollowSymLinks Multiviews Indexes Includes
430、431行目あたりにある以下のコメントアウトを外してSSIを有効に、さらに.htmlも有効にする
#AddType text/html .shtml
#AddOutputFilter INCLUDES .shtml
↓
AddType text/html .shtml
AddOutputFilter INCLUDES .shtml .html
493、499行目あたりのコメントアウトを外す
#Include /private/etc/apache2/extra/httpd-userdir.conf
#Include /private/etc/apache2/extra/httpd-vhosts.conf
↓
Include /private/etc/apache2/extra/httpd-userdir.conf
Include /private/etc/apache2/extra/httpd-vhosts.conf
httpd-userdir.conf を編集する
ファイルの場所
/etc/apache2/extra/httpd-userdir.conf
変更箇所
16行目 コメントアウトを外す
#Include /private/etc/apache2/users/*.conf
↓
Include /private/etc/apache2/users/*.conf
ユーザーのホームにSitesフォルダを作成する
ユーザーのホームにSites(サイト)フォルダがない場合、以下のコマンドを入力します。
$ mkdir ~/Sites
{username}.conf を作成・編集する
作成する場所
/etc/apache2/users/{username}.conf
{username}.conf を作成する
以下のコマンドを入力して、{username}.conf を作成します。
$ sudo vim /etc/apache2/users/{username}.conf
{username}.conf を編集する
以下のように書き込みます。
{username} 以外はコピペしても良いかと思います。
<Directory "/Users/{username}/Sites">
AddType text/html .shtml .html
AddHandler server-parsed .shtml .html
Options Indexes MultiViews FollowSymlinks Includes
AllowOverride all
Require all granted
</Directory>
AddTypeとAddHandler、それとOptionsのIncludesはSSIを使うための記述なので、必要なければトルツメでも構いません。
httpd-vhosts.conf を編集する
ファイルの場所
/etc/apache2/extra/httpd-vhosts.conf
編集内容
以下のような内容を追記します。
私の場合、~/Sites 以下に複数のバーチャルホストを作成するので、下記の体裁で必要な分追記していきます。
下記ではポートを変更していませんが、ウチでは [http://localhost:80xx
] として使用しているので、[:80] を[:80xx] のように変更しています。
また、httpd.conf にも[Listen 80] の下に [Listen 80xx] を必要な分だけ追記しています。
なお、[Options] はSSIを使うための記述なので、必要なければトルツメで。
<VirtualHost *:80>
DocumentRoot "/Users/{username}/Sites/yourdocs"
ServerName {yourservername}
<Directory "/Users/{username}/Sites/yourdocs">
Require all granted
DirectoryIndex index.html
Options Includes
</Directory>
</VirtualHost>
さいごに
Apacheを再起動して確認します。
$ sudo apachectl restart
各設定が反映させているか確認できればおしまい。