Apacheでドキュメントルート以外のディレクトリを公開する方法

ども。あいしんくいっと(@ithinkitnet)です。

Apacheでは基本的にDocumentRoot(ドキュメントルート)以下のコンテンツが公開されます。
でも、ドキュメントルート以外のディレクトリも公開したいことがあったりします。
Aliasディレクティブを使えばサクッと公開可能なのですが、どうも忘れがちで・・・。

と言うわけで、ドキュメントルート以外のディレクトリを公開する方法について書いておきたいと思います。

Apacheでドキュメントルート以外のディレクトリを公開する方法

Apacheのドキュメントルートはデフォルトだと/var/www/htmlが設定されています。

# grep -i documentroot /etc/httpd/conf/httpd.conf
# DocumentRoot: The directory out of which you will serve your
DocumentRoot "/var/www/html"

この/var/www/html以外の場所を公開したいと思います。

  • ドキュメントルート以外を公開

AliasとDirectoryのディレクティブを組み合わせて使用することによってサブディレクトリの公開が可能となリます。
例えば、/home/hoge以下を公開する場合の設定はこんな感じ。
/etc/httpd/conf/httpd.confに以下、追記。

Alias /hogehoge /home/hoge
<Directory "/home/hoge">
    AllowOverride None
    Require all granted
</Directory>
  • Apache再起動
# systemctl reload httpd
  • ディレクトリ所有者、所有グループの変更

Apacheでアクセス出来るよう、Aliasで設定したディレクトリの所有権を変更。

# chown hoge.apache /home/hoge
# ls -ld /home/hoge
drwxr-xr-x 2 hoge apache 101 12月 22 22:25 /home/hoge
注意
ディレクトリの所有権をapacheユーザに変更しておかないと「Forbidden」となるので注意。
Aliasディレクティブで設定したディレクトリにアクセス出来ることを確認。
ポイント
ブラウザで実際にアクセスして確認しても良いのですが、一時的にapacheにシェルを持たせて権限チェックするのも便利です。

# su - --shell=/bin/bash apache
-bash-4.1$ id
uid=48(apache) gid=48(apache) groups=48(apache)

Apacheのドキュメントルート以外を公開したい場合はAliasとDirectoryディレクティブを組み合わせて使う。
覚えておきましょう。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)