目標
とりあえず「ドメインの取得」で書いたように2つドメインをとったので、
- 2つのドメインでそれぞれWebサイトを構築
- scratchpad.jpドメインではscratchpad.jp以外にcolinux.scratchpad.jp, debian.scratchpad.jp, books.scratchpad.jpのサブドメインでもWebサイトを構築
ただし、http://colinux.scratchpad.jp/はhttps://scratchpad.jp/colinux/としてもアクセスできるようにしておく。debianと booksのサブドメインについても一緒。 - Webサイトのデータは「/www/ドメイン名/サブドメイン名」に置く。
なので、https://scratchpad.jp/のデータは/www/scratchpad/に、http://colinux.scratchpad.jp/のデータは/www/scratchpad/colinux/に置く。
がこの時点での目標。
一つのApacheで複数のWebサイトを構築するために、Apacheにはバーチャルホストという機能がある。
この昨日を使うと接続してきたホスト名で、表示するページを変えることができます。
全体の設定
/etc/apache/ports.confの設定を確認。下記の2行が記載されていればOK。
NameVirtualHost *:80 Listen 80
個別のWebサイトの設定
Debianでは個別のWebサイトの設定は、/etc/apache2/sites-available/にサイトごとにファイルを作って行います。ファイルはdefaultを参考にしながら作ります。
https://scratchpad.jp/の設定
/etc/apache2/site-available/に下記内容のscratchpadというファイルを作成します。
<VirtualHost *:80> ServerName scratchpad.jp ServerAdmin webmaster@scratchpad.jp DocumentRoot /www/scratchpad <Directory /www/scratchpad> Options FollowSymLinks AllowOverride None Order allow,deny allow from all </Directory> ScriptAlias /cgi-bin/ /var/www/cgi-bin/ <Directory "/var/www/cgi-bin"> AllowOverride NoneOptions +ExecCGI -MultiViews +SymLinksIfOwnerMatch Order allow,deny Allow from all </Directory> ErrorLog /var/log/apache2/scratchpad-error.log # Possible values include: debug, info, notice, warn, error, crit, # alert, emerg. LogLevel warn CustomLog /var/log/apache2/scratchpad-access.log combined RewriteEngine On RewriteLog /var/log/apache2/scratchpad-rewrite.log RewriteLogLevel 0 RewriteRule ^/colinux/(.*) http://colinux.scratchpad.jp/$1 [L] RewriteRule ^/debian/(.*) http://debian.scratchpad.jp/$1 [L] RewriteRule ^/books/(.*) http://books.scratchpad.jp/$1 [L] </VirtualHost>
2行目のServerNameで、この設定がscratchpad.jpというホスト名でアクセスされた場合に適用されることを指定。
4行目のDocumentRootで、この設定で/www/scratchpad以下のファイルをコンテンツとして取り扱うことを指定。6~11行目はdefaultからのパクリ。
13~19行目はCGIの設定。これもdefaultからのパクリ。
20~25行目はログの設定。ファイル名を変更してscratchpad.jp関係のログが別ファイルになるように指定。
27~32行目はURLの書き換え(リダイレクト)の設定。まず27行目で書き換え機能をONにしたあと、30行目から32行目で書き換えルールを指定。
30行目はhttps://scratchpad.jp/colinux/・・・でアクセスされた場合に、http://colinux.scratchpad.jp/・・・に書き換え。
31行目はhttps://scratchpad.jp/debian/・・・でアクセスされた場合に、http://debian.scratchpad.jp/・・・に書き換え。
32行目はhttps://scratchpad.jp/books/・・・でアクセスされた場合に、http://books.scratchpad.jp/に書き換え。
http://colinux.scratchpad.jp/の設定
/etc/apache2/site-available/に下記内容のscratchpad-colinuxというファイルを作成します。
<VirtualHost *:80> ServerName colinux.scratchpad.jp ServerAdmin webmaster@scratchpad.jp DocumentRoot /www/scratchpad/colinux <Directory /www/scratchpad/colinux> Options FollowSymLinks AllowOverride None Order allow,deny allow from all </Directory> ScriptAlias /cgi-bin/ /var/www/cgi-bin/ <Directory "/var/www/cgi-bin"> AllowOverride None Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch Order allow,deny Allow from all </Directory> ErrorLog /var/log/apache2/scratchpad-error.log # Possible values include: debug, info, notice, warn, error, crit, # alert, emerg. LogLevel warn CustomLog /var/log/apache2/scratchpad-access.log combined </VirtualHost>
これは書き換えルールとかはなく、ServerNameとDocumentRootの設定ぐらいで、シンプルになります。
http://debian.scratchpad.jp/の設定
/etc/apache2/site-available/に下記内容のscratchpad-debianというファイルを作成します。
<VirtualHost *:80> ServerName debian.scratchpad.jp ServerAdmin webmaster@scratchpad.jp DocumentRoot /www/scratchpad/debian <Directory /www/scratchpad/debian> Options FollowSymLinks AllowOverride None Order allow,deny allow from all </Directory> ScriptAlias /cgi-bin/ /var/www/cgi-bin/ <Directory "/var/www/cgi-bin"> AllowOverride None Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch Order allow,deny Allow from all </Directory> ErrorLog /var/log/apache2/scratchpad-error.log # Possible values include: debug, info, notice, warn, error, crit, # alert, emerg. LogLevel warn CustomLog /var/log/apache2/scratchpad-access.log combined </VirtualHost>
http://books.scratchpad.jp/の設定
/etc/apache2/site-available/に下記内容のscratchpad-booksというファイルを作成します。
<VirtualHost *:80> ServerName books.scratchpad.jp ServerAdmin webmaster@scratchpad.jp DocumentRoot /www/scratchpad/books <Directory /www/scratchpad/books> Options FollowSymLinks AllowOverride None Order allow,deny allow from all </Directory> ScriptAlias /cgi-bin/ /var/www/cgi-bin/ <Directory "/var/www/cgi-bin"> AllowOverride None Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch Order allow,deny Allow from all </Directory> ErrorLog /var/log/apache2/scratchpad-error.log # Possible values include: debug, info, notice, warn, error, crit, # alert, emerg. LogLevel warn CustomLog /var/log/apache2/scratchpad-access.log combined </VirtualHost>
もう一つのドメイン用の設定
ドメイン名をexample.comとすると、/etc/apache2/site-available/に下記内容のexampleというファイルを作成します。
<VirtualHost *:80> ServerName example.com ServerAdmin webmaster@example.com DocumentRoot /www/example <Directory /www/example> Options FollowSymLinks AllowOverride None Order allow,deny allow from all </Directory> ScriptAlias /cgi-bin/ /var/www/cgi-bin/ <Directory "/var/www/cgi-bin"> AllowOverride None Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch Order allow,deny Allow from all </Directory> ErrorLog /var/log/apache2/example-error.log # Possible values include: debug, info, notice, warn, error, crit, # alert, emerg. LogLevel warn CustomLog /var/log/apache2/example-access.log combined </VirtualHost>
設定の有効化
debianではa2ensiteというコマンドで、/etc/apache2/sites-availableにある設定を有効にします。今回は、scratchpad, scratchpad-colinux, scratchpad-debian, scratchpad-books, exampleを作成したので、これらの引数にしてa2ensiteを実行します。
sudo /usr/sbin/a2ensite scratchpad scratchpad-colinux scratchpad-debian scratchpad-books example
デフォルトの設定の無効化
デフォルトで/etc/apache2/sites-availableのdefaultという設定が有効になっているので無効化しておきます。
sudo /usr/sbin/a2dissite default
設定の確認
a2ensiteコマンドやa2dissiteコマンドでは/etc/apache2/sites-enabled以下にシンボリックリンクを作成したり削除したりします。このディレクトリ以下にある設定が、apacheの起動時に読み込まれる仕組みです。
ls /etc/apache2/sites-enabled
example scratchpad-books scratchpad-debian scratchpad scratchpad-colinux
設定の読み込み
OSを再起動せずにApacheに設定ファイルを読み込ませるには以下の機能を設定します。
sudo /etc/init.d/apache2 reload
所有権の設定
Apacheはwww-dataというグループに属しているwww-dataというユーザ権限で動作します。
そこで/www以下のグループ所有権をwww-dataにし、www-dataグループに所属するユーザが書き換え可能にしておきます。また、作られたファイルにグループ所有権が継承されるようにsetgidビットを立てておきます。
sudo chgrp -R www-data /www sudo chmod -R g+ws /www
また、Webサイトをメンテナンスを担当するユーザをfooとするとそのユーザをwww-dataグループに所属させるとよいでしょう。
sudo adduser foo www-data
まとめ
以上で、サーバの設定はおしまいです。次回からはこのApacheと組み合わせるWordPressを設定します。
コメント