Webサーバーのユーザーディレクトリを利用する

Webサーバーは非常に多彩な機能を備えています。基本的な設定方法を確認しましょう。【連載コラム:Linuxを学ぼう(24)】

最終更新日:2023年12月01日

今回は、Webサーバーの設定方法の詳細を学ぶためにユーザーディレクトリ機能を有効にしてみます。Webサーバーは非常に多彩な機能を備えているため、必要となる機能ごとに設定が必要となります。基本的なWebサーバーの設定方法を確認しておきましょう。


Webサーバーの設定ファイル

Apache Webサーバーの設定ファイルは、本体である/etc/httpd/conf/httpd.confと、各種機能ごとにファイルを分けた/etc/httpd/conf.dディレクトリ以下のファイルが組み合わされています。httpd.confにもかなり幅広い設定項目が含まれているので、どちらに設定が含まれているのか利用したい機能のマニュアルなどをよく確認しておく必要があります。

ユーザーディレクトリ機能の設定ファイル

ユーザーディレクトリ機能の設定ファイルは、/etc/httpd/conf.dディレクトリのuserdir.confファイルとなります。内容は以下の通りです。コメントなど不要な部分は省略しています。

# cat userdir.conf
<IfModule mod_userdir.c>
    #UserDir disabled

    UserDir public_html
</IfModule>

<Directory "/home/*/public_html">
    AllowOverride FileInfo AuthConfig Limit Indexes
    Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
    Require method GET POST OPTIONS
</Directory>

※この例は設定を変更した後のものです。

IfModuleタグ部分

HTMLのタグのように<>で囲われている範囲をタグと呼びます。IfModuleタグは、Apache Webサーバーが利用できるモジュールが存在すると、そのモジュールの扱いをどうするかを設定しています。

デフォルトでは、ユーザーディレクトリ機能(UserDir)は機能停止(disabled)になっており、利用できません。機能を有効にするためには、このdisabledの行を削除するかコメントアウトし、コメントアウトされている「UserDir public_html」の方を有効にします。上記例は変更後の設定ファイルとなっています。

Directoryタグ部分

Directoryタグは、該当するディレクトリに対してWebサーバーがどのように振る舞えるかを定義しています。必要に応じて設定を変更します。今回はデフォルトのままにしておきます。

Webサーバーへの設定変更の適用

設定を変更したら、Webサーバーをリロードして設定変更を適用します。

# systemctl reload httpd

ユーザーディレクトリの作成

ユーザーディレクトリ機能は、Webブラウザのコンテンツ指定で「~ユーザー名」と指定した場合、サーバーの/home/ユーザー名/public_htmlディレクトリ内のコンテンツを参照させる機能です。ホームディレクトリとpublic_htmlディレクトリはセキュリティの関係上、以下のようなパーミッションに設定する必要があります。

ホームディレクトリ711
public_html755

以下のように設定を行います。

$ mkdir public_html
$ chmod 755 public_html
$ chmod 711 ~

~は実行しているユーザーのホームディレクトリを表しています。

SELinuxの影響とアクセス許可

作成したpublic_htmlディレクトリは、SELlinuxが有効になっている環境ではそのままではWebサーバーからアクセスできません。以下のコマンドでアクセスを許可します。このコマンドは、public_htmlを作成した一般ユーザーで実行します。

$ chcon -R -t httpd_sys_content_t ~/public_html/

このアクセス許可を行わないと、アクセス権限がないため「403 Forbidden」のエラーでアクセスできません。

コンテンツの配置とアクセス

作成したpublic_htmlディレクトリ内に、適当なコンテンツを配置し、Webブラウザからアクセスしてみます。ここでは~/public_html/index.htmlファイルを作成しているとします。

http://サーバーアドレス/~ユーザー名

作成したコンテンツの内容が表示されたらユーザーディレクトリ機能の設定は完了です。


筆者紹介
宮原 徹 氏

宮原 徹 氏

株式会社びぎねっと

Linux標準教科書、Linuxサーバー構築標準教科書などの監修者。LinuCレベル1/レベル2 Version10.0の改訂作業にも協力。また、幅広いOSSに関する情報提供の場として「オープンソースカンファレンス(OSC)」の企画運営も。

バックナンバー

第23回:WebサーバーでPHPを動かす

第22回:WEBサーバーにコンテンツを配置する

第21回:外部からWebサーバーにアクセスする

第20回:Webサーバーを動かす

第19回:Webサーバーをインストールする

ページトップへ