apacheの設定とサーバの設定について教えてください

やりたいことは、
ブラウザからhttp://190.xxx.xxx.3/~taro/index.html にアクセスしたら、
/home/taro/public_html/index.html が表示されるようにしたいのですがエラーが表示されます

[error]404エラー
File does not exits: /home/taro/public_html/index.html が表示されます

環境:
[サーバ]
OpenBSD3.8
Apache1.3.29
[クライアント]
winxp home

[作業した手順]
1.OpenBSD3.8をインストール

2.adduserでtaroを追加
#adduser -home /home

Name: taro
Group: taro
HOME: /home/taro

3./var/www/conf/httpd.confの設定

ServerRoot "/var/www" ←defaultの設定

User www ←defaultの設定
Group www ←defaultの設定

DocumentRoot "/home"

<Directory "/home">
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>

UserDir "/home/*/public_html"

<Directory "/home/*/public_html">
Options Indexes
AllowOverride None
Order allow,deny
Allow from all
</Directory>

4.apacheの起動
#apachectl configtest
Syntax OK
#apachectl start
/usr/sbin/apachectl start: httpd started

どうすれば/home/taro/public_html/index.htmlが表示されるようになるのでしょう??

なにかヒントをいただければ助かります。

回答の条件
  • 1人30回まで
  • 登録:
  • 終了:2006/04/30 20:04:26
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答8件)

id:tadashi0805 No.1

回答回数287ベストアンサー獲得回数29

ポイント17pt

ファイルそのものは、/home/taro/public_html/index.htmlに確かに存在するのでしたら、ファイルindex.htmlとその上のディレクトリpublic_htmlのアクセス権を確認してください。

Apahceは、設定からuser:www group:wwwで動作し、あなたのユーザはuser:taro group:taroで作られているので、アクセス権のotherの読み込み権がある必要があります。

確認の仕方は、

ls -l /home/taro

で出てくるpublic_htmlの行の一番左側が

drwxr-x--- 3 xxxx xxxx 102 Apr 21 17:13 public_html

のパターンでなく

drwxr-xr-x 3 xxxx xxxx 102 Apr 21 17:13 public_html

になっていることを確認し、これがOKなら同様に

ls -l /home/taro/public_html/index.html

  • rwxr-x--- 3 xxxx xxxx 102 Apr 21 17:13 index.html

のパターンでなく

  • rwxr-xr-x 3 xxxx xxxx 102 Apr 21 17:13 public_html

になっていればOKです。

もしNGのパターンになっていたら、chmodコマンドを使って、public_htmlなら

chmod 755 /home/taro/public_html

で、index.htmlなら

chmod 644 /home/taro/public_html/index.html

で変更できます。

id:bsdusr

回答ありがとうございます。

書き忘れたのですが、

インストール時にパーティションわけしております

a: / 4GB

b: swap 4GB

e: /tmp 4GB

f: /var 4GB

g: /usr 16GB

h: /home 80GB

早速ですが、ls -lで確認した結果を書きます。

[home]

#ls -l /

drwxr-xr-x 7 root wheel 512 Apr 27 22:58 home

[/home/taro]

#ls -l /home

drwxr-xr-x 2 taro taro 512 Apr 22 21:15 taro

[/home/taro/public_html]

#ls -l /home/taro

drwxr-xr-x 2 taro taro 512 Apr 22 21:16 public_html

[/home/taro/public_html/index.html]

#ls -l /home/taro/public_html

-rwxr-xr-x 1 taro taro 51 Apr 22 21:16 index.html

この状態でよろしいんでしょうか??

念のため home,taro,public_html,index.html

すべてに対して

chmod 644を実行しました。

httpd.confは上記に書いたとおり、手を加えない状態で、ブラウザからhttp://190.xxx.xxx.3/~taro/index.htmlにアクセスしてみましたが、404エラーが出ます。

[error]File does not exist: /home/taro/public_html/index.html

これはアパッチの記述の問題なのでしょうか?OpenBSDの固有のセキュリティみたいなものが関係しているのでしょうか??

2006/04/28 12:59:54
id:tezcello No.2

回答回数460ベストアンサー獲得回数69

ポイント17pt

うちの Vine + Apache1.3.31 では

UserDir "/home/*/public_html"

のところが

UserDir public_html

になってますが?

id:bsdusr

ご指摘のように

UserDir public_htmlにしてみましたが、

やはり404エラーが出ます。

[error]File does not exist: /home/~taro/index.html

がエラーログに表示されております。

また、上記の1番の返信に"すべてに対して

chmod 644を実行しました。"は755の間違いです。

2006/04/28 13:08:43
id:namiheikun No.3

回答回数75ベストアンサー獲得回数6

ポイント16pt

http://httpd.apache.org/docs/2.0/ja/mod/mod_userdir.html

UserDirの記述ですね。

UserDir public_html

の記述でいけると思います。

id:bsdusr

2の返信に書きましたとおりのエラーが出てしまします。

2006/04/28 13:09:52
id:mutsuju No.4

回答回数551ベストアンサー獲得回数35

ポイント5pt

UserDir "/home/*/public_html" を

UserDir "public_html" に変更して下さい。

id:bsdusr

やはり2の返信に書きましたとおりの404エラーがでます。

何が原因なのでしょうか??

2006/04/28 13:10:24
id:namiheikun No.5

回答回数75ベストアンサー獲得回数6

ポイント16pt

http://hotwired.goo.ne.jp/webmonkey/2002/46/index3a.html

HTTPエラー404はファイルが見つからないというエラーですので、情報から判断すると

[error]404エラー

File does not exits: /home/taro/public_html/index.html

が表示されるのでファイルが見つかっていないようです。

大文字小文字とかの不一致はないですか?(単純なことなんですが・・・)

http://www.xxxxxxx.xx/index.html

なら表示するが

http://www.xxxxxxx.xx/Index.html

は表示しないような現象は起こるんですが。一度確認してみてください。

id:bsdusr

ご指摘のとおり今一度確認いたしましたが、

/home/taro/public_html/index.html

は実際に存在し、すべて小文字であることを確認いたしました。

いまだに原因がつかめないでいます。

素人が使いこなせるOSではないことはよくわかっているのですが興味があっていじくっております。ゴールデンウィーク期間中になんとか、Apacheの設定だけでも終わらせることを目標としておりますが、行き詰まってしまいました。

(このサーバの公開を予定しているわけではありません。とてもそんな能力がありません。そのあたりはご心配なくよろしくお願いします。)

何かヒントになる書き込み等ご存知でしたらお知らせいたければたすかります。

2006/04/28 14:09:23
id:kai10 No.6

回答回数115ベストアンサー獲得回数3

ポイント16pt

モジュールが有効になっていないのでは?

LoadModule userdir_module modules/mod_userdir.so

または、

LoadModule userdir_module libexec/apache/mod_userdir.so

AddModule mod_userdir.c

1.3系が試せる環境がないのですが、2.x系だと、server-infoで有効になっているモジュールが確認できます。

id:bsdusr

有益な情報たすかります。

参考ページにありましたように、

#httpd -l をためしたところ

mod_userdir.cが確認できました。

また、server-infoはモジュールがインストールできていないらしく、機能しませんでした。

また、http://httpd.apache.org/docs/1.3/mod/mod_alias.html#alias

これかなとおもい、

Alias /~taro /home/taro/public_html

としてみましたが、

404エラー[error]File does not exist: /home/taro/public_html/index.html

が出ました。

taro以下のファイルを/var/www/htdocsいかに配置した場合は、(Documentツリー内というのでしょうか?)正常にindex.htmlが表示されるのですが、/homeいかに配置したばあい、表示されません。

[追加]

http://190.xxx.xxx.3/~hanako/index.htmlが表示される環境

#adduser -home /var/www/htdocs

Name: hanako

Group: hanako

HOME: /var/www/htdocs/hanako

#cd /var/www/htdocs/hanako でhanakoのディレクトリが作成されているのを確認。

#mkdir public_html

#chmod 755 public_html

#cd public_html

#vi index.html

<HTML><HEAD></HEAD><BODY>

hanako page

</BODY></HTML>

#chmod 644 index.html

/var/www/conf/httpd.confファイルの修正

ServerRoot "/var/www" ← defaultのまま

User www ← defaultのまま

Group www ← defaultのまま

DocumentRoot "/var/www/htdocs" ← defaultのまま

UserDir public_html

Alias /~hanako /var/www/htdocs/hanako/public_html

以上のように修正して,

#apachectl configtest

Syntax OK

#apachectl start

として、LANでつながったクライアントのWinXPのブラウザから

http://190.xxx.xxx.3/~hanako/index.html

とするとhanako pageのHTMLが表示されます。

っと、ここでおもったのですが、

Alias /~hanako /var/www/htdocs/hanako/public_html

これを入れないと404エラーになるんです。

[error]File does not exist:/htdocs/~hanako/index.html

ということは、mod_userdirの動作がおかしいというか動作していないことになるんでしょうか??

ということは、mod_aliasによって表示されていることになるんでしょうか?

でも、#httpd -l とすると

mod_userdir.cがきっちり表示されているのですが?いったい何なんでしょう??

2006/04/29 14:03:11
id:tezcello No.7

回答回数460ベストアンサー獲得回数69

ポイント18pt

/var/www/htdocs に移したら見る事が出来る

とありましたが、どうやってアクセスしたのですか?

サイトのホームディレクトリは /home のはずでは?

ディレクトリ名を(”)で括っているのが気になります。

まずは、基本からチェックしましょう。

(コメント等からわかる事もありますが)

1. オリジナルの httpd.conf に替えて、(httpd)サーバを再起動し、 http://190.xxx.xxx.3/ へのアクセスでapacheのテストページが表示されますか?

2. 変更後の httpd.conf に替えてサーバ再起動後、 http://190.xxx.xxx.3/ へのアクセスはどうなりますか?

 /home に何も用意していなければ403エラーが表示されるか、ディレクトリが表示されるものと思います。

 /home にテスト用の index.html を用意しておくとよいと思います。

 都合があるかもしれませんが、 DocumentRoot は、/home/www とでもして、他のユーザディレクトリと分けておいた方が見苦しくないでしょうね。

3. 1と同じ表示(キャッシュが残っているので再読込が数回必要かもしれませんが)になる場合はh httpd.conf の変更が反映されていません。文法的なエラーがあるかもしれません。(質問文から、OKなようですが。)システムのログ、あるいはエラーログに何かヒントがあると思います。

サーバが機能している事がわかったら、ユーザのホームページについて調べます。

4. 「質問2」のコメントのログだと、OS上に taro が登録されていない事が疑われます。

  su taro とするとか /etc/passwd を調べるかして登録されている事を確認してください。

5. ユーザのホームディレクトリ(今回は/home/taro)のパーミッションは、701 以上が必要。(OKですね)

6. mod_userdir が有効になっているか確認する(OKですね)

  UserDir/home/*/public_html の指定はフルパスでもいいようですね。

  これとその後の <Directory /home/*public_html>の記述を合せます。

ここまで来れば、大抵taroのホームページを見る事が出来るはずなんですが。

OpenBSD は使った事が無い(RedHat と Vine だけしかない)のですが、Linuxはそんなに難しいOSでは無いと思います。

少なくても、Vine ではhttpdサーバのインストールはコマンド一発で、ユーザの設定も躓いたのはパーミッションだけでした。

id:bsdusr

いろいろご指摘していただいてありがとうございます。表示できる場合は[6]の返信に書かせていただきました。

私も、混乱していて、あと、httpd.confファイルもぐちゃぐちゃになってきましたので、OSを再インストール、一から設定しなおしてみました。

OSインストール

#adduser -home /home

Name: taro

Group: taro

HOME: /home/taro

#cd /home/taroに移動、ディレクトリが作成されているのを確認。

taro以下にpublic_html/index.htmlを作成

home 755,taro 755,public_html 755,index.html 644を設定して確認

httpd.confファイルの設定

ファイルの設定をもう一度おこなってみました。

ServerRoot "/var/www" ←defaultの設定

User www ←defaultの設定

Group www ←defaultの設定

DocumentRoot "/home"

UserDir public_html

以上のように編集し、一番最初に記入した<Directory>~</Directory>

などは一切記入しない状態で保存。

#apachectl configtest

Syntax OK

#apachectl start

でブラウザからアクセス

http://190.xxx.xxx.3/~taro/index.html

404エラー

[error]File does not exist:/home/~taro/index.html

6の返信にも書きましたが、mod_userdirが正常に動作していないように思えてきました。

#find / -name '*.so' | more

としてみても、

mod_userdir.soは見つからりませんでした。

mod_userdir.cも同様にして探してみましたが、見つかりませんでした。

ただ、#httpd -lをすると

mod_userdir.cがきっちり表示されてるんですが。

Apacheのサイトから1.3.x用のmod_userdir.soとmod_userdir.cの最新版をダウンロードすることはできるのでしょうか??

[追加:質問の答え]

1. 何も手を加えていないdefaultのhttpd.confの状態で、ブラウザからhttp://190.xxx.xxx.3/にアクセス。アパッチのテスト画面が表示されることを確認。

2.httpd.conf修正。/homeにindex.htmlを作成chmod 644する。ブラウザからアクセス。http://190.xxx.xxx.3/

404エラー[error]File does not exist:/home/

3.#apachectl configtest

Syntax OK

#apachectl startしております。

4.su taro , su hanako どちらもプロンプトの前の#が$に変わりユーザが変更されている模様です。su kintaroとadduserしていないユーザ名で試してみるとsu: unknown login kintaroになります。

5.OKです。

6.httpd -lでmod_userdir.cが表示されている。

Userdir public_htmlとしています。

<Directory /home/*/public_html>の記述は削除しております。

以上のような状態です。

せっかくのご指摘に対しての回答が遅くなってしまいました。ごめんなさい。

いまだに原因がはっきりしません。

mod_userdirが動作していないように見えるのですが、また、いろいろ試してみます。

2006/04/29 17:38:07
id:kai10 No.8

回答回数115ベストアンサー獲得回数3

ポイント25pt

2度目です。

httpd -lで見れるのは、動的モジュールとしてではなく、組み込みでインストールされているモジュールです。なので、findで探しても出てきません。

ということは、

LoadModule userdir_module modules/mod_userdir.so

まではOKということと同じです。

"AddModule mod_userdir.c"が効いてない様な感じに見れますね。

UserDir disabled

という記述が有ると無効になるようですがないですよね?


繰り返しになりますが、server-infoで有効になっているモジュールとその設定が確認できると思うので、紹介しておきます。

LoadModule info_module libexec/apache/mod_info.so

AddModule mod_info.c

も必要です。LoadModuleは組み込みで入っているなら要らないです。

id:bsdusr

お世話になっております。

ご指摘の、UserDir disabledの件ですが、

#でコメントアウトしてあるのを確認しました。

コメントアウトするだけではだめなのか?と思い、UserDir disabledを削除し、

#apachectl stop

#apachectl configtest

#apachectl start でブラウザからアクセスしましたが、404エラーです。

また、明示的にユーザを指定する方法もあるようですので、

UserDir enabled taro

UserDir public_html

の部分だけを変更し、あとはすべて返信7の環境での場合もだめでした。

404エラー[error]File does not exist:/home/~taro/index.html

hanakoの場合の返信6の環境でも、

UserDir enabled hanako

UserDir public_html

の部分を変更し以下Aliasの部分をコメントアウトしてみました。が404エラーです。

#Alias /~hanako /var/www/htdocs/hanako/public_html

[error]File does not exist: /htdocs/~hanako/index.html

やはり、Aliasを書かないと/var/www/htdocs/hanako/public_html/index.html

のhanako以下のフォルダを探しにいっていないようです。

やはり、組み込まれているmod_userdir.cの動作がおかしいのかもしれません。

ですので、apacheのサイトからmod_userdir.cとmod_userdir.soをダウンロードして、

サーバの適切な場所にこの2つのファイルを配置して、

先ほどkai10さんがご指摘の

LoadModule userdir_module modules/mod_userdir.so

または、

LoadModule userdir_module libexec/apache/mod_userdir.so

AddModule mod_userdir.c

をhttpd.confファイルに記入すれば(探してみましたが、現在はどこにも書かれていません記入するとSyntax errorがでます)、ひょっとして動作するかと思いまして、

先ほどからApacheのサイトをみにいっているんですが、いまだ見つかっておりません。

がんばって探してみます。

その後いろいろやってみたら、

httpd.confのなかにchrootに関することがかかれていて、chrootについて調べてみたら、しっかりマニュアルに書いありました。

恥ずかしい限りです。

まだ、意味がよくわかってないのですが、どうもDocumentRootを/homeにおいても動作しないような仕組みになってる模様です。

もうちょっと勉強しなおします。http://www.openbsd.org/faq/faq10.html#httpdchroot

2006/04/29 23:30:33

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません