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