WEBユーザー公開設定・独自ドメイン設定

Apache Apacheユーザディレクトリ 公開

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 ]

 

方法はある!

かなりマニアックな設定ですが、いかがだったでしょうか。
お疲れ様でした☆

最新情報をチェックしよう!
>システム構築・保守に特化した会社です。

システム構築・保守に特化した会社です。

システムの構築・保守運用「システムガーディアン」 社内システム担当が欲しいが、専属で雇うほどの仕事量はない。 必要な時に必要なだけ頼りたいというお悩みを持つ企業様へ専門知識を持って対応を行っております。 サーバから各種システムまで自社・他社で構築されたシステムに対してサポートを行っております。

CTR IMG