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