AlmaLinuxにhttpd(Apache)をインストール。UserDirを有効にしたのに「403 Forbidden」が出るときは…。

AlmaLinuxでウェブサーバを設定します。最低限の動作に必要なパッケージをインストール。

sudo dnf install httpd httpd-tools

インストールが完了したら httpd サービスを起動します:

sudo systemctl start httpd

システム起動時にhttpdを自動起動したかったら:

sudo systemctl enable httpd

…としておきます。

次に、ユーザディレクトリを有効化、すなわち、

http://ドメイン名/~ユーザ名

にアクセスすると、

/home/ユーザ名/public_html

の内容を表示するように設定します。

設定ファイル userdir.conf をエディタで開いて:

sudo nano /etc/httpd/conf.d/userdir.conf

すべてのユーザの public_html を開けるのであれば、

…と、これだけで大丈夫。変更したファイルを保存したら、httpd を再起動。

sudo systemctl restart httpd

そうしたら public_html にお試し用の index.html ファイルを作成してみる。中身はもう適当に…

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title>テスト</title>
  </head>
  <body>
    <p>テストページです。</p>
  </body>
</html>

…と、こんな感じで。index.html を保存したら、ウェブブラウザで http://ドメイン名/~ユーザ名 にアクセスしてみる。ページが表示されれば問題ないのだけれど、

Forbidden
You don't have permission to access this resource.

と、403エラーが出る場合があるかもしれない。

これを解消するために、まずはホームディレクトリと public_html ディレクトリのパーミッションを確認・修正します。

先程編集した userdir.conf にちゃんと注意書きが書かれています。

  • /home/ユーザ名 ディレクトリのパーミッションは711 でなくてはならない。
  • /home/ユーザ名/public_html ディレクトリのパーミッションは 755 でなくてはならない。

つまり:

chmod 711 /home/ユーザ名
chmod 755 /home/ユーザ名/public_html

としてやって、もう一度ウェブブラウザで http://ドメイン名/~ユーザ名 にアクセスしてみると…。

まだ、403 Forbidden が出るかもしれない。原因として、SELinuxが有効化されていることが考えられるのでチェック。次のコマンドを実行します:

getenforce

"Enabled" と表示されたら SELinux が有効なので、これを無効にする設定を行います。

sudo nano /etc/selinux/config

で設定ファイルを開いて…

SELINUX=enforcing

の部分を、

SELINUX=disabled

に書き換えて保存。そしてシステムを再起動。

これでユーザディレクトリの public_html が見えるようになる筈。

カテゴリ: