1read 100read
2011年11月2期UNIX44: Apache関連 Part11 (766) TOP カテ一覧 スレ一覧 2ch元 削除依頼

Apache関連 Part11


1 :2008/09/30 〜 最終レス :2011/11/14
HTTP ServerのApacheに関する話題を扱うスレッドです。
http://httpd.apache.org/
●インストール済みApacheの詳細情報の調べ方
httpd -h 簡易ヘルプ
httpd -v バージョン情報
httpd -V コンパイル条件など詳細な情報
httpd -l 静的リンクされたモジュール一覧
httpd -M 現在の設定ファイルで読み込まれるモジュール(2.2以降)
●公式マニュアル
http://httpd.apache.org/docs/1.3/ Apache 1.3
http://httpd.apache.org/docs/2.0/ Apache 2.0
http://httpd.apache.org/docs/2.2/ Apache 2.2
●ディレクティブ一覧
http://httpd.apache.org/docs/1.3/mod/directives.html
http://httpd.apache.org/docs/2.0/mod/quickreference.html
http://httpd.apache.org/docs/2.2/mod/quickreference.html
前スレッド
Apache関連 Part10
http://pc11.2ch.net/test/read.cgi/unix/1179627714/

2 :
立ててみた @linux

3 :
@linux???????

4 :
>>1


5 :
自宅鯖の質問スレで質問した際、こちらのほうが適切な回答がとのことでしたので質問させてください。
Apache2.2.8でVirtualHost+SuEXECな環境を作りたいのです。
Apacheはuserもgroupもnobodyで動かしています。
そのためMovableTypeでHTML生成すると、ファイルのオーナーがnobodyになってしまい
これはSuEXECなるものを使えってことなのか?と試しているんですが、どうやってもnobodyでファイルが生成されてしまうのです。
/home/[ユーザ名]/public_htmlがVirtualHost個々のDocumentRootです。
./configure --prefix=/usr/local/apache2 \
--enable-so \
--enable-rule=SHARED_CORE \
--enable-rewrite \
--disable-dav \
--enable-cgi \
--with-included-apr \
--with-perl=/usr/local/bin/perl5.8.8 \
--with-port=80 \
--enable-suexec \
--with-suexec-caller=nobody \
--with-suexec-docroot=/home \
--with-suexec-userdir=public_html \
--with-suexec-bin=/usr/local/apache2/bin/suexec \
--with-suexec-logfile=/usr/local/apache2/logs/suexec_log \
--with-suexec-uidmin=1000 \
--with-suexec-gidmin=1000
configureは上記のようにしていますが、httpd_vhostとかに何かおまじないを書く必要があるんでしょうか?
もしくは他の方法でユーザ自身がオーナーになるようにできるんでしょうか?
初心者的質問で恐縮ですが、よろしくお願いします。

6 :
>>5
/usr/local/apache2/logs/suexec_log に何かでてないの?

7 :
ログには何も書き出されないです。
suexec -Vではconfigureの値がでてきているので
入っているのは確認できているんですが・・・

8 :
ふむ。
あれ?
> /home/[ユーザ名]/public_htmlがVirtualHost個々のDocumentRootです。
これってちょっと特殊な要件だね。すまん、見逃してた。
<VirtualHost *:80>
DocumentRoot "/home/foo/public_html"
ServerName foo.example.com
</VirtualHost>
って感じ?だとすると、たぶん SuEXEC としては UserDir としての
アクセスじゃないから動かないと思う。(確かめたわけじゃないが、
かなり厳密に動作環境をチェックしてたはずなので)
おおもとのホスト名が www.example.com だとして、
まず http://www.example.com/~foo/ で SuEXEC での動作を確認し
て、http://foo.example.com/http://www.example.com/~foo/
にリダイレクトなり ProxyPass & ProxyPassReverse なりしてやる
のがいいんでない?
注意点としては・・・
・本当にできるかどうかわからんw
・規模が大きくなるとパフォーマンスでないかもしれん
・ProxyPass つかうと VirtualHost側に想定するログが出ないかも
(全部アクセス元が127.0.0.1とか)
・同様にIPアドレスベースでアクセス制御考えてる場合は破綻するかも
などなど。まぁがんがれ。

9 :
補足
>>7
> ログには何も書き出されないです。
ログが出ないことからしても、SuEXECなアクセスとして扱われてな
い可能性が高い気がするなぁ。マニュアルに SuEXEC としてアクセ
スするための条件とか書いてない?

10 :
SuexecUserGroup

11 :
>>10
> SuexecUserGroup
おお、これかw
http://httpd.apache.org/docs/2.2/suexec.html#usage
>>5
>>8 は忘れていいw

12 :
うおおおおおおおおお!ありがとうございます!
まーさーにー、これだ!
というか、documentはスミからスミまで読みますスミマセンでした。
もうできなくてできなくて、仮想サーバを立ち上げてやろうかとか考えてました。

13 :
一応、結果報告
できました!
まぁお約束のdirectory is writable by othersが出て、一瞬なんでよ?と
思いましたが、そりゃOtherが触れたらsuexec意味ねーじゃんと言うことで
755にして解決です。
ありがとうございました。

14 :
mod_rewriteの[L]の動作について、質問させてください。
jpgはミラーサーバーへ飛ばして、xjpgはサーバー内のjpgを表示したいのですが、
RewriteRule ^(.+)\.xjpg$ /images/$1.jpg [L]
RewriteRule ^(.+)\.jpg$ http://www.mirror.xxx/images/$1.jpg
とやったら2行目まで処理されました。
[L]て、それ以上書き換えルールを適用しないおまじないじゃないんでしょうか。
xjpgはミラーになかったときに突っ返えされたやつなんで無限リダイレクト・・・

15 :
レス付かないようだから素人から。
使わないから曖昧な知識なんだけど、リクエストされたURLパスと物理的な
実ファイルを紐付ける前に、リクエストのパスを書き換えるモジュールだよね?
ってことは、
xjpgでのリクエストはRewriteRule ^(.+)\.xjpg$ /images/$1.jpgに変換して
リクエストを処理。
変換されたリクエストはRewriteRule ^(.+)\.jpg$の条件にマッチするので
ミラーにないからxjpg突っ返されて無限リダイレクト。
1回のリクエストで2行目まで処理されてるんじゃなくて
都合2回分のリクエストが発生したため、2行目まで処理されてるって
ことになってるんじゃないかと素人は思う。

16 :
いやあ、そうならないように [L] をつけたわけで、
なのに評価が止まらないので質問しました。
でも自己解決したので報告します。
.htaccessでやってたからダメでした。httpd.confに移したらOK。
.htaccessだと、[L]でとめた後にまたディレクトリを読み込んで評価しちゃうんですね。

17 :
http://pc11.2ch.net/test/read.cgi/mysv/1219482693/218
この質問だれか答えてください

18 :
logresolve がまともに動かないんだが、
logresolve は、どのDNSを使っているのか?
設定するファイルも無いようなんだが。
そもそも、パソコンが使うDNSとは
一意に決まっているのか?
それはどこに設定されているの?

19 :
logresolveは127.0.0.1をリゾルブしないって聞いたんだけど、本当?

20 :
Windowsは板違い。

21 :
マニュアルを調べたのですが自信がないので教えてください。
Allowoverride で Fileinfoを許可したいが、
CGIやPHP、SSI
を使用させたくない、というポリシーです。
phpに関してモジュールの使用を禁止するのは
モジュール自体をoffにするしか事実上不可、であってるでしょうか?
またCGI,SSIについては
optionsを禁止しておけば、Fileinfoが使えても使用できない、
ということであってるでしょうか?

22 :
>>21
この質問における
>CGIやPHP、SSI
CGIとPHPの違いは何?
http://httpd.apache.org/docs/2.2/ja/howto/htaccess.html
http://httpd.apache.org/docs/2.2/ja/mod/core.html#allowoverride
http://httpd.apache.org/docs/2.2/ja/mod/core.html#options
ここらへんかなぁ
おまけw
http://ja.wikipedia.org/wiki/Common_Gateway_Interface

23 :
>>22
wとかつけてるが、全然お前理解できてないだろw
Common_Gateway_Interface って覚えたてで使いたいのか?

24 :
mod_cgiやmod_includeもしたら良いかと

25 :


26 :
Ubuntu8でApache2を使用しています。
現在、Nameベースのバーチャルホスト設定して
異なるドメインのサイトを2つ運用しているのですが、
今度ここにもう一つサイトを追加することになりました。
そこで質問なのですが、Apacheを再起動せずに
バーチャルホストの設定を追加することは可能でしょうか?
目的は運用中のサイトを停止させずに新規サイトを追加することなので、
バーチャルホスト以外のやり方があるならばそれでも構いません。
何か良い方法があればご教示ください。

27 :
graceful もだめなの?

28 :
別プロセスで上げる、とか。
つーかさ、止めちゃだめなような作りにするなよ。
障害で落ちることもあるんだから。

29 :
>>27-28
どうもありがとうございます。
やはりgracefulが最善でしょうか。
さすがに別プロセスであげると管理がややこしくなるので
深夜などを狙ってgracefulで再起動することにします。
ありがとうございました。

30 :
そういう用途のための graceful だからな。しっかし、再起動でも問題ないだろ
一瞬でも止められないサイトなら鯖を二重化するなりしとけw

31 :
graceful-stop → start
ただのgracefulよりすっきりする
ただし忙しいサーバーだとstartのときに、bind出来ないって怒られることがある(バグ)

32 :
mod_rewriteを<Directory>や.htaccessに入れるのは上級者向けなのに
初心者ほどやりたがるから困る

33 :
Apacheのことが何でも載ってる、Apacheを極めたい人の究極の一冊となるとどんな本がお勧めですか?

34 :
ソース

35 :
>>31
ちょとまて、bind出来ないってそれマジか?
OSは?Apacheのバージョンは?

36 :
apacheにsslを組み込んでインストールがしたいので、本の通り下記のコマンドを実行しました。
./configure --enable-rewrite=shared --enable-ssl=shared --prefix=/opt/www
するとエラーが出てきました。
configure: error: ... Error, SSL/TLS libraries were missing or unusable
解決策があれば教えてほしいです。

37 :
あぁ、ごめん
graceful-stop → start ね
タイミングによってはなるかもだね
graceful で起きるのかと勘違いしたw

38 :
>>36
書いてあるとおりでしょ。

39 :
>>36
ライブラリが見つけれないのかなと思って、/etc/ld.so.confにsslの
ライブラリがある場所を追記したんですけど、余り関係ないですか?
どなたかヒントをお願いします。

40 :
>>36
openssl関連が入ってないんじゃないの?
たとえば・・・
http://oku.edu.mie-u.ac.jp/~okumura/linux/?Apache%202#m73dd07e
OSはなに?
linuxならわざわざソースから入れないでパッケージ使えば楽ジャン。
apt使用できるなら依存関係も含めてインストールしてくれるし( ・∀・)イイ!!

41 :
2.2.10喜多

42 :
>>40
openssl-develが入っていなかったぽいです。
インストール後、configureはできたんですけど、
今度はmakeで引っかかってしまいました・・・。
一旦ソースからのインストールはあきらめて、aptでやり直してみます。
アドバイスどもでした。

43 :
参考
http://pc11.2ch.net/test/read.cgi/tech/1100616350/625

44 :
errordocument ディレクティブを使用せずに
元のエラードキュメントを変更する方法はないでしょうか?
ドキュメントルート以下にエラードキュメントを置けず、
またhttp://でのURL指定も避けたいためです。
標準で表示されるエラードキュメント(たとえば、404 not foundとか)
は.htmlでどこかにデータがあるわけではなく、
apacheのソース自体に書き込まれてるのでしょうか?

45 :
そうだよ

46 :
ちがうよ

47 :
>>44
Apache 2.xのサンプル設定にある多言語表示用のErrorDocumentと
その前に置かれているAlias /error/を見れば解決方法はわかるよな?

48 :
ドキュメントルート以下にエラードキュメントを
置けないという状況がまず理解できない

49 :
httpd.confでデフォルトで記述してある
Aalias /error/ をコメントアウトしても
表示変わりません、
ErrorDocument 404 /error/HTTP_NOT_FOUND.html.var
自体をコメントアウトしても
表示されるエラーって
ソース以外どこに書いてあるのを読み込んできているんでしょうか。

50 :
DocumentRoot外にエラーページを配置する方法はわかっただろ
なのに何が問題なんだ?
訊きたいことをちゃんとまとめてから来るんだね

51 :
Apahceのバージョンとhttpd.conf晒してよ。

52 :
ソースの server/protocol.c に書いてあるよ

53 :
ieは自前のエラーメッセージを出す仕様
ってエスパーしてみる
正確にはリクエストのサイズとか
いくつか条件有ったと思うけど

54 :
[HOWTO] Internet Explorer 5.x および 6.x の "HTTP エラー メッセージの簡易表示" 機能をサーバー側で無効にする方法
http://support.microsoft.com/?scid=kb%3Bja%3B294807&x=19&y=7

55 :
>>54
久々に笑える仕様だなあ。

56 :
そりゃ有名な仕様だよ
そっけなく表示される短文のエラーメッセージを
わかりやすくしようと考えたんだろうね
Internet Explorerはそういういらぬお節介が多い
時としてContent-Typeを無視するのも同じことかと
ボクが考えた親切設計〜☆とかいうのはよく吟味しないと
迷惑をかけたりヘタすりゃ脆弱性になったりもする
サービス精神が豊かすぎるつーか余計なことが大好きな人は
そういうことになってないか確認を忘れずに

57 :
メッセージの長さでキャンセルできるのは知らんかった。

58 :
ケータイで web を見るときもサーバからのエラーページを
そのまま見せるものは皆無なわけだし、
IE の仕様が超絶的におかしいというわけでもないよ。
メーラーだって、550 relay denied というエラーで蹴られたとしても、
そのエラーは画面に出さずに「送れませんでした」とダイアログを
出すようなものが多いでしょ。それと同じ。
エラーページのサイズで挙動を変えるというのはだが。

59 :
サイトごとの負荷を調べたいのですが、何か良いツールはありますか?
バーチャルホストで10サイトほど運営しています
通常のアクセスログをサイト毎に存在します
こういう場合はサイト毎にWebalizeでも使うのでしょうか

60 :
負荷ってトラフィック的かCPU的かメモリ的か同時アクセス的か等によって変わるよ、
例えば単純な大データ転送より細かなCGIプログラム処理の方がサーバ&環境にとって負荷が高いって事も多いし、
まず何を目的に負荷の調査をしたいのかがわからないとね。

61 :
Webalize(r?) とか言ってるから
単にアクセス数を数えたいだけ?

62 :
回答ありがとうございます。
サイト毎のCPU的な負荷を知りたいです。
サイト毎の load average のような。
そういったツールってありますかね?

63 :
それは無理だろう。

64 :
使用するリソースってバーチャルホストごとに明確に分離してるわけじゃないよ。
複数のサイトで共有して使われてるものもあるから、
そういう負荷状況を取得するのは無理。
どうしてもそういうのが欲しいのなら、バーチャルホストごとに
別プロセスで立ち上げること。名前ベースなら無理だけど。

65 :
>>64
なるほど、そう考えるとそうですね
ありがとうございます
ただ、一つだけ合点がいかない部分がありますので聞かせてください
レンタル鯖の xreaって、サイト毎に load average っぽいのが見られるじゃないですか
1以上が長い時間続くとサーバー停止みたいな
あれって apache + virtualhost で 名前ベースだと思うのですが、
どのように実現しているんですかね

66 :
>>65
どこで見れんの?

67 :
XREAが出してる「負荷率」はCGI。
CGIWRAP使ってなんかしてるんだと思うけど俺はCGIWRAPはよくわからん。
それとアクセス数と転送良だな。

68 :
>>64
自分もCGIの多いサイトを運営してるけどこれ一本でOK的なツールは知らない、(誰か知ってたらおしえて)
でどうしてるかというと
MRTG(snmp)でCPUとトラフィックのロードアベレージを取っていて気になる時間帯のログを分析して割り出してる
効率の良い方法とは言えないけどこれで負荷が高いサイトやCGIは有る程度特定できる。

69 :
CGIだけだったら、/usr/bin/perl をラッパーにして、
なんか記録撮るプログラム挟めば行けそう

70 :
ふーむ、CGIの負荷でしたか
ありがとん

71 :
CGIなら、suEXEC使ってユーザ毎に分ければ
何となく制限とか簡単そうな気がする

72 :
suexec + accton

73 :
レン鯖のことはよくわからないけど
PHP/CGIラッパーつかってるなら実行権限はapacheやnobodyじゃなくてユーザーなわけでしょ?
なら普通に60秒ごとにでもpsのpcpuを監視するスクリプトでも書けば実現できるんじゃない?

74 :
まもなくApache2.2.11が出るぞー

75 :
Apache 2.3.0-alpha がそろそろ出るぞ
アルファだけあってまだまだ変なとこもあるけど
安定した追加機能もあったりする

76 :
スレ違いすまん。
海外に、web server の履歴(OSやらServer) を調べられるサイトが
あったと記憶しているんだが、名前が分らない。
どなたか教えてくださいませ。

77 :
http://uptime.netcraft.com/

78 :
httpd.conf を再読み込みするときに
kill -HUP をしているのですが、
ブラウザからCGIなどの処理中の場合、
CGIの処理が中断され終了してしまうことを確認しました。
これを回避する方法ってないでしょうか?

79 :
apachectl graceful

80 :
kill -USR1

81 :
http://httpd.apache.org/docs/2.2/stopping.html

82 :
httpsのみでアクセスさせたいページがあるのですが、
mod_rewriteをいじってもうまくいきません。
セキュリティの対策として行なおうとしてますが、
一般的に、こうしたことはする必要ないのでしょうか?

83 :
環境変数SERVER_PORTが443じゃなかったら弾く。
mod_rewriteでもmod_setenvifでも出来るよ、多分。

84 :
>>83
あ、環境変数で弾けばよかったんですね。
やってみます。ありがとうございました!

85 :
環境変数なんて見なくても、ポート80のほうのバーチャルホストではじけばいいだろ
てか弾くんじゃなくてHTTPSのほうにリダイレクトすりゃ親切だけどな

86 :
同一ホストだが、特定のディレクトリだけはSSLに限定したいって要件を前提で回答した。
リダイレクトすりゃ親切ってのは同意。

87 :
Apache2.0.63でAuthDBMUserFileを使って認証ファイルをDBM形式にしたいのですが
--enable-auth-dbm
をつけてconfigureすると、環境によってデフォルトがSDBM、NDBM、GDBMなど 使える
DBMのうちのどれかになるそうです。
http://httpd.apache.org/docs/2.0/ja/mod/mod_auth_dbm.html#authdbmtype
デフォルトを、たとえばGDBMにしたい、という場合はconfigureでどういうオプションをつける
のでしょうか?
AuthDBMType GDBM
とするとGDBMが使えるのは知っています。
「デフォルトをGDBMにしたい」というのはただの興味で、自分の環境のCentOS5.2だとSDBMが
デフォルトになったので、なんでかな?という理由です。

88 :
>>87
つ ttp://httpd.apache.org/docs/2.0/ja/programs/configure.html#packageopt

89 :
AサーバからBサーバへIPアドレス変更した対策として
Aに来たアクセスをそのまま
Bへ送る、みたいなことってできないでしょうか?
自サイトにアクセスがあったらWEBプログラムで
ローカルのデータベースに書き込む仕組みのため
IP変更で一時でも情報が分散するのが困るためです。
メールサーバー(postfix)はクリアできたのですが、
ウェブサーバー(apache)は方法がさっぱり分かりません

90 :
DNSのAレコードを修正したってこと?
メールは中継すればいいけど、Webはなぁ・・・w

91 :
Webサーバーレベルではどうしようもないな。
BにAのIPアドレスを、ARPに反応しないような方法で割り当てればいい。

92 :
経緯がよう分からんが、TTLを300secぐらいに小さくしておいて移行期間を少しでも短くするとか.。
古いアドレスの方は完全に止めてしまえば、そっちにアクセスされてデータがおかしくなることもない。
無理にシームレス化させなくて、割り切った方がいんでは?

93 :
iptables なり pf なりでパケット転送すればいいんでね。
要はグローバル-プライベートじゃなくてグローバル-グローバルの NAT。

94 :
>>89
当面サーバAを止めずにアクセスをリダイレクトするのは?
サーバBへはhttp://1111.2222.3333.4444/
って感じでIPアドレスベースで。
その程度のライトな対応はよくやる。

95 :
新しいホストがNameBaseだと使えない罠
旧IPでPROXYとかどーよ

96 :
読み返してみると俺は何を書いてるんだ…
要するに>>93みたいな事を言いたかった

97 :
>>88
./configure --help
と同じ内容ですよね。
で、そこのどこに「デフォルトDBMを指定するには」があるんでしょ?
関係ありそうなのは
 --enable-auth-dbm
 --with-gdbm[=path]
 --with-ndbm[=path]
 --with-berkeley-db[=path]
だけかと思うのだけど。

98 :
検索してたら、サービスとして起動しているものをコマンドで停めるのはNGっぽいことを書いてる人がいたけど、そういうもん?
VMwareで自動起動したtomcatがstopできないんだけど…

99 :
>>98
どういうこと?

100read 1read
1read 100read
TOP カテ一覧 スレ一覧 2ch元 削除依頼