備忘録:ユーザ毎のウェブディレクトリ設定

■ユーザ毎のウェブディレクトリ設定

参考URL:https://httpd.apache.org/docs/2.4/ja/howto/public_html.html

複数のユーザのいるシステムでは、UserDir ディレクティブを使って
各ユーザがホームディレクトリにウェブサイトを構築できるように設定することが 可能です。
URL http://example.com/~username/ を訪れた人は “username” というユーザの
UserDir ディレクティブで指定された サブディレクトリからコンテンツを得ることになります。

デフォルトではこれらのディレクトリへのアクセスは許可されていません。
UserDir を使って有効にできます。

http://localhost/~miyasan/index.html
 –> /home/miyasan/public_html/index.htmに変換することができる

—————————————————————-
●設定方法:

参考URL:
https://www.yokoweb.net/2016/05/15/ubuntu-16-04-server-apache2/
https://www.yokoweb.net/2017/01/29/ubuntu-userdir-php-execute/

////////////////////////////////////////

1)UserDirモジュールの有効化

$ sudo a2enmod userdir
$ sudo service apache2 restart

下記内容の ~/public_html/index.html をファイルを作り動作確認

<html>
<head><title>Test page</title></head>
<body>
<p>This is a test.</p>
</body>
</html>

Webブラウザで、下記URLを表示して確認

http://<サーバIP>/~<ユーザ名>/

///////////////////////////////////////

2)PHPの実行環境設定

Apache2でユーザごとの公開Webフォルダ(~/public_html/)を、Web公開するようにしたが、
デフォルトではPHPの実行ができない。実行できるようにする。

apacheの設定ファイルを編集し、下記行をコメントアウトする。

$ sudo -e /etc/apache2/mods-available/php7.0.conf

#<IfModule mod_userdir.c>
# <Directory /home/*/public_html>
# php_admin_flag engine Off
# </Directory>
#</IfModule>

apache2を再起動

$ sudo service apache2 restart

//////////////////////////
参考:
モジュールの無効化

モジュールを無効にしたい場合はa2dismodコマンド実行により
a2enmodで作成したリンクを削除します。これにより、
モジュールの設定がなくなるのでApache2再起動により該当モジュールが無効になります。

a2dismod モジュール名

///////////////////////////////////////////////////////

■追記: [Apache] Options と AllowOverRide の設定値

etc/apache2/apache2.conf

参照URL:
http://httpd.apache.org/docs/2.2/ja/mod/core.html#options
http://httpd.apache.org/docs/2.2/ja/mod/core.html#allowoverride
http://bashalog.c-brains.jp/10/11/16-121901.php
https://ygkb.jp/3885 ; Ubuntu 16.04にWordPressをインストールする方法

Options
Options は任意のディレクトリに対して使用できる機能を設定する為のディレクティブです。以下の値が指定可能です。

None
何も設定されません。特殊な機能を一切使わない時はこれを指定しましょう。

All
MultiViews を除いた全ての機能が有効に。Options 自体を設定しない場合、これになります。

ExecCGI
cgi の実行を許可します。ScriptAlias ディレクティブを使わずに cgi を使用する際に設定します。

FollowSymLinks
シンボリックリンクのリンク先を Apache がたどれるようにします。

Includes
SSI の使用を許可します。

IncludesNOEXEC
SSI は許可しますが、SSI から外部 cgi を呼び出すのを禁止します。

Indexes
ディレクトリに対するリクエストに対して、DirectoryIndex で指定したファイル(index.html 等)が存在しない場合に、ディレクトリ内ファイルの一覧を表示します。

MultiViews
コンテントネゴシエーション を有効にします。ブラウザから送信される HTTP ヘッダにあわせてレスポンスを変える為の機能です。例えば Accept-Language ヘッダに合わせて、日本語のファイルを返したり、英語のファイルを返したり。

SymLinksIfOwnerMatch
シンボリックリンクのリンク先がシンボリックリンク自体と同じオーナーである場合のみ、リンク先をたどれるようにします。

改めて整理してみると必ず使う機能ってひとつもないよな~と思います。基本は None で用途に合わせて最低限の設定をするのが理想ですね。

AllowOverRide
AllowOverRide は .htaccess で使用できるディレクティブを指定する為のディレクティブです。以下が指定可能です。

None
.htaccess では何も設定できません。

All
.htaccess で設定可能なものは全て有効になります。

AuthConfig
認証関連のディレクティブの使用を許可します。.htaccess を使って基本認証など掛ける場合に必要です。

FileInfo
ドキュメントタイプやドキュメントのメタデータを制御するディレクティブの使用を許可します。よく使うところで言うと ErrorDocument や SetEnvIf, BrowserMatch, mod_rewrite 関連でしょうか。

Indexes
ディレクトリインデックス関連のディレクティブの使用を許可します。AddIcon, DirectoryIndex など。

Limit
アクセス制御関連のディレクティブの使用を許可します。IP 制限を .htaccess で設定するのに必要です。

Options[=Option,…]
Options ディレクティブの使用を許可します。.htaccess で設定するオプションをカンマ区切りで指定する事で設定可能になります。

カテゴリー: Linux, ソフト・ハードウェア パーマリンク

コメントを残す

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