随分久しぶりのサーバネタです。
最後に投稿した分でApache2のごく基本的な設定はできました。
そこで今度は実際に公開するディレクトリに関する設定を進めていきましょう。
具体的な設定方法ですが、
1./etc/apache2/sites-available/ディレクトリ内に設定ファイルを置く
2./etc/apache2/sites-enabled/ディレクトリ内に、1.で作ったファイルに対するリンクを作成する
という流れで行ないます。まずは
dir /etc/apache2/sites-available/
と叩いて中を見てみましょう。すると・・・
default default-ssl
の二つのファイルがあることが分かるかと思いますので、まずはdefaultをコピーして中を覗いてみることにしましょう。
sudo cp /etc/apache2/sites-available/default /etc/apache2/sites-available/www_config(名前は適当で構いません)
sudo vi /etc/apache2/sites-available/default
と入力してファイルを開きます。
すると
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog /var/log/apache2/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog /var/log/apache2/access.log combined
Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>
</VirtualHost>
という具合に書かれています。
ざっと説明しますと、
1.<VirtualHost *:80> ~ </VirtualHost>
サーバの80番ポートに対する接続は全てこの範囲に記載された通り処理する、ということになります。
この中に具体的なディレクトリごとの設定を記述していくイメージです。
ServerAdminはエラーページに表示される管理者の連絡先アドレスを、
DocumentRootは「http://ドメイン名」でアクセスしたときに表示されるディレクトリを
設定します。この場合は
ServerAdminがwebmaster@localhostというアドレス、
DocumentRootは/var/www/というディレクトリ、
として設定されています。
2.<Directory /> ~ </Directory>
ルートディレクトリに対する具体的な設定が書かれています。
ここでいうルートディレクトリは上記のドキュメントルートではなくサーバ自体の/(ルート)ディレクトリを指してるそうです。ややこしい。。。
3.<Directory /var/www> ~ </Directory>
こっちは上で設定したドキュメントルートに関する設定です。
幾つかの設定が行われていて、これが公開したいディレクトリに対する設定となります。
順を追って説明すると・・・
Options ○○
設定中のディレクトリにおいてサーバとしての機能の内どれを動作させるか?という項目です。
値 | 機能 |
All | MultiViewを除くすべての機能を使用 |
ExecCGI | CGIの実行を許可 |
FollowSymLinks | サーバがシンボリックリンクを辿ることを許可する |
Includes | SSIの使用を許可する |
IncludesNoExec | SSIは許可するがCGIの#Execと#Includesは禁止する |
Multiviews | マルチビューのサーチを許可する |
Indexes | Index.htmlがない状態でディレクトリに接続するとディレクトリ内のファイル一覧を自動表示する |
None | すべて禁止する |
といったところです。
ひとつだけ指定することも可能ですし、必要なものを組み合わせて
Options EcecCGI Indexes
のように半角スペースを空けて連ねて記載することもできます。
AllowOverRide ○○
.htaccessの使用に対する制限を行います。
ちなみにLinux初心者の自分ははじめ意味がわからなかったのですが、「.htaccess」というのはApacheに関する設定ファイルの一種で、そのファイルが置かれたディレクトリとサブディレクトリに作用するものだそうです。apache2.confと現在設定中のsites-available内のファイルで基本的には設定してしまうのですが、特定のディレクトリで設定を変更したい時などには重宝するのだとか。
こちらは
Noneすべて禁止する
値 | 機能 |
All | .htaccessの記述を優先する |
AuthConfig | ユーザ認証に関する記述のみ利用可能 |
FileInfo | ドキュメントタイプ関連の記述のみ利用可能 |
Indexes | ディレクトリインデックス関連の記述のみ可能 |
Limit | ユーザのアクセスコントロールのみ記述可能 |
Options | Options関連とディレクトリ設定関連のみ利用可能 |
となります。
Optionsと同様、組み合わせて使用することが可能となっています。
Order Allow,Deny(またはDeny,Allow)
これは次のAllowディレクティブとDenyディレクティブの評価順を決定します。
Allow,DenyはAllowを先に評価後Denyの設定分を上書き、
Deny,Allowは逆となります。
Allowは許可する対象を、Denyは拒否する対象を記述します。
例えば・・・
Order Allow,Deny
Allow from All(すべて許可する)
Deny from chee-s.net(chee-s.netからのアクセスを拒否する)
と記述した場合、原則はすべてOKだけどchee-s.netからのアクセスは遮断
となります。一方
Order Deny,Allow
Deny from chee-s.net
Allow all
とするとchee-s.netを拒否した後にすべて許可が上書きされるため、結果すべてのパケットを許可する形となります。
並びによって意味合いが変わってきますので注意しましょう。
長くなりましたが自分の場合、
<directory /home/○○/public_html>
Options FollowSymLinks Indexes
AllowOverRide All
Order Allow,Deny
Allow from All
</Directory>
みたいな感じにしてます。
ログの設定はデフォルトのままにしてますのでひとまずこれで終了というところでしょうか。
随分と長くなりましたがいかがでしょうか?
より詳しい情報は調べていただいて、ご自分の用途に合わせた最適な設定を行ってください。
次回は今回の設定を反映させていよいよWebサーバでのディレクトリ公開へと進みます。