Debian apache2の設定ディレクトリ構造
WindowsとDebianのそれぞれでApacheサーバーをインストールしたことがある人なら気づいている人も多いと思いますが、それらの間で設定ファイルが違います。
書式が変わるわけではないのですが、Debianでは「a2enmod」等のコマンドで設定をより自由に切り替えられるようになっています。今回は、そのDebianのApacheのサーバーのディレクトリ構造について勉強します。
ディレクトリ構造
Debianにインストールしたapache2(バージョン2.4.38)では、設定ファイルの構造は次のようになっていました。
/etc/apache2/apache2.conf | 主要な設定 |
/etc/apaceh2/sites-available/ | Webサイトの毎の設定の置き場所 |
/etc/apaceh2/sites-enabled/ | sites-availableのファイルにリンクを張ることで設定を有効にします |
/etc/apaceh2/mods-available/ | モジュール(拡張機能)を置きます |
/etc/apaceh2/mods-enabled/ | mods-available内のモジュールへリンクを張ることで機能を有効にします |
/etc/apaceh2/conf-available/ | 他の設定ファイルを置きます |
/etc/apaceh2/conf-enabled/ | conf-availableへリンクを張ることで機能を有効にします |
/etc/apache2/potrs.conf | ポート設定(ポートについては後述します) |
/etc/apache2/envvers | 環境変数(共通で使用できる変数)の設定 |
/etc/apache2/magic | MIME設定用のファイル |
階層は入り組んでいますが、基本的にどんな形でも必要な設定とモジュール(拡張機能)が読み込まれさえすればいいので、あまり深く考える必要もないのかもしれません。
ただ、設定を操作しながら確認するのなら、編集する前にバックアップを取っておきましょう。
# su ... # cp -r /etc/apache2 /etc/apache2.backup
cpの-rオプションはフォルダを指定した時に中身のすべても一緒にコピーするものです。/etc/apache2ディレクトリとは別に/etc/apache2.backupディレクトリができました。
apache2.conf
apache2.confには基本的な設定が入っています。ports.confや、sites-enabled、mods-enabled、conf-enabled内の設定ファイルを読みに行くという設定も入っています。
この中で変更する可能性があり、覚えておくといいものは「Directoryディレクティブ」です。Directory(ディレクトリ)はDebian上のディレクトリと同じ意味です。ディレクティブとはここでは指示といった意味でしょうか。
ディレクトリ単位で設定を指定するのがDirectoryディレクティブです。
<Directory ...>から始まり</Directory>まででひとつの部分です。
最初は<Directory />となっていて、ルートディレクトリ以下に対する設定という意味です。
筆者がインストールした環境では、ルートディレクトリに対しては3つの設定がなされていました。
<Directory /> # シンボリックリックをたどることを可能に Options FollowSymLinks # .htaccessファイルでの設定で上書を禁止 Allow Override None # すべてのファイルへのアクセスを不可に Require all denied </Directory>
一旦すべてのファイルへのアクセスが禁止されたあと、部分的にアクセスが解除されています。アクセスの許可は「Require all granted」ディレクティブによって設定されています。
先にブラウザで立ち上げたWebサイトを確認した時、表示されていたファイルは/var/www/htm/index.htmlです。
そのファイルが表示できるのはルートディレクトリの設定の後の次の部分でアクセス許可をしているからです。
<Directory /var/www> Require all granted ... </Directory>
試しに、Directory /var/wwwの該当のRequire all grantedという記述をコメントアウトしてapacheを再起動するとページには何も表示されなくなります。
ただし、ブラウザのキャッシュ機能により前回の表示内容がそのまま表示される場合があります。その場合は再読込みをしてみてください。
apache(サービス)の再起動の方法は、次のようにします。
ports.conf(ポートとは)
ポートとはネットワークを経由してきたデータが何のデータかを示すものです。若いポート番号は世界共通で規則が決められており、80番ポートがWebサーバを示すこととなっています。
192.168.102.254の80番ポートにアクセスするとゲートウェイサーバはそのデータをapache2に渡します、apache2はデータ(要求)を受け取り返答としてWebページを返します。
ポートの理解のために一度中身を見てみましょう。
Listen 80 となっていて、80番ポートでWebサーバを待機するという設定になっています。変更することも可能ですが、一般的にブラウザは80番ポートでアクセスしますので、その場合はアクセスの仕方も変えないといけません。
ちなみにSSL(暗号化)通信でのWebアクセスは443番ポートというルールになっています。その場合に備えて<IfModule...以降の記述があり、SSLモジュールが存在したら443ポートでも待機するという設定になっています。
ブラウザ側はアドレスの先頭がhttpだったら80番、httpsだったら443番という風に判断します。ブラウザで接続ポートを変更するには :を付けてポート番号を指定します。
たとえば設定を変えて50080番ポートで待ち受けるようにしたらブラウザのアドレスバーに次のように入力します。
ポートで使用できるのは1から65535(2の16乗)までですが、このようなケースでは49151以降の番号を使うのが無難です。それより若い番号はポート番号の使い道が定義されています。先に紹介した80番がhttp、443がhttpsというルールもその一部です。他のアクティブになっているポートと衝突しなければ問題はないのですが。
-enabledディレクトリ
各種のenabledディレクトリには、それに対応したavailable内のリンクを入れます。ここにリンクを入れることで設定やモジュールは読み込まれます。このような仕組みにすることで柔軟な対応ができます。例えば一時的に別の設定ファイルをテストしてみたい場合は、既存のリンクを消して試してみたい設定ファイルに変えることで設定や復元が簡単にできるようになっています。
sites-available
初期では000-default.confというものが入っています。中身を見てみましょう。nanoはエディタですが、短い内容の中身を表示させたいだけならcatコマンドでも表示させることができます。
# cat /etc/apache2/sites-available/000-default.conf
この中の<VirtualHost *:80>からの記述で80番ポートで待機しているすべてのサイトに対して設定をしています。
# サーバ管理者の設定 ServerAdmin # webサーバとして表示するディレクトリの最上位 DocumentRoot
ここでDocumentRootディレクティブとして/var/www/htmlが設定とされているので、サイトにアクセスすると/var/www/html/index.htmlのファイルの中身がが表示されます。
mod-available
.loadファイルにて読み込みが必要なモジュール(拡張機能)のへのリンクを持ち、伴った設定を同名の.confファイル内に記述します。
ここで読み込まれるモジュールのひとつにdirモジュールがあります。
このモジュールの役割はファイル名を指定せずにアクセスした際に表示させるファイルを設定するものとなっています。
先ほどのDocumentRootの話に戻りますが、実は単にDocumentRootを指定しただけではサーバのアドレスにアクセスした場合はページ表示されません。サーバのアドレスしか指定していない時、index.htmlが表示されるのはこのdirモジュールの機能によるものです。
このdir.confの中身を見てみると、 DirectoryIndex index.html index.cgi ... となっています。
これは指定されたファイルを順に探していって、記載されているファイルが存在したらそのファイルを初期ページとして表示する仕組みになっています。
conf-available
他ここまでに入らなかった設定類がconf-availableに入っています。
index.html
実際のトップページのファイルは/var/www/html/index.htmlに入っているという話でした。トップページをサンプルページから変更してみましょう。
HTMLの記述ができるは自由に作成してください。
保存したら初期ページの設定を変更して、今作成したページが表示されるようにしてみましょう。初期ページの設定ファイルは/etc/apaceh2/mods-available/dir.confでした。
DirectoryIndex index.html index.cgi... の index.htmlの前に 「index2.html 」を入れてみましょう。
リスタート後、ゲートウェイPCにブラウザからにアクセスしてみましょう(http://192.168.201.254)。後から作成したページが表示されたら成功です。
元のトップページは、http://192.168.201.254/index.htmlとしてアクセスすると表示されます。
en... dis...コマンド
conf、mods、sitesのそれぞれに、enableとavailableというディレクトリがあり、availableへのシンボリックリンクをenableに置くことでその設定が有効になるということでした。
シンボリックリンクは手動で作成することもできますが、それらを切り替えるコマンドがあります。
- a2enconf
confを有効化
- a2disconf
confを無効化
- a2enmod
modsを有効化
- a2dismod
modsを無効化
- a2ensite
siteを有効化
- a2dissite
siteを無効化
これらのコマンドの引数として、availableに存在する設定ファイル名を指定します。このときタブキーによる入力補完も機能します。