http://ドメイン/~ユーザー名でアクセスできるようにする

ユーザーディレクトリに public_html ディレクトリがあることが前提です。

※ CGIは専用のディレクトリcgi-binのみで動作するようにします。

 自動で作るにはユーザーの追加を参照
 /home/ユーザー名/public_html


# vi /etc/httpd/conf/httpd.conf ← 設定ファイル編集

#UserDir public_html ← 先頭の# を削除
 
UserDir public_html


#<Directory /home/*/public_html>
#    AllowOverride FileInfo AuthConfig Limit
#    Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
#    <Limit GET POST OPTIONS PROPFIND>
#        Order allow,deny
#        Allow from all
#    </Limit>
#    <LimitExcept GET POST OPTIONS PROPFIND>
#        Order deny,allow
#        Deny from all
#    </LimitExcept>
#</Directory>

  先頭の # と、フォルダの中身を見せたくないので Indexes を削除

<Directory /home/*/public_html>
    AllowOverride FileInfo AuthConfig Limit ← オプションは下記を参照
    Options MultiViews SymLinksIfOwnerMatch IncludesNoExec ← オプションは下記を参照
    <Limit GET POST OPTIONS PROPFIND>
        Order allow,deny
        Allow from all
    </Limit>
    <LimitExcept GET POST OPTIONS PROPFIND>
       Order deny,allow
        Deny from all
    </LimitExcept>
</Directory>


ユーザーのCGIディレクトリの設定

ScriptAlias /cgi-bin/ /home/httpd/cgi-bin/

#ScriptAlias /cgi-bin/ /home/httpd/cgi-bin/ ← #がなければ付けます

#
# "/home/httpd/cgi-bin" should be changed to whatever your ScriptAliased
# CGI directory exists, if you have that configured.
#
<Directory /home/*/public_html/cgi-bin> ← このように変更
AllowOverride FileInfo AuthConfig Limit ← オプションは下記を参照
Options ExecCGI ← CGIを有効(その他オプションは下記を参照)
Order allow,deny
Allow from all
</Directory>

※ CGI を許可したくないユーザーがいるときはこの下に下記を追加
 ↓
<Directory /home/xxxxxx/public_html/cgi-bin>
Options None ← ここをNoneに(下記のオプションを参考)
</Directory>

設定が終了したら保存し、httpdサーバー再起動

# /etc/rc.d/init.d/httpd restart
httpdを停止中:         [ OK ]
httpdを起動中:         [ OK ]

OKが出れば正常に作動しています。

※ Options は有効にするサーバのオプションを指定します。
All MultiViewを除くすべて有効。
ExecCGI CGIプログラムの実行許可。
FollowSymLink シンボリックリンクに従う。
Includes SSIの許可。
IncludesNoExec SSI は許可、CGI の #Exec と #include は禁止。
Indexes ディレクトリにアクセスがあった場合、にindex.html等のファイルがないと、
インデックスリストが自動作成され表示されます
MultiViews マルチビューのサーチを許可(例えば、.../Fileのリクエスト時に このファイルが存在しない場合、サーバは.../File.*をサーチ)。
None すべて禁止。

※ AllowOverride は.htaccess のオプションです
All ユーザーの.htaccess指定を優先利用する
AuthConfig ユーザー認証のコントロールコマンドのみ記述を許可
FileInfo ドキュメントタイプ関係のコマンドのみ記述を許可
Indexes ディレクトリインデックス関係のコマンドのみ記述を許可
Limit ユーザーのアクセスコントロール関係のコマンドのみ記述を許可
Options Optionsやディレクトリ設定関係のコマンドのみ記述を許可
None ユーザーの.htaccessをを認めない

きちんと見れるかテストします

@ ユーザーディレクトリ(/home/ユーザー名/public_html)にテスト用のindex.htmlファイルをアップロードします

A Lan 内のPCからテスト → http://192.168.11.2/~ユーザー名
   ※ 192.168.11.2 の部分はサーバーのIP

index.htmlファイルが見れれば成功です。

バーチャルホストの設定



バーチャルホストとは1つのWeb サーバーで複数のサイト運営をすることです。

少し説明が下手ですが…
例として、abcd.com と言うドメインを取得したとします。
http://好きな文字.abcd.com といた感じで複数のドメインでサイト運営できます。


# vi /etc/httpd/conf/httpd.conf ← 設定ファイル編集

最下部に追記していきます。

NameVirtualHost *

※ まずメインのドメインの記述を必ずします
<VirtualHost *>
ServerAdmin xxxxx@xxxxx.com
DocumentRoot /home/httpd/html
ServerName xxxxx.com
</VirtualHost>

※ ここからサブドメインの設定です
<VirtualHost *>
ServerAdmin 1234@xxxxx.com
DocumentRoot /home/ユーザー名/public_html ← htmlファイルの置く場所
ServerName 1234.xxxxx.com ← 1234の部分は任意(好きなもの)
</VirtualHost>

※ 複数設定する場合は上記の要領で記載してください
<VirtualHost *>
ServerAdmin aaaaa@xxxxx.com
DocumentRoot /home/ユーザー名2/public_html
ServerName abcde.xxxxx.com
</VirtualHost>

※ 参考
ServerAdmin は何らかのエラーがリクエストに対して発生した場合、エラーメッセージと共にココに設定したアドレスがブラウザ上に表示されます。
各ホストごとに設定した方が無難だと思います。

DocumentRoot はhtml ファイルの置く場所を指定します

ServerName ドメインを指定します


 CGI の設定は上記の設定と同じですのでそちらを参照してください。

SSI の動作確認する

SSI ファイルを以下の内容で作成


<html>
<body>
<pre>
<!--#printenv -->
</pre>
</body>
</html>

適当なファイル名をつけ拡張子を .shtml にして保存して、ユーザーディレクトリ(ドキュメントルート)に保存してください。

ブラウザでアクセスして環境変数一覧が表示ざれれば、SSI は正常に作動してます。




Copyright c Vine Linuxで自宅サーバー. 2004 All Rights Reserved.