apacheの最近のブログ記事

本来、サブドメインって表現はふさわしくないかもしれないけど、
http://www.example.co.jp/hoge/foo.html とか
http://bar.example.co.jp/hoge/foo.htmlってあったら、

example.co.jpとかがドメインで、wwwやbarはホスト名って呼ばれてて、
負荷分散や用途別で分けられてある複数台のサーバー機の名前を入れて区別しているんだけど、
1台のPCでも複数のアドレスを使いたい!!ってコトでできたのがVirtualHost


例えば、http://hoge.example.co.jp/にアクセしたときに/home/hoge/public_htmlを表示するには、
apacheの設定ファイルを開き、
# vim /etc/httpd/conf/httpd.conf

最後の方の、
#NameVirtualHost *:80
のコメントアウトを外し、さらにその下に、
<virtualhost *:80="">
  ServerAdmin webmaster@hoge.example.co.jp
  DocumentRoot /home/hoge/public_html
  ServerName hoge.example.co.jp
  ErrorLog logs/hoge.example.co.jp-error_log
  CustomLog logs/hoge.example.co.jp-access_log common
</virtualhost>
を追加

DocumentRootを/var/www/html以下に設定する場合はいいけど、
/home/ユーザー/~にする場合は、前回書いたSELinuxに対する対処が必要となる。



<参考サイト>
名前ベースのバーチャルホスト設定
バーチャルホストの設定



---------------追記(2009/5/4)---------------
*.example.co.jpを全部example.jpに飛ばしたいときは、ServerAliasを使う。
<virtualhost *:80="">
  ServerName example.co.jp
  DocumentRoot /home/hoge/public_html
</virtualhost>
<virtualhost *:80="">
  ServerName example.co.jp
  ServerAlias *.example.co.jp
  Redirect permanent / http://example.co.jp/
</virtualhost>

<参考サイト>
バーチャルホストの例 - Apache HTTP サーバ
DocumentRoot


レンタルサーバーとかで、http://www.○○○.jp/~user/みたいなアドレスが割り当てられることが多いですが、
あんな感じで、ユーザーごとに独立したWebスペースを与えて、アドレスを上のように区別する方法は意外と簡単

今は、自分用に鯖立ててるけど、別に知り合いとかならスペース貸してもいいし、
その時のためのメモ♪


まぁ、やり方は簡単。だって、apache自体にそういう機能があるからねww


まずは、
# vim /etc/httpd/conf/httpd.conf
からapacheの設定ファイルを編集。

350行前後に
<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

    #
    # 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

</IfModule>


とあるので、

    UserDir disable

    #UserDir disable

または、特定のユーザーだけにしたい場合は、
    UserDir disable
    UserDir enable  
などとし、

    #UserDir public_html
のコメントアウトをはずす。



そして、その次の
#<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>
のコメントアウトを全てはずす。
AllowOverrideは、.htaccessを有効にするとかで、
Limitなんちゃらはその後の、GETとPOSTは許可し、それ以外を破棄するって意味(たぶん

それが出来たら、
# chmod 755 /home/ユーザ名
# chmod 755 /home/ユーザー名/public_html
でアクセス権限を変更し、(※ユーザ名のところは*でもよい)
SELinuxを有効にしている場合は、
$ chcon system_u:object_r:httpd_sys_content_t /home/ユーザー名/public_html -R
とする。

以上で設定終わり。



<参考サイト>
・home-mg.que.ne.jp
・うえちょこ@ぼろぐ [Linux]ApacheがPermission deniedを吐いてくる

このアーカイブについて

このページには、過去に書かれたブログ記事のうちapacheカテゴリに属しているものが含まれています。

前のカテゴリはAIRです。

次のカテゴリはAstroです。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

ウェブページ

Powered by Movable Type 5.0