- PR -

apacheのDocumentRoot&CGI設定について

投稿者投稿内容
Nori
会議室デビュー日: 2004/11/19
投稿数: 6
投稿日時: 2004-11-19 13:59
以前に似たような内容があったのですが微妙に環境が違うのでスレッド建てさせて頂きました。

現在 RedHat9+Apache2.0.40でwwwサーバを構築中です。
しかし、ローカルから
http://サーバローカルIP/ にアクセスすると、TestPageが表示
http://サーバローカルIP/index.html にアクセスすると、index.htmlが表示
されます。

また、PHP・SSIは無事稼動していますがCGIだけ403or500が出てしまい何をしたらよいかわかりません。

※知合いの運用中の似たような環境(RedHat9+Apache2.0.40)のhttpd.confのdomain関係のみ書き換えた物でも同様な症状が起きました。

403って事はアクセス権関係だとは思いますがパーミッションも755に設定してあります。

どうか私に知恵を授けてください。
お願いいたします。

[ メッセージ編集済み 編集者: Nori 編集日時 2004-11-19 14:00 ]
okutin
ベテラン
会議室デビュー日: 2003/12/11
投稿数: 98
お住まい・勤務地: 広島
投稿日時: 2004-11-19 14:29
こんにちは。

引用:

Noriさんの書き込み (2004-11-19 13:59) より:

しかし、ローカルから
http://サーバローカルIP/ にアクセスすると、TestPageが表示
http://サーバローカルIP/index.html にアクセスすると、index.htmlが表示
されます。



TestPageというのが何なのかわからないのですが、コンテントネゴシエーションが効いているのではないでしょうか?

引用:

Noriさんの書き込み (2004-11-19 13:59) より:

また、PHP・SSIは無事稼動していますがCGIだけ403or500が出てしまい何をしたらよいかわかりません。

403って事はアクセス権関係だとは思いますがパーミッションも755に設定してあります。



500の方は詳細な情報が無いとわかりませんが、403の方はファイルシステムのパーミッションとは限りません。
例えば、アクセスされたURLがディレクトリ名で終わっている場合、ファイル一覧を取得しブラウザ側に返さないという設定をしていたらデフォルトのファイルが無い場合(例えばindex.htmlなどがない)403になります。
Nori
会議室デビュー日: 2004/11/19
投稿数: 6
投稿日時: 2004-11-19 19:26
TestPageとは、apacheがデフォルトで表示するデーモンページ?の事です。

私のDocumentRoot及びDirectoryは"/home/www/public_html"に設定しています。
そこにはちゃんとindex.htmlも設置してあります。

あと、よく分からないのですがapacheの最初の設定(ファイル内)でUserとGroupの設定をapacheにしてるのですが、それに伴ってフォルダorファイルのパーミッションを変える必要があるのでしょうか?
藍空
常連さん
会議室デビュー日: 2003/06/24
投稿数: 49
投稿日時: 2004-11-19 21:19
デーモンページとおっしゃられているのは、Apacheをインストール
したときのデフォルトのページのことですね?

で、

> しかし、ローカルから
> http://サーバローカルIP/ にアクセスすると、TestPageが表示
> http://サーバローカルIP/index.html にアクセスすると、index.htmlが表示
> されます

となるのは、okutinさんが書かれている通り、コンテントネゴシエ
ーションが働いているからだと思います。
つまり、

 http://サーバローカルIP/

にアクセスすると、ブラウザの受け取り可能な言語との組み合わせ
で、日本語版のブラウザであれば、「index.html.ja」が表示され
るのでしょう。

 http://サーバローカルIP/

にアクセスしたときに、index.htmlを開きたいのであれば、ドキュ
メントルートにある、index.html.*を全く別のディレクトリに移動
させてみてください。

あと、CGIに関しては、CGIを動かす為に、

 ・httpd.confのどの部分を変更したか
 ・CGIを設置しているディレクトリパス

などの情報もご提示いただけませんか?

あと、CGIを設置しているディレクトリ(途中のディレクトリも含む)
の所有者やパーミッションもご確認下さい。
apacheというアカウントでhttpdを起動しているのであれば、途中
のディレクトリへの移動のパーミッションと、CGI自体の実行権が
必要でしょう。
あんとれ
ぬし
会議室デビュー日: 2004/01/14
投稿数: 556
投稿日時: 2004-11-19 22:00
403 はともかく、500 は内部エラーですから、エラーログににも何らかのメッセージが表示されるかと思うのですが、参照されましたか?

> http://サーバローカルIP/ にアクセスすると、TestPageが表示
> http://サーバローカルIP/index.html にアクセスすると、index.htmlが表示
> されます。

このようになるのは、他の方も指摘されてるように、コンテンツネゴシエーションが
有効になっているからです。

この機能は、mod_negotiation を無効にするか、httpd.conf の

AddHander type-map var

の設定を削除すると無効になります。
Nori
会議室デビュー日: 2004/11/19
投稿数: 6
投稿日時: 2004-11-20 14:40
<< ディレクトリ構成 >>

home [755]
 |
 +--- www [755]
     |
     |
     |
     +--- public_html [755] / index.html [644]
          |       test.php [644]
          |       test.shtml [644]
          |
          +--- cgi-bin [755] / test.cgi [755]


※ファイル・フォルダのアクセス権はデフォルトの[root]のままです。



<< CGI変更箇所 >>


### Section 1: Global Environment

# Don't give away too much information about all the subcomponents
# we are running. Comment out this line if you don't mind remote sites
# finding out what major optional modules you are running
ServerTokens Prod ← << 変更 >>

# KeepAlive: Whether or not to allow persistent connections (more than
# one request per connection). Set to "Off" to deactivate.
#
KeepAlive On ← << 変更 >>

# MaxKeepAliveRequests: The maximum number of requests to allow
# during a persistent connection. Set to 0 to allow an unlimited amount.
# We recommend you leave this number high, for maximum performance.
#
MaxKeepAliveRequests 1000 ← << 変更 >>


### Section 2: 'Main' server configuration

# ServerAdmin: Your address, where problems with the server should be
# e-mailed. This address appears on some server-generated pages, such
# as error documents. e.g. admin@your-domain.com
#
ServerAdmin **@** ← << 変更 >>

# ServerName gives the name and port that the server uses to identify itself.
# This can often be determined automatically, but we recommend you specify
# 中略
# redirections work in a sensible way.
#
ServerName mydomain:80 ← << 変更 >>

#
# UseCanonicalName: Determines how Apache constructs self-referencing
# URLs and the SERVER_NAME and SERVER_PORT variables.
# When set "Off", Apache will use the Hostname and Port supplied
# by the client. When set "On", Apache will use the value of the
# ServerName directive.
#
UseCanonicalName On ← << 変更 >>

# DocumentRoot: The directory out of which you will serve your
# documents. By default, all requests are taken from this directory, but
# symbolic links and aliases may be used to point to other locations.
#
DocumentRoot "/home/www/public_html" ← << 変更 >>

# This should be changed to whatever you set DocumentRoot to.
#
<Directory "/home/www/public_html"> ← << 変更 >>

#
# Possible values for the Options directive are "None", "All",
# or any combination of:
# 中略
# http://httpd.apache.org/docs-2.0/mod/core.html#options
# for more information.
#
Options Indexes FollowSymLinks ExecCGI ← << 変更 >>
#
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
# 中略
</Directory>

# UserDir: The name of the directory that is appended onto a user's home
# directory if a ~user request is received.
# 中略
# 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>

# Control access to UserDir directories. The following is an example
# for a site where these directories are restricted to read-only.
# 中略
# </LimitExcept>
#</Directory>

<Directory /home/*/public_html> ← << 追加 >>
AllowOverride None
Options FollowSymLinks
Order allow,deny
Allow from all
</Directory>

<Directory /home/*/public_html/cgi-bin> ← << 追加 >>
AllowOverride None
Options FollowSymLinks ExecCGI
Order allow,deny
Allow from all
</Directory>

# DirectoryIndex: sets the file that Apache will serve if a directory
# is requested.
# 中略
# negotiated documents. The MultiViews Option can be used for the
# same purpose, but it is much slower.
#
DirectoryIndex index.html index.html.var index.htm index.cgi index.php ← << 変更 >>


# Optionally add a line containing the server version and virtual host
# name to server-generated pages (error documents, FTP directory listings,
# mod_status and mod_info output etc., but not CGI generated documents).
# Set to "EMail" to also include a mailto: link to the ServerAdmin.
# Set to one of: On | Off | EMail
#
ServerSignature Off ← << 変更 >>


# ScriptAlias: This controls which directories contain server scripts.
# ScriptAliases are essentially the same as Aliases, except that
# 中略
# Alias.
#
#ScriptAlias /cgi-bin/ "/var/www/cgi-bin/" ← << コメント化 >>



# Specify a default charset for all pages sent out. This is
# always a good idea and opens the door for future internationalisation
# 中略
# which encourage you to always set a default char set.
#
#AddDefaultCharset ISO-8859-1 ← << コメント化 >>

# To use CGI scripts outside of ScriptAliased directories:
# (You will also need to add "ExecCGI" to the "Options" directive.)
#
AddHandler cgi-script .cgi .pl ← << 追加 >>

# To parse .shtml files for server-side includes (SSI):
# (You will also need to add "Includes" to the "Options" directive.)
#
AddOutputFilter INCLUDES .shtml ← << # 削除 >>

[ メッセージ編集済み 編集者: Nori 編集日時 2004-11-20 14:45 ]

[ メッセージ編集済み 編集者: Nori 編集日時 2004-11-20 14:48 ]

[ メッセージ編集済み 編集者: Nori 編集日時 2004-11-20 16:14 ]
あんとれ
ぬし
会議室デビュー日: 2004/01/14
投稿数: 556
投稿日時: 2004-11-20 20:51
設定自体には問題がなさそうに見えます。

CGI スクリプトはコマンドラインから実行した場合、うまく動作しますか?
CGI プログラムの中で、Content-Type の出力は正しく行われていますか?
Nori
会議室デビュー日: 2004/11/19
投稿数: 6
投稿日時: 2004-11-21 02:27
引用:

あんとれさんの書き込み (2004-11-20 20:51) より:
設定自体には問題がなさそうに見えます。

CGI スクリプトはコマンドラインから実行した場合、うまく動作しますか?
CGI プログラムの中で、Content-Type の出力は正しく行われていますか?





コマンドラインとは・・・
すみません。

ただ、使用しているCGIは他サイトで普通に問題なく稼動しているCGIなのでCGI自体には問題ないと思います。

スキルアップ/キャリアアップ(JOB@IT)