• 締切済み

CentOS 5のApache2 UserDir

さくらインターネットでCentOS 5の入った専用サーバを借りて勉強中です。 Apache2をインストールし、ユーザーディレクトリの設定をして、各ユーザーのホームディレクトリにあるpublic_htmlの中のディレクトリを参照するよう設定しました。 当初、下記サイトを参考に http://httpd.apache.org/docs/2.0/ja/mod/mod_user … 以下のように設定ファイルで設定したのですがうまくいきませんでした。(コメント部分は省略しています)。 --- <IfModule mod_userdir.c> UserDir public_html </IfModule> --- 上記設定で、http://○○○.com/~ユーザー名/にアクセスすると、ファイルが見つからない旨のエラーが表示されていました。 ログを確認すると以下のようになっていました。 --- [Sun Jul 31 20:56:19 2011] [error] [client ○○.××.△△.□□] File does not exist: /home/ユーザー名/\xe3\x82\xb3\xe3\x83\xa1\xe3\x83\xb3\xe3\x83\x88\xe5\xa4\x96 \xe3\x81\x97\xe3\x81\xbe\xe3\x81\x97\xe3\x81\x9f --- そこで、apacheの設定ファイルを以下のように書き直したところ --- <IfModule mod_userdir.c> UserDir /home/*/public_html </IfModule> --- 無事にサイトにアクセス出来るようになりました。 一応問題は解決したとはいえ、できれば --- <IfModule mod_userdir.c> UserDir public_html </IfModule> --- の方がなぜうまくいかなかったのかの原因も知りたいです。 原因と考えられるのは、さくらのサーバーを借りたときに最初のサーバーのデフォルトの文字が LANG=C だったのを、日本語を使うために LANG="ja_JP.UTF-8" に変更したことです。 が、英語名のディレクトリ名で問題が起こるか?と言う疑問と、文字コードが原因としてどうやればうまく行くんだ?という疑問があります。 どなたか原因が分かる方はいらっしゃいますでしょうか? よろしくお願いいたします。

  • bease
  • お礼率56% (14/25)

みんなの回答

  • koba0626
  • ベストアンサー率67% (19/28)
回答No.2

度々すみません。 読み返しててきになったのですが、 コピペしたらenable と enabled、disableとdisabledが混在してたので補足します。 apache.orgでは、 ○enabled,disabled (チェック)enable,disable です。 httpd.confの記述ミスですかね。。。 詳細は「参考URL」をつけておきます。

参考URL:
http://httpd.apache.org/docs/2.0/ja/mod/mod_userdir.html
bease
質問者

補足

返信が遅れて申し訳ございません。 解説いただいた方法を試したのですが、残念ながら質問文と同じ内容のエラーが起こってしまい、File not found になってしまいます。 allでなくユーザー名でも試してみたのですが、やはり同じエラーになってしまいます。 ググっても同じエラーが起こったよ、っていう人が見つからないんですよね……。

  • koba0626
  • ベストアンサー率67% (19/28)
回答No.1

外してたら申し訳ないです。 細かいリビジョンは忘れてしまいました(2.0.14くらい?)が、どこかのタイミングでUserDirの取り扱いが変わってるはずです。 以下、httpd.confの抜粋ですが、 # UserDir is disabled by default since it can confirm the presence # of a username on the system (depending on home directory # permissions). #UserDir enable all # # 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 7行目にremove the "UserDir disable"と書かれていいますが、1行目に記載があるように、特にこの記述がなくてもデフォルトでUserDir Disabledです。 ということで、UserDir public_htmlを有効にするには、4行目のコメントを解除(もしくは記述)して、明示的に Userdir enabled にすればOKだと思います。 Userdir enabled 以降はスペース区切りで有効化するユーザの一覧を記述するのですが、 >UserDir /home/*/public_html 全てのユーザで有効化しようとされているみたいですので all でOKだと思います。

関連するQ&A

  • apache1.3でのUserDir設定について

    apache1.3.37を使用してます。 httpd.confを下記のようにして、UserDirを有効にしてます。 <IfModule mod_userdir.c> UserDir /home/*/public_html/index.html <Directory /home/*/public_html> AllowOverride All </Directory> </IfModule> ※UserDir関連では上記以外変更してません。 この設定で、http://www.xxxx.jp/~useridを開き /home/userid/public_html/index.htmlは表示されるのですが、 画像ファイル等だけ、DocumentRootに指定したディレクトリを 見に行ってしまいます。(エラーログにて確認) 当然、画像はDocumentRootで指定したディレクトリではなく 、/home/userid/public_htmlに入ってるので表示されず ×マークになります。 画像ファイル等も/home/userid/public_html直下から参照したいのですが どのようにすれば良いでしょうか? 設定が不足してるのでしょうか? また、/home/userid/public_html配下にcgiと言うディレクトリを 作成し、CGIを動作させたいのですが、その場合どのような設定を 追加すればよいのでしょうか? よろしくお願いします。

  • Fedora Apache ユーザディレクトリの設定 /をつけないと表示されない!

    Fedora CoreのApacheでユーザディレクトリのコンテンツを公開するため、下記のように設定しました。 <IfModule mod_userdir.c> 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> で、ばっちり見れるようになったんですが、下記のような問題が残っています。 http://ホストアドレス/~ユーザ名/ では正常に表示されるが、 http://ホストアドレス/~ユーザ名 のようにスラッシュを省略すると、表示されない。 ご存知の方おられましたらよろしくお願いしますー!

  • Apache2.2.3へアップグレード

    現在、FC4に Apache2.0.*をインストールして使用してしました。 これは、標準的にインストールされたもので、手動でインストールした 訳ではありません。Apacheののアップグレードを考えており、2.2.3をソースからダウンロードしてインストールして正常に動作しています。 ところが、分からない点が1つほどございます。 以前のhttpd.confの設定で、下記の設定のようにユーザーディレクトリ作成 (/~ユーザー名/)として設定してました。 ttp://fedorasrv.com/apache-userdir.shtml しかし、今回新たにソースよりインストールしたhttpd.confには <IfModule mod_userdir.c>からはじまる項目がなく、記載も少し異なるようです。上記近辺に同じように記載して、再起動して起動させましたが http://*******/~exmple/ ドキュメントルートは元の2.0.*と同じようにしているので、ファイルは存在します。 表示されませんと表示されてしまい、有効になっていないようです。 2.0.* から 2.2.*になった場合は設定箇所が異なるのでしょうか? それとも何か他に原因があるのでしょうか? どうにかして 2.2.3にて ユーザディレクトリ毎 ~を設定したいと考えています。 よろしくお願いします。

  • RedHat7.3 apache-2 ユーザーのページが見れない。

    ブラウザを立ち上げて http://localhost/ ってやると/usr/local/apache2/htdocs/index.htmlが見えるのですが、 taroというユーザーを作ってホームディレクトリのしたに ~taro/public_html/index.html をつくってやると Forbidden You don't have permission to access /~taro on this server. Additionally, a 403 Forbidden error was encountered while trying to use an ErrorDocument to handle the request. Apache/2.0.39 Server at localhost Port 80 といわれちゃいます。ちなみに.httpd.confの中の所では #UserDir public_html <IfModule mod_userdir.c> UserDir public_html </IfModule> となっています。 どうすれば見れるようになるのでしょうか?

  • apacheでmod_userdir.c

    apacheを使っています。設定ファイルhttpd.confには LoadModule userdir_module modules/mod_userdir.so という記述があるにも関わらず、 $ httpd -lコマンドを実行しても、 mod_userdir.c が表示されていません。 これでは、httpd.conf中に、 UserDir /home/*/public_html を記述しても、public_htmlにアクセスされても Pages not found となってしまいます。 mod_userdir.cを組み込む方法をご教授ください。

  • Apacheのユーザーディレクトリにアクセス不可

    こんにちは。 ここ最近、学習のためにCentOSでWebサーバの構築を行っていたのですが、 どうにも自力では解決できない問題に直面しているため、皆様のお力をお借りできればと思います。。 【現象】 ApacheによるWEBサーバに「http://サーバIP/~ユーザ名/index.html」でアクセスしようとすると、 「403 Forbidden」エラーでアクセスできない。 【環境】 ・CentOS 6.4 64ビット (VirtualBox上のゲストOSとして稼働) ・Apache - 2.4.6 (/usr/local/apache/ 以下に存在) 【既に確認済みの事項】 ・以下のディレクトリのパーミッションは755に設定されている(711も確認済み)  「/home」 「/home/ユーザ名」 「/home/ユーザ名/public_html」 ・SELinuxはDisabled(Permissiveも確認済み) ・「# restorecon -R /home」コマンドは一応実行済み ・「public_html」以下にはパーミッション644の「index.html」が存在している ・「http://サーバIP/~間違ったユーザ名/」は403でなく404エラーになる ・「http://サーバIP/~ユーザ名/存在しないファイル名」は404でなく403エラーになる ・htdocs以下のファイルには「http://サーバIP/~」で正常にアクセスできる。 (htdocs以下のフォルダのパーミッションは755で、711だと403エラーになった。) 【設定ファイル】 /usr/local/apache/conf/httpd.conf は以下の通り記述されている。 ・モジュールロード部分 LoadModule userdir_module modules/mod_userdir.so ・設定部分 <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> <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> 同様の症状に困っている書き込み・記事等もたくさんあり、それらは確認しつくしたつもりですが、 全てパーミッション見直し・SELinuxの設定までで解決しているように見受けられます。 おそらく、自分では思いもつかない全く別の原因が存在するのではないかと思っており、 皆様のお力をお貸しいただければ幸いです。 なお、足りない情報等あればご指摘いただければと思います。 どうぞ余禄お願いいたします。

  • apache2でユーザーディレクトリが

    apache2でユーザーディレクトリを使いたいんですが ただのapacheではデフォルトでユーザーディレクトリがつかえるんですが 403でパーミッションを直して使えて apache2でいろいろ apache2.confなどにuserdir.cなどのモジュールを読み込ませたり sites-avalias/defaultに /home/*/public_htmlなど試してみたいんですが ダメみたいです ちょっと省略していますが ちなみにバージョンはApache/2.2.3です エラーは http://xxxxx/~ユーザー名 にアクセスすると 403ではなく404エラー フォルダが無いということは sites-avalias/defaultかapache2.confの設定がおかしいんでしょうか? ちゃんと /home/xxxx/public_htmlも作ってありますし パーミッションもあっています しかし <Directory /home/xxx/public_html>などの設定をしたいんですが sites-avalis/defaultに書くのか それともapache2.confに書くのかまぎらわしくて defaultのほうには<Directory /var/www>など書いてあって apache2.confにはmoduleなどいろいろ書いてあります apache2がhttpd.confではなくてまぎらわしくてよくわかりません それとバージョンなど古かったりなど違ったりして できないみたいです Apache/2.2.3でユーザーディレクトリを使っているかた 詳しく教えて下さいお願いします

  • ~user を表示できない

    RedHat8.0+Apache2.43でウェブサーバーを立てたんですが、トップページは普通に表示できるのにユーザーのページが表示できません。/etc/httpd/conf/httpd.confでは <IfModule mod_userdir.c> # UserDir "disable" UserDir public_html </IfModule> としてあります。ユーザー(taro)のディレクトリのパーミッションは [root@aurora public_html]# pwd /home/taro/public_html [root@aurora public_html]# la 合計 16 drwxr-xr-x 2 taro users 4096 1月 31 16:36 . drwxr-xr-x 23 taro users 4096 5月 30 17:35 .. -rw-r--r-- 1 taro users 2936 1月 31 16:36 TokyoTime.class -rw-r--r-- 1 taro users 53 1月 31 16:36 index.html [root@aurora public_html]# です。 ユーザーのページを見れるようにするにはどうしたらいいでしょう?

  • Apacheでのユーザーディレクトリ生成

    現在fedora core4 -Apache- でサーバー構築を勉強中なのですが、どうしても解決できない問題が出ました。それはユーザーディレクトリを生成した後、そのディレクトリにアクセスできないという問題です。 ユーザー[testuser]を追加し、/home/testuser/public_htmlを作成後 /home/testuser/public_html/index.htmlを作成、 httpd.confの設定を <IfModule mod_userdir.c> #UserDir disable UserDir /home/*/public_html/ </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 <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> とし、ttp://www.testsrv.net/~testuserにアクセスしたところ、 You don't have permission to access /~user1 on this server. アクセス権が無いとはじかれました。 この場合、アクセスできるようにするにはどのようにすれば良いのでしょうか?

  • apacheのScriptAliasの記述について

    どなたか,ご教授いただければ幸いです。 WindowsXp Proでapacheを動かしています。次の設定で,cgiはうまく動作していました。 --- <IfModule alias_module> ScriptAlias /cgi-bin/ \"C:/Program Files/Apache Software Foundation/Apache2.2/cgi-bin/\" </IfModule> <Directory \"C:/Program Files/Apache Software Foundation/Apache2.2/cgi-bin\"> AllowOverride None Options ExecCGI Order allow,deny Allow from all AddHandler image/gif .gif AddHandler image/jpeg .jpg </Directory> --- これに, http://www.miloweb.net/win/server/apache.html を参考にして,各ユーザーフォルダでcgiが実行できるようにしようと,次のようにしました。 --- <IfModule alias_module> ScriptAlias /cgi-bin/ \"C:/Program Files/Apache Software Foundation/Apache2.2/cgi-bin/\" ScriptAlias /cgi/ \"C:/www/users/*/cgi/\" </IfModule> <Directory \"C:/Program Files/Apache Software Foundation/Apache2.2/cgi-bin\"> AllowOverride None Options ExecCGI Order allow,deny Allow from all AddHandler image/gif .gif AddHandler image/jpeg .jpg </Directory> <IfModule mod_userdir.c> UserDir \"C:/www/users/*/\" </IfModule> <Directory \"C:/www/users/*/cgi/\"> AllowOverride None Options ExecCGI Order allow,deny Allow from all AddHandler image/gif .gif AddHandler image/jpeg .jp </Directory> --- その結果, http://localhost/~user/ としてuserのホームページにアクセスできるようになったのですが, cgiについては, http://localhost/~user/cgi/・・・ としてもアクセスできません。どなたか原因をご教授いただけないでしょうか。 ScriptAlias /cgi-bin/ \"C:/Program Files/Apache Software Foundation/Apache2.2/cgi-bin/\" ScriptAlias /cgi/ \"C:/www/users/*/cgi/\" の行を入れ替えると,\"C:/Program Files/Apache Software Foundation/Apache2.2/cgi-bin/\"においてあるcgiが実行できなくなります。ScriptAliasは1行目しか有効でないようにも見えるのですが,上に書いた参考URLではできているようなので,戸惑っています。