Linuxサーバ

sits-availableディレクトリをいじって公開するサイトの設定を行なう

随分久しぶりのサーバネタです。

 

最後に投稿した分で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サーバでのディレクトリ公開へと進みます。

オススメの記事

-Linuxサーバ
-, ,