WEBユーザディレクトリ
Userdirモジュールの機能を使うことにより、1つのドメインで無数のユーザーを公開出来る事ができます。
http://example.com/~user/
http://example.com/user/
みたいな感じ。
プロバイダの無料WEBスペースをかりるとこのようになっていると思います。
それではやってみよう!٩(๑❛ᴗ❛๑)
Apacheメイン設定ファイル編集
# vi /etc/httpd/conf/httpd.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>
↓変更
<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 disable
↓
#UserDir disable ← #を追加(コメントアウト)
#
# To enable requests to /~user/ to serve the user’s public_html
# directory, remove the “UserDir disable” line above, and uncomment
# the following line instead:
#
#UserDir public_html
↓
UserDir public_html ← 行頭の#を削除(コメント解除)
AliasMatch ^/testuser(.*) /home/testuser/public_html/$1 ←(testuserユーザーのみhttp://example.com/~testuser/のように~でアクセスできるようにする)
AliasMatch ^/([^/]+)/(.*) /home/$1/public_html/$2←(全てのユーザーでhttp://example.com/userdir/ユーザー名/でアクセスできるようにする)
</IfModule>
#
# Control access to UserDir directories. The following is an example
# for a site where these directories are restricted to read-only.
#
#<Directory /home/*/public_html>
# AllowOverride FileInfo AuthConfig Limit
# Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
# <Limit GET POST OPTIONS>
# Order allow,deny
# Allow from all
# </Limit>
# <LimitExcept GET POST OPTIONS>
# Order deny,allow
# Deny from all
# </LimitExcept>
#</Directory>
※以下を追加します。
<Directory /home/*/public_html>
AllowOverride All
Options IncludesNoExec ExecCGI FollowSymLinks
<Limit GET POST OPTIONS>
Order allow,deny
Allow from all
</Limit>
<LimitExcept GET POST OPTIONS>
Order deny,allow
Deny from all
</LimitExcept>
</Directory>
# service httpd restart
これで各ユーザのpublic_html以下のファイルがWEB上に公開できます٩(๑❛ᴗ❛๑)۶一般的なWEBユーザ公開設定はここでおしまいです。
お疲れ様です。
しかし・・問題が!!
WEBユーザの貸し出している人が独自ドメインを使いたいといった場合に問題が発生します。
それではやってみよう!٩(๑❛ᴗ❛๑)
Apacheメイン設定ファイル編集
どっちも致命的ですね・・・;
Userdirディレクティブとバーチャルホストは共存しない仕様のようです。
しかし・・問題が!!
方法はある!
Userdirモジュールをメインファイルで有効にせず、WEBユーザを使用したいドメインのみで設定する事で解となります。
画像がどうも独自ドメインの方では読み込めない
# vi /etc/httpd/conf/httpd.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←無効にする
意図しない独自ドメインもUserdirディレクティブが効いてしまう。
# vi vhost_webuser.com.conf
<VirtualHost *:80>
ServerName www.webuser.com
ServerAlias webuser.com
# DocumentRoot /home
# UserDir public_html
<IfModule mod_userdir.c>
AliasMatch ^/([^/]+)/(.*) /home/$1/public_html/$2
UserDir public_html
</IfModule>
<Directory /home/*/public_html>
AllowOverride All
Options IncludesNoExec ExecCGI FollowSymLinks
<Limit GET POST OPTIONS>
Order allow,deny
Allow from all
</Limit>
<LimitExcept GET POST OPTIONS>
Order deny,allow
Deny from all
</LimitExcept>
</Directory>
</VirtualHost>
<VirtualHost *:443>
SSLEngine on
SSLCertificateFile /etc/pki/tls/certs/ftp.crt
SSLCertificateKeyFile /etc/pki/tls/certs/server.key
<IfModule mod_userdir.c>
AliasMatch ^/([^/]+)/(.*) /home/$1/public_html/$2
UserDir public_html
</IfModule>
ServerName www.webuser.com
ServerAlias webuser.com
</VirtualHost>
どうしようもないの?
# vi vhost_newhoge.net.conf
<VirtualHost *:80>
ServerName newhoge.net
DocumentRoot /home/testx2/public_html
ErrorLog logs/virtual-error_log
CustomLog logs/virtual-access_log combined env=!no_log
<Directory “/home/testx2/public_html”>
AllowOverride all
</Directory>
</VirtualHost>
<virtualhost *:80>
ServerName newhoge.net
Redirect / http://www.newhoge.net
</virtualhost>
# service httpd restart
httpd を停止中: [ OK ]
httpd を起動中: [ OK ]
方法はある!
かなりマニアックな設定ですが、いかがだったでしょうか。
お疲れ様でした☆