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をインストール

[shell]
apt-get install apache2 php5
[/shell]

各種モジュールの有効化

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

デフォルトサイト設定

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

[shell]
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
[/shell]

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

[code title=”/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>
[/code]

※Debian7ではdefulat.confでした。

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

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

[shell]
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
[/shell]

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

[code title=”/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>
[/code]

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

サイトを有効にする。

[shell]
a2ensite www.example.com
/etc/init.d/apache2 reload
[/shell]

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

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

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

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

[shell]
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
[/shell]

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

[code title=”/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>
[/code]

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

サイトを有効にする。

[shell]
a2ensite ipcam.example.com
/etc/init.d/apache2 reload
[/shell]

セキュリティ対策

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

[code title=”/etc/apache2/conf-available/security.conf”]
#ServerTokens OS  ←変更前
ServerTokens Prod ←変更後
#ServerSignature On ←変更前
ServerSignature Off ←変更後
[/code]

※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を再起動する。

[shell]
/etc/init.d/apache2 restart
[/shell]

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

動作確認

テスト用ファイルの作成

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

[code lang=”html” title=”/home/www-data/default/html/index.html”]
<html>
<body>
This is Default site.
</body>
</html>
[/code]

[code lang=”html” title=”/home/www-data/www.example.com/html/index.html”]
<html>
<body>
This is www.example.com.
</body>
</html>
[/code]

[code lang=”html” title=”/home/www-data/blog.example.com/html/index.html”]
<html>
<body>
This is blog.example.com.
</body>
</html>
[/code]

[code title=”/home/www-data/(各フォルダ)/html/phpinfo.php”]
<?php
phpinfo();
?>
[/code]

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

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

[code title=”C:¥Windows¥System32¥drivers¥etc¥hosts”]
192.168.0.11 www.example.com
192.168.0.11 blog.example.com
[/code]

※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
  • このエントリーをはてなブックマークに追加

コメントをどうぞ

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