Apache 仮想ドメイン設定

384氏的なApache2設定のメモです。Debian 8 環境です。

次のようなフォルダ構成でバーチャルドメイン構成にします。

ディレクトリ構成

/home/www-dataの下に各サイトごとにディレクトリを分けるようにします。

 /home
  └─ /www-data     
     ├─ /www.example.com  ・・・サイト1用(www.example.com)フォルダ
     │   ├─ /html       ・・・ドキュメントルート
     │   ├─ /pass       ・・・パスワードファイル保存用
     │   └─ /log        ・・・ログ用
     ├─ /blog.example.com  ・・・サイト2用(blog.example.com)フォルダ
     │   ├─ /html
     │   └─ /log
     ├─ /ipcam.example.com ・・・別Webサーバ転送用(ipcam.example.com)フォルダ
     │   └─ /log
     └─ /default      ・・・デフォルトサイト用フォルダ
         ├─ /html
         └─ /log

※IPカメラ用はリバースプロキシ機能により内部の別のIPアドレスに転送する。(別Webサーバを公開する)

設定手順

インストール

Apache2、PHP5をインストール

apt-get install apache2 php5

各種モジュールの有効化

a2enmod rewrite      #WordPressを利用する際に必要
a2enmod proxy_http   #リバースプロキシ機能を利用するため必要

デフォルトサイト設定

ディレクトリを作成する。

mkdir /home/www-data
mkdir /home/www-data/default
mkdir /home/www-data/default/html
mkdir /home/www-data/default/log
chown -R www-data.www-data /home/www-data

/etc/apache2/sites-available/000-default.confファイルを編集する。

<VirtualHost *:80>
        ServerAdmin webmaster@localhost
        DocumentRoot /home/www-data/default/html
        ErrorLog /home/www-data/default/log/error.log
        CustomLog /home/www-data/default/log/access.log combined
        <Directory />
                Options Indexes FollowSymLinks
                AllowOverride None
                Require all granted
        </Directory>
</VirtualHost>

※Debian7ではdefulat.confでした。

サイト1(www.example.com)設定

ディレクトリを作成する。

mkdir /home/www-data/www.example.com
mkdir /home/www-data/www.example.com/html
mkdir /home/www-data/www.example.com/pass
mkdir /home/www-data/www.example.com/log
chown -R www-data.www-data /home/www-data/www.example.com

/etc/apache2/sites-available/www.example.com.confファイルを作成する。

<VirtualHost *:80>
        ServerName www.example.com
        ServerAdmin webmaster@localhost
        DocumentRoot /home/www-data/www.example.com/html/
        ErrorLog /home/www-data/www.example.com/log/error.log
        LogLevel warn
        CustomLog /home/www-data/www.example.com/log/access.log combined
        <Directory />
                Options FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
                Require all granted
        </Directory>
</VirtualHost>

※Debian7では最後の「.conf」はつけていませんでした。

サイトを有効にする。

a2ensite www.example.com
/etc/init.d/apache2 reload

サイト2(blog.example.com)設定

サイト1(www.example.com)と同様の方法でサイト2(blog.example.com)作成する。

別Webサーバ転送用(ipcam.example.com)設定

ディレクトリを作成する。

mkdir /home/www-data/ipcam.example.com
mkdir /home/www-data/ipcam.example.com/log
chown -R www-data.www-data /home/www-data/ipcam.example.com

/etc/apache2/sites-available/ipcam.example.com.confファイルを作成する。

<VirtualHost *:80>
        ServerName ipcam.example.com
        ServerAdmin webmaster@localhost
        ProxyPass / http://192.168.0.12:7777/
        ProxyPassReverse / http://192.168.0.12:7777/
        ErrorLog /home/www-data/ipcam.example.com/log/error.log
        LogLevel warn
        CustomLog /home/www-data/ipcam.example.com/log/access.log combined
</VirtualHost>

※別WebサーバのIPアドレスが192.168.0.12でポートが7777の場合

サイトを有効にする。

a2ensite ipcam.example.com
/etc/init.d/apache2 reload

セキュリティ対策

エラー時のサーバ情報表示を消すように設定する。
/etc/apache2/conf-available/security.conf ファイルの2行を編集する。

#ServerTokens OS  ←変更前
ServerTokens Prod ←変更後
#ServerSignature On ←変更前
ServerSignature Off ←変更後

※Debian7では「/etc/apache2/conf.d/security」ファイルでした。「sites-」や「mods-」のように「conf-」も指定できるようになったようです。なので「a2enconf」や「a2disconf」コマンドができています。

これによりエラー表示が次のようになる。

変更前 ForbiddenYou don’t have permission to access / on this server.
Apache/2.x.x (Debian) Server at 192.168.0.x Port 80
変更後 ForbiddenYou don’t have permission to access / on this server.

Apache再起動

Apacheを再起動する。

/etc/init.d/apache2 restart

「[ ok ] Restarting apache2 (via systemctl): apache2.service.」と表示されればOK。

動作確認

テスト用ファイルの作成

各サイトのhtmlフォルダにindex.htmlとphpinfo.phpを作成する。

<html>
<body>
This is Default site.
</body>
</html>
<html>
<body>
This is www.example.com.
</body>
</html>
<html>
<body>
This is blog.example.com.
</body>
</html>
<?php
phpinfo();
?>

動作確認(接続元)端末のhosts設定

hostsファイルを編集することによりサイト1(www.example.com)、サイト2(blog.example.com)にアクセスすると指定のIPアドレスに変換するよう設定する。

192.168.0.11 www.example.com
192.168.0.11 blog.example.com

※hostsファイルを開く際は管理者権限が必要。

ブラウザからアクセス

各URLにアクセスし、作成したindex.html、phpinfoのページが表示されることを確認する。

  • http://192.168.0.11/
  • http://192.168.0.11/phpinfo.php
  • http://www.example.com/
  • http://www.example.com/phpinfo.php
  • http://blog.example.com/
  • http://blog.example.com/phpinfo.php
  • このエントリーをはてなブックマークに追加

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です