2017-01-22

【備忘録】Apache で Userdir を有効にする (Fedora 25)

Apache HTTP Server (httpd) は、Fedora の他、多くの Linux のディストリビューションで採用されている HTTP サーバです。

Apache による Web サーバは簡単な設定で利用できるので、自分の Linux 環境にインストールしておき、ホームページの HTML 文書をインターネットに公開する前にチェックすることに使っていました。

Apache のインストール

Fedora では、ルート権限で次のように httpd および関連パッケージをグループインストールすることができます。

$ su
パスワード:
# dnf groupinstall "Web サーバー"
...
...

サービスの起動

インストールした httpd のサービスを起動するには、ルート権限で次のようにします。

# systemctl enable httpd.service
Created symlink /etc/systemd/system/multi-user.target.wants/httpd.service → /usr/lib/systemd/system/httpd.service.
# systemctl start httpd.service

Google Chrome などの Web ブラウザを起動して、URL に http://localhost と入力して、下記の画面が表示されることを確認します。

Userdir の利用

Apache が表示する HTML 文書のルートディレクトリ (DocumentRoot) は、/var/www/html になっています。これは /etc/httpd/conf/httpd.conf で設定されています。

個人のファイルを /var/www/html 内で編集するのはアクセス権限などの設定変更をしなければならず何かと不便です。そんなときには、自分のアカウント (/home/bitwalk) 内に public_html というようなディレクトリを作成して、その中に保存した HTML ファイルなどを http://localhost/~bitwalk と URL で指定してブラウザ上に表示させることができます。参考サイト [1]CentOS 7 での設定例が説明されていますので、それに従って設定を変更し、httpd サービスを再起動します。

試しに /home/bitwalk/public_html 内に適当な index.html を用意して、Web ブラウザで http://localhost/~bitwalk を表示してみると、アクセス権がないというエラーが表示されます。

今どきの Linux では SELinux がデフォルトで有効になっており、従来のパーミッションの設定の他にこの SELinux の設定も必要になります。SELinux を無効にすれば目の前の問題を直ちに解決できるのですが、その代わりに折角のセキュアな環境を放棄することになります。

今回の事象への対応方法は、幸いにしてぴったりのものが見つかりました。英文ですが参考サイト [2] に紹介されていまして、一文実行するだけで OK です。そこで、SELinux の設定を含めてまとめ直しました。

  1. /etc/httpd/conf.d/userdir.conf の設定変更
    • ...
      ...
      #
      <IfModule mod_userdir.c>
          #
          # UserDir is disabled by default since it can confirm the presence
          # of a username on the system (depending on home directory
          # permissions).
          #
          #UserDir disabled
      
          #
          # To enable requests to /~user/ to serve the user's public_html
          # directory, remove the "UserDir disabled" line above, and uncomment
          # the following line instead:
          # 
          UserDir public_html
      </IfModule>
      ...
      ...
      
  2. 権限変更
    • # mkdir /home/owner/public_html
      # chmod g+x /home/owner/
      # chown :apache /home/owner/
      
  3. httpd サービス再起動
    • # systemctl restart httpd
      
  4. SELinux ブール値の変更
    • # setsebool -P httpd_enable_homedirs true
      

再び Web ブラウザで http://localhost/~bitwalk を表示してみると、今度は用意した index.html が表示されました。

さて、この画面ですが、参考サイト [3] で紹介されている HTML ファイルです。

今年は HTML5 をしっかりおぼえて、HTML5 に準拠したホームページを作ろうと考えています。まずはじっくり構成を練ってから公開する予定です。テーマは、このブログと同じ Linux とプログラミングで、目指すは学習参考書のようなわかりやすさでまとめられた Linux の参考書のようなサイトを作ることです。📖

参考サイト

  1. CentOS7のapacheでUserdirを有効にする - Qiita [2014-10-24]
  2. Enabling apache UserDir (public_html) with SELinux enabled on Fedora » Diego Búrigo Zacarão’s Weblog [2010-05-07]
  3. html5で書いてみよう:構造化タグのサンプル集

 

ブログランキング・にほんブログ村へ
にほんブログ村

0 件のコメント: