|
httpd.conf の DocumentRoot は、一つしか設定できませんが、サーバシステムを構築し
ていくとどうしても別の DocumentRoot( ホームディレクトリ ) を使ってホームページを表示したい事があると思います。
そんな時には、Alias を使うと簡単に別の DocumentRoot を使用してホームページを表示
することが可能になります。専門用語では、「 仮想ディレクトリとマッピング 」といいます。
※ 注意事項 ※
1. httpd.conf の DocumentRoot のユーザー名と別の DocumentRoot の所有者名は、同一に 設定してください。
2. SELinux 有効の時には、下記のポリシーを設定します。
下記ポリシーを設定しないと Apache から、ホームディレクトリ( 別ドキュメントルート )での 公開が出来なくなります。
|
|
setsebool -P httpd_enable_homedirs 1;\
firewall-cmd --reload |
|
httpd.conf では、
デフォルトで ScriptAlias /cgi-bin/ "/usr/local/apache2/cgi-bin/"
が設定されていますが、ScriptAlias は、CGI 専用のため html には対応しない為、
コメントアウトしておきます。ついでに下記もコメントアウトしておきます。
<Directory "/usr/local/apache2/cgi-bin">
AllowOverride None
Options None
Require all granted
</Directory>
|
|
Alias の動作を私のサーバ機を例として紹介します |
|
私のサーバ機の DocumentRoot は、/var/html/www/www.smiyasaka.com です。
別の DocumentRoot として /home/miyasaka/www も作成しています。
通常、インターネットで www.smiyasaka.com/○○○○ をアクセスすると
DocumentRoot で設定されているディレクトリ以下にある該当ページが表示されます。
しかし Alias で Alias "/abcd" "/home/miyasaka/www" と設定したとすると
www.smiyasaka.com/abcd/test_page.html とアクセスした場合
、/home/miyasaka/www/ 以下にある test_page.html が表示されるようになります。
① Alias の編集箇所
ログの設定の下の方 <IfModule alias_module>~ </IfModule> 内にあります。
② Alias の設定方法
Alias "/(仮想ディレクトリ)" "/(実のディレクトリパス)" です。
例. Alias "/betsu-dir" "/home/miyasaka/www"
/betsu-dir/○○○○ ----> /home/miyasaka/www/○○○○ に URL が変換(マッピング) されます。
(仮想ディレクトリ)は、存在しないディレクトリでも良いです。
(実のディレクトリパス)は、変換後のディレクトリをフルパスで記述します。
③ CGI, SSI を使用したい時の設定
Alias /(仮想ディレクトリ)/ "/(実のディレクトリパス)/" の直下に下記設定を追加します。
さらに CGI, SSI 使用許可と perl の拡張子 .cgi, .pl の拡張子が使用できるように設定します。
<Directory "/(実のディレクトリパス)">
AllowOverride None <----- [.htaccess]の使用不可
Options Includes FollowSymLinks ExecCGI <----- SSI, CGI を使用と
シンボリックリンクを許可
Order allow,deny <----- アクセス許可を優先させる
Allow from all <----- 上との2行ですべてのアクセスを許可
AddHandler cgi-script .cgi .pl <----- cgi-script の拡張子 .cgi .pl を
使用許可
Require all granted <----- すべてのアクセスを許可
</Directory>
|
|
|
|
******* Apache のディレクティブの解説 *******
Includes <----- SSI の使用を許可
FollowSymLinks <----- シンボリックリンク先の参照を許可
ExecCGI <----- CGI プログラムの使用を許可
allow <----- 指定したホスト(IPアドレス)からのアクセスを許可
deny <----- 指定したホスト(IPアドレス)からのアクセスを禁止
Require all granted <-----「すべてのアクセスを許可」
※※ 注意事項 ※※
allow, deny を使わずに 2.4系 から、この様に記述するようになっています。
つまり、全部許す( すべてのアクセスを許可 )ということなら、
Order Allow,Deny
Allow from all
ではなく、
Require all granted
と書く必要があります。
こう書かないと、アクセスした時に下記の様に 403 Forbidden
You don't have permission to access ○○○○○○ on this server.
( ○○○○○○は、アクセスしたファイルのアクセス権が無い )
になります。
|
|
|
|
私の場合は、下記のようになります。
# Alias /webpath /full/filesystem/path
Alias "/home" "/home/miyasaka/www"
# .cgi .pl を有効にする。ここに書込まないと無効になる。
<Directory "/home/miyasaka/www">
AllowOverride None
Options Includes FollowSymLinks ExecCGI
AddHandler cgi-script .cgi .pl
Require all granted
</Directory>
|
|
|
|
|