(Mac)ApacheのVirtual Hostによる開発環境構築手順

ApacheのVirtual Hostで開発環境を構築する

Mac OSでWebサーバーソフト、Apache HTTP Server(以下Apache)を使用して開発環境を構築する方法をメモします。
(MacにはデフォルトでApacheがバンドルされています)

ひとつのWebサーバーで複数のWebサイトを管理する事が出来る、ApacheのVirtual Hostという機能を利用します。

環境 : Mac OS High Sierra 10.13.12, Apache 2.4.28

Apacheの起動と確認

ターミナルを開き、以下のコマンドを叩いてApacheのバージョンを確認出来ます。

httpd -v
$ httpd -version
Server version: Apache/2.4.28 (Unix)

Apacheを起動する

sudo apachectl start

ブラウザから以下URLへアクセス
http://localhost/

デフォルトで用意されている以下のページが表示されればOK

テストページを作成する

ホームディレクトリ配下にあるSitesディレクトリ内へテスト用の妥当なhtmlページを作成します。

~/Sites/apache-test/index.htmlを作成

Apacheの設定を変更する

作成したテスト用ページをApacheで実行するために以下の設定ファイルにそれぞれ変更を加えていきます。

/etc/apache2/extra/httpd-vhosts.conf
/etc/apache2/httpd.conf
/etc/apache2/extra/httpd-userdir.conf
/etc/apache2/users/(ユーザ名).conf

1. /etc/apache2/extra/httpd-vhosts.conf

管理者権限でファイルを開く

sudo vi /etc/apache2/extra/httpd-vhosts.conf

ファイル内、※VirtualHostタグで以下のように記述する

<VirtualHost *:80>
    ServerAdmin webmaster@dummy-host2.example.com
    DocumentRoot "/Users/username/Sites/apache-test"
    ServerName apache-test
    ErrorLog "/private/var/log/apache2/dummy-host2.example.com-error_log"
    CustomLog "/private/var/log/apache2/dummy-host2.example.com-access_log" common
</VirtualHost>

※ <VirtualHost *:80>タグは初期状態で2つありますが、下の方を変更すればOKです。

DocumentRoot
サイトの公開ディレクトリ(ドキュメントルート)を指定する

ServerName
ページにアクセスするためのホスト名を指定する
http://ホスト名/

開発環境を追加する場合はこちらのVirtualHostタグを丸ごとコピーして下に追記し、DocumentRoot と ServerName を開発するサイトごとに書き換えればOKです。

2. /etc/apache2/httpd.conf

管理者権限でファイルを開く

sudo vi /etc/apache2/httpd.conf

以下の箇所の行頭の#記号(コメントアウト)を削除して設定を有効化する

LoadModule userdir_module libexec/apache2/mod_userdir.so
Include /private/etc/apache2/extra/httpd-userdir.conf
Include /private/etc/apache2/extra/httpd-vhosts.conf

3. /etc/apache2/extra/httpd-userdir.conf

管理者権限でファイルを開く

sudo vi /etc/apache2/extra/httpd-userdir.conf

以下の箇所の行頭の#記号(コメントアウト)を削除して設定を有効化する

Include /private/etc/apache2/users/*.conf

※ こちらの記述により、後述の /etc/apache2/users/(ユーザ名).conf を読み込みます。

4. /etc/apache2/users/(ユーザ名).conf

管理者権限でファイルを開く

sudo vi /etc/apache2/users/(ユーザ名).conf

Directoryタグで指定されている値が、Sitesディレクトリのパスになっていることを確認します。

<Directory "/Users/username/Sites">
        Options Indexes MultiViews
        AllowOverride All
        Require all granted
</Directory>

Apacheを再起動

Apacheを再起動して設定を反映します。

sudo apachectl restart

/etc/hosts ファイルの設定

Apacheの設定が完了したら /etc/hosts を編集して VirtualHostで指定した ServerName と ローカルホストのIPアドレスを紐づけます。

/etc/hosts ファイル(管理者権限で開く)

sudo vi /etc/hosts

IPアドレス 127.0.0.1の箇所、デフォルトで記載の「localhost」に続けてホスト名を追記

##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting.  Do not change this entry.
##
127.0.0.1       localhost apache-test
255.255.255.255 broadcasthost
::1             localhost

テストページへアクセス

http://apache-test/

初回はホスト名の前にスキームhttp:// を付けてアクセスすると確実です。


テストページが表示されればOK

公開ディレクトリをSites以外にしたい場合

公開ディレクトリをSitesディレクトリ以外の場所に指定したい場合は以下のように設定します。

(例)/Users/(ユーザ名)/Documents配下のディレクトリを指定したい

Virtual Hostのドキュメントルート

/etc/apache2/extra/httpd-vhosts.conf

<VirtualHost *:80>
    ServerAdmin webmaster@dummy-host2.example.com
    DocumentRoot "/Users/username/Documents/apache-test"
    ServerName apache-test-document
    ErrorLog "/private/var/log/apache2/dummy-host2.example.com-error_log"
    CustomLog "/private/var/log/apache2/dummy-host2.example.com-access_log" common
</VirtualHost>

/etc/apache2/users/(ユーザ名).confにDirectorytタグを追加して /Users/(ユーザ名)/Documentsで公開出来るようにする

<Directory "/Users/username/Documents">
        Options Indexes MultiViews
        AllowOverride All
        Require all granted
</Directory>

設定が完了したら、Apacheを再起動します。

Webブラウザからのアクセスがエラーになる

Apacheの設定ファイルに記述ミスがある場合、「You don’t have permission to access / on this server.」や「このサイトにアクセスできません」等のエラーがブラウザに表示されます。

以下のコマンドを実行し、Apacheの設定ファイルの記述エラーをチェックします。

apachectl configtest

もしくは、

apache2ctl configtest


(エラーの存在するファイル名や、行番号が確認出来る)

修正後にApacheを再起動し、実行確認します。

Follow me!

(Mac)ApacheのVirtual Hostによる開発環境構築手順” に対して2件のコメントがあります。

コメントは受け付けていません。