1 名前:名無しさん@お腹いっぱい。 [2007/05/20(日) 11:21:54 ] HTTP ServerのApacheに関する話題を扱うスレッドです。 httpd.apache.org/ HTTP Serverの最新Versionは Apache/2.2.2 Apache/2.0.58 Apache/1.3.36 ●インストール済みApacheの詳細情報の調べ方 httpd -h 簡易ヘルプ httpd -v バージョン情報 httpd -V コンパイル条件など詳細な情報 httpd -l 静的リンクされたモジュール一覧 httpd -M 現在の設定ファイルで読み込まれるモジュール(2.2以降) ●公式マニュアル httpd.apache.org/docs/1.3/ Apache 1.3 httpd.apache.org/docs/2.0/ Apache 2.0 httpd.apache.org/docs/2.2/ Apache 2.2 ●ディレクティブ一覧 httpd.apache.org/docs/1.3/mod/directives.html httpd.apache.org/docs/2.0/mod/quickreference.html httpd.apache.org/docs/2.2/mod/quickreference.html
551 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/01(木) 00:21:16 ] >>547 キチガイ警報w まぁ、どうしてもCGIでやりたいのならだな、CGI から別プロセスでやりたい処理を system("/path/to/program &"); のようにバックグラウンド起動してだな、CGI は 速やかに終了させる。バックグラウンドプロセスは、処理中はテンポラリファイルを 作るようにしておくんだ。処理が終わったら自分自身でテンポラリを削除する。 そんでもって CGI は、そのテンポラリファイルが存在しているうちは 「処理中です」というメッセージを出力して二重起動しないようにするんだ。 これでどうですかね? しっかし、いるんだよな。こういうアプローチそのものを変えようとしない香具師がよ。 別の発想がないっつーか。長い処理を CGI でやろうってセンスがイミフだぞ。
552 名前:551 mailto:sage [2008/05/01(木) 00:22:18 ] RLimitCPU はもちろん無効にしろよ。
553 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/01(木) 00:31:56 ] >>550 特に理由が無いなら2.2.xの最新
554 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/01(木) 01:01:05 ] >>551 それじゃプロセスグループを切り離せないからマズい。>system(...) apacheにSIGHUP等が飛んだら巻き添えを食うぞ。 daemonプロセスを起動するときと同じ手順を踏む必要があるはず。
555 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/01(木) 01:18:37 ] >>554 やっぱそう?w 何となくそんな気はしたんだけどね・・・ 彼に理解できるレベルじゃないな。 close, fork, setsid, SIGIGN
556 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/01(木) 01:43:32 ] ちと個人的にも気になったんでやってみた。厳密には setsid した方が良いんだろうけど、 漏れの環境では省いても要件は満たせそうだ。setsid しないと親子関係が続いてるから やっぱ close しないとダメだね。以下は perl でテキトーに書いた例。 if ((my $pid = fork()) == 0) { child(); } elsif ($pid > 0) { parent(); } die $!; sub parent { print 'Content-Type: text/html', "\n\n"; print '<html>ok</html>'; exit(0); } sub child { close(STDIN); close(STDOUT); close(STDERR); $SIG{'HUP'} = 'IGNORE'; $SIG{'USR1'} = 'IGNORE'; system("./test.sh &"); exit(0); }
557 名前:541 [2008/05/01(木) 01:46:12 ] >>544 =>>551 =552=555 ごめんなさい。あなたはとても知識が豊富で頭がいいこともわかってます。 僕はあなたから見ると基地害かもしれませんが一生懸命がんばりたいです。 僕に理解できそうにないなら理解できるように教えてください。 といっても、教えてもらえないだろうな・・・orz
558 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/01(木) 01:56:00 ] だから、どうしても >>545 をやるなら方法は >>551 だっつーの。これは理解できるでそ? 画面と実処理を切り離さないといけないと思うの。 で、その実現方法が >>556 なの。これも良く読めば難しくないはず。はず。はず。
559 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/01(木) 02:01:18 ] むしろTORQUEみたいなバッチジョブ管理システムを導入したほうが後々楽かも
560 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/01(木) 02:05:51 ] そもそも何がしたいのか(ry そもそもプログラミング知識は(ry
561 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/01(木) 02:20:41 ] >>556 んー、プロセスグループを切り離さないと、シグナル等のからみでどんな副作用 が出るかわからんから、ちゃんとsetsid()した方がいいと思うんだけどなぁ。 perlなら use POSIX qw(setsid); ... setsid(); でOKだし。 あと、そこまでやってsystem()は無いと思うんだが。 素直にfork&execしようよ……。
562 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/01(木) 02:30:27 ] > httpサーバーがタイムアウトしないようにする。 RLimitCPU maxする。RLimitCPUは秒またはmaxを指定だから300と書いたら5分でタイムアウト。 > Webブラウザがタイムアウトしないようにする。 だらだらと定期的(例えば1分毎)に出力を垂れ流す。 但し、Apache 1.3の頃はNPHスクリプト使えば、Webブラウザと直結だったが 2.xからNPHを含めて、httpdが常にCGIの向こう側にいるような気がする。 これが正しいなら、httpdがバッファリングするからWebブラウザにデータが 渡らないかもしれないので、一回のトランザクションでやる(Webブラウザを タイムアウトさせない)のは難しい。 (バッファリングを回避するために、でかいデータを垂れ流すとWebブラウザが太る) 確実にやるなら ・>>551 (>>556 , >>561 )のようにCGIプロセスを切り離す。 ・自分でサーバーソケット開く。 ・定期的にそれに接続(JavaScriptやmeta refresh使う)することにより、終了を監視する。 ほら、無理にCGIでやる気がなくなってきただろ。(笑)
563 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/01(木) 02:35:42 ] >>541 は おどろき とまどっている! >>541 は あたまが こんらんした! >>541 は にげだした! しかし まわりこまれてしまった! >>541 は くだけちった!
564 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/01(木) 02:42:17 ] >>561 > あと、そこまでやってsystem()は無いと思うんだが。 たしかにwwww サーセン
565 名前:名無しさん@お腹いっぱい。 [2008/05/17(土) 12:57:26 ] >>438 何か嫌なことでもあったのか。 俺は未だに、1.3系を使い続けてるけどな。 これで十分こと足りるし、ライセンスがらみの問題もあるんで
566 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/17(土) 13:24:22 ] Apacheはパイプが詰まったりするし、Perlはシグナル周りを無視しておかないとウンコだったりしてやってられないw
567 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/17(土) 15:28:45 ] ちょい質問なんですが最新版の2.2.8ではなく、 2.2.3をゲットしたいんですが公式にはアーカイブ置いてないんでしょうか??
568 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/18(日) 00:30:49 ] (??д?)? ???????????????????? (??д?)?????????????????
569 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/18(日) 00:34:24 ] Older Releases Only current, recommended releases are available on www.apache.org and the mirror sites. Older releases can be obtained from the archive site. archive.apache.org/dist/httpd/
570 名前:567 mailto:sage [2008/05/18(日) 00:53:30 ] >>569 ありがとうございます! 2年間ぐらい海外のどっかのコミニティサイトをずっと公式だと思ってましたwwww(ノ∀`)
571 名前:名無しさん@お腹いっぱい。 [2008/05/20(火) 13:32:22 ] パスワード認証に付いて質問させてください。 アウトソーシングしているサーバがあるのですが、ssh等でのアクセスはできず FTPのみのアクセスになり、htpasswdが実行できません。 パスワードファイルは他の環境(手持ちのLinux環境)で作成したものをアップロードして 使用することもできるのでしょうか? すみませんが教えてくださいお願いたします。
572 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/20(火) 13:32:47 ] パスワード認証とはBASIC認証のことです。 申し訳ありません。
573 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/20(火) 13:36:13 ] 試してみれば
574 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/20(火) 13:48:55 ] やってみたらできました。 パスワードファイルを見たら、単に暗号化してあるだけなんですね。 cgiで生成できるのであれば、便利ですね。
575 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/20(火) 20:05:37 ] つ system関数
576 名前:名無しさん@お腹いっぱい。 [2008/05/20(火) 21:32:06 ] すいません。apacheのアクセスログの 書き込みタイミングっていつなんでしょうか。 問題なのはアクセスログが残っているにも関わらず、 (例えばネットワークの障害の原因で) クライアントがデータを取得できていないということが あり得るのかどうかということです。 お手数ですがご教授頂けないでしょうか。
577 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/20(火) 21:37:32 ] syslogの書き込みタイミングなんてならんでしょ UDPだし、信頼性の微塵もない
578 名前:名無しさん@お腹いっぱい。 [2008/05/20(火) 21:40:30 ] >>576 ひとつのリクエストが終わったとき つまり、突然ネットワークがおかしくなった場合でもTimeoutだけ経過すれば ログに書き込まれる >>577 ?
579 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/20(火) 22:11:53 ] >>576 ログ指定に依存 例えば、mod_logio使えば実際に転送されたバイト数。 >>577 apacheは自前でログ書いてるよ。知ったか乙。
580 名前:名無しさん@お腹いっぱい。 [2008/05/20(火) 22:36:38 ] >>579 あなたも何を言ってるんだ?
581 名前:576 [2008/05/20(火) 22:45:24 ] >>577 ,578,579 返信ありがとうございます。 現状の設定ではmod_logioは設定していません。 mod_log_config.soを設定しているだけです。 その場合ですと apacheにアクセスログが残っているということは 1. クライアントからapacheにリクエストがあった 2. apacheがクライアントにデータを送出した 3. クライアントがデータを受信したかどうかは定かでは無い という事でよろしいのでしょうか。 また2についてなのですが、apacheがデータを送出というのは 実際にネットワークカードからパケットが送信されたと認識しても 問題ないのでしょうか。勉強不足確認不足で申し訳ないのですが、 例えばiptables等で外へ出ていくパケットを遮断をした場合等にも アクセスログは残るのでしょうか。 質問ばかりで申し訳ありません。 自分でももう少し調べてみます。
582 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/20(火) 22:56:07 ] apacheのログをsyslogに回して配信してもらうのが普通だと思ってた。 ローカル環境以外に飛ばしたいときはどうしてるの?
583 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/20(火) 23:07:32 ] 飛ばしたくなったことがない。
584 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/20(火) 23:12:33 ] >>582 逆にlocalに書く以外を見たことがない。 運用屋さんによると、syslogはログが欠けるからダメなんだと。(localhostでもダメなのか?) ちなみにログは、ローテートした後、NAS上のホスト毎のディレクトリに保管。 一定期間後にテープにバックアップ。
585 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/20(火) 23:12:59 ] syslogのリモート転送機能なんて使うかな? OpenViewやJP1などのログ監視エージェントを入れるとかして、 ある程度整理・要約したものをイベントとして送信するようにしている。 フリーのツールでも探せばこれらに相当するものはあるんじゃね(muninとかnagiosあたりかな?)。
586 名前:名無しさん@お腹いっぱい。 [2008/05/20(火) 23:17:14 ] >>581 まず、mod_logioは全く関係ない。 サーバーが、クライアントとのやり取りが終了したと考えた時点でログに記録される。 クライアントとのやり取りが終了するのは 1.正常にデータを全部送った 2.クライアントが途中で切断した 3.クライアントが応答のままTimeoutの時間が過ぎた 4.サーバーが諸事情により切断せざるを得なくなった(Apacheのstop,restart) ってとこかな思いつくのは あなたはTCPのことをきちんと知ってる? そうじゃなけりゃ正直何から説明していいか分からん
587 名前:名無しさん@お腹いっぱい。 [2008/05/20(火) 23:17:40 ] ×クライアントが応答のままTimeoutの時間が過ぎた ○クライアントが無応答のままTimeoutの時間が過ぎた
588 名前:名無しさん@お腹いっぱい。 [2008/05/20(火) 23:20:22 ] >例えばiptables等で外へ出ていくパケットを遮断をした場合等にも >アクセスログは残るのでしょうか。 残る
589 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/20(火) 23:42:10 ] >>586 関係おお有り。知ったか乙。 httpd.apache.org/docs/2.2/mod/mod_log_config.html > httpd 2.0 では 1.3 とは異なり、%b と %B フォーマット文字列はクライアントに > 送信されたバイト数そのものではなく、 HTTP レスポンスのバイト数です (これら > は異なるもので、たとえば、 コネクションが途中で破棄された場合や、SSL 使用時 > に一致しません) 。 mod_logio で提供されている %O フォーマット文字列で、ネッ > トワーク経由で実際に転送されたバイト数を 記録できます。
590 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/20(火) 23:59:30 ] >>582 リアルタイムには飛ばさない。 忙しい時間帯にさらに負荷をかけるようなことはしない。 ローカルにとっといて、 一日一回 NFS なり scp なり rsync なりで送る。
591 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/21(水) 00:10:41 ] >>590 んなことしてたら、ログの意味がねーだろ 各々のマシンに監視させて処理させてるの?
592 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/21(水) 00:18:48 ] >>591 「ログの意味」って、たとえばどういうこと?
593 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/21(水) 00:21:02 ] 記録する意味。 24時間も前の情報なんてほとんど使わないでしょ。 なにか問題が起きて、24時間後に対応するって
594 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/21(水) 00:22:47 ] ん、Apacheスレだからアクセスログの話かと思ってたけど、違うの? ErrorLogの方の話なら、それぞれのマシンに監視仕掛けてるよ。
595 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/21(水) 00:27:08 ] >24時間も前の情報なんてほとんど使わないでしょ。 SOX法知ってる?
596 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/21(水) 00:39:12 ] >>593 後から問題が発覚して、ディスク上に残ってるログ全部をごりごり調査したことなんて、1度や2度じゃ済まないんだが。
597 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/21(水) 00:47:48 ] >>596 あるね。 おれはWeb屋だけど、お客から何月何日、〜のコンテンツにアクセスしたIPアドレス、時間を調べて報告して欲しいなんてしょっちゅう。
598 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/21(水) 01:07:43 ] フルボッコだなw
599 名前:名無しさん@お腹いっぱい。 [2008/05/21(水) 01:10:37 ] >>589 それと、ログに記録されるタイミングに、何の関係があるんだ?
600 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/21(水) 01:21:08 ] >>595 それ別に訳に立たないじゃん。 法律で帳面の保存を義務づけられてるのと同じ >>596 だから一箇所にまとめるんじゃん >>597 ログをあさる数少ない原因をだされても…
601 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/21(水) 01:48:20 ] だから>>590 とかやって一箇所にまとめてるじゃん。 何を主張したいのかよくわからん。
602 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/21(水) 01:48:44 ] >>599 日本語で書いてあるのにわからないの? 転送開始前にログを取るか、転送完了後にログを取るかが異なる。
603 名前:名無しさん@お腹いっぱい。 [2008/05/21(水) 01:50:49 ] >>602 どこにそんなことが書いてあるか、日本語でも英語でもいいから Apacheのマニュアルからそのまま(as-is)コピペしてくれないかな?
604 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/21(水) 01:54:13 ] >>603 >>589 にコピペした部分に書いてある。池沼さん?
605 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/21(水) 01:54:34 ] >>600 おまえの頭が悪い(≒おまえの周りの状況が全てに適用できると思い込んでる)のはわかった。
606 名前:名無しさん@お腹いっぱい。 [2008/05/21(水) 01:55:55 ] > mod_logio で提供されている %O フォーマット文字列で、ネッ > トワーク経由で実際に転送されたバイト数を 記録できます。 確かに、mod_logioを使ったときは、実際に転送が終わった後にログがログファイルに記録されるだろうね。 んじゃ、mod_logioを使わなかったときは転送が終わる前にログがログファイルに記録されるなんてどこに書いてあるんだ?
607 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/21(水) 02:07:07 ] >>606 チンケなプライド保とうと必死だな。www 元の質問(>>576 )で問題にしているタイミングとは、実際の書き込みタイミングで はなく、ログに書き込まれた情報が取得されたタイミングである事は明白。
608 名前:名無しさん@お腹いっぱい。 [2008/05/21(水) 02:31:08 ] >>607 おいおい mod_logio使うかどうかでログに記録される時刻が変わるというのか? 1GBのファイルをダウンロードするのに2分かかる場合、 ログファイル内のアクセス時刻の表示が2分変わると言うのか?
609 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/21(水) 02:54:34 ] >>608 低脳必死杉。www タイミング==アクセス時刻と読む事に活路を見出したのか?。www 元の質問(>>576 )を良く読んで、何を気にしているかよく考えなさい。 >>608 の言いがかりに関しては ログに書き込まれた情報(転送バイト数)が取得されたタイミングが異なる。 といっておこう。
610 名前:名無しさん@お腹いっぱい。 [2008/05/21(水) 02:56:07 ] >>576 と転送バイト数には何の関係も無いんだが
611 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/21(水) 03:28:40 ] >>610 ある。わからないのか? 本当に馬鹿なんだな。
612 名前:名無しさん@お腹いっぱい。 [2008/05/21(水) 03:41:40 ] >>576 には 「問題なのはアクセスログが残っているにも関わらず、」 と書いてあり、アクセスログが書いてあるかどうかが問題なわけで 転送バイト数がどうかしたのか? さっきから人のことを低脳とか日本語ができないとか言うけど、 だいたい>>579 の「例えば、mod_logio使えば実際に転送されたバイト数。」 はどの質問に対する答えなのか。日本語が出来てないのは誰なのか。
613 名前:名無しさん@お腹いっぱい。 [2008/05/21(水) 03:59:28 ] >>609 の言ってるように、プロセスがログに書き込む内容を取得する時間が異なるとゆうことは、 >>608 の言ってるような事態が起こりうるかもしれない。 しかしそうなって来ると、そもそもlogに書き込まれるアクセス時間が、リクエストを受け取った時間なのか、 リクエストが終了した時間なのかが問題になりそう。 ウチで以前、一部のクライアントがコネクションを放さなくて、アクセスログに書き込まれた時刻が、 前後の行から3分位ずれたログが多数書き込まれることがあった。 mod_logioなんぞは不使用だったが、恐らくリクエストがあった時間をそのプロセス(スレッド)が記憶しており、 コネクションが切れた時点でlogに書き込んだものと思われる。(sizeについては動的ページだったのでアテにできず) もしmod_logioを使えば、コネクションが切れた(書き込む情報を取得した)時間も取れるかもしれない。 あるいは、その時間を書き出す設定が、ひょっとしたらCustomLogあたりにあるかもしれない。 (それが出来れば、問題が起きたどうかを判断する助けになるかも) つうことで、本家のmanualあさって来ます。
614 名前:613 mailto:sage [2008/05/21(水) 04:27:27 ] 今、読んできた(jpのページだけだけど)。 まず、ログに書き込まれる時刻は、リクエストを受けた時間のみしか記録できないようだ。 (logio使用、不使用に関わらず。なーんだ、残念・・) で、リクエストを返すのに掛かった時間を、秒またはミリ秒(ms)で記録することはできるようだ。 (これは、CGI等が実行された時間なのか、リクエストが完全に終了するまでの時間なのかは、検証必要。今度やってみよう。) >>576 の質問については、logio使用不使用に関わらず、アクセスが異常終了(TimeOutとか、クライアントが中止とか) した場合に、その内容を書き出す(あるいは書き出さない)ような設定はないようなので、 >>579 の答えは、「タイミングがいつなのか?」のみの場合は、その通りだけど、 後半部分も含めると、「log指定に依存」は正確ではないのではないか。
615 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/21(水) 04:32:12 ] >>614 だけど、 ごめん、ミリ秒じゃなくてマイクロ秒だった・・・・・。
616 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/21(水) 11:15:38 ] apache のバージョンや設定にかかわらず、ログに出力されるのはレスポンス終了後。 ただし、1.3 ではログのタイムスタンプがログを書いた時刻になるのに対して、 2.x ではリクエストを受け付けた時刻になる。 なので、1.3 ではログが必ず時刻順に並ぶが、2.x ではレスポンス完了まで 時間がかかるとログの時刻がさかのぼることがある。 コンパイル時に何か define すれば 2.x でも 1.3 互換の時刻出力が できたような記憶があるけど、詳しいことは忘れた。 で、mod_logio は LogFormat で使える書式制御文字を増やすだけで、 今回の件にはまったくなんにも関係ない。
617 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/21(水) 12:14:42 ] 応用力が致命的に欠如してるな。これが「ゆとり」か。 %b 転送する予定のバイト数 %O 転送したバイト数 両方記録することで>>576 が問題にしている状況を説明できるログになる。
618 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/21(水) 12:18:10 ] サーバが送信したバイト数は クライアントが受信したバイト数と必ず一致するのだろうか。
619 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/21(水) 12:42:38 ] >すいません。apacheのアクセスログの >書き込みタイミングっていつなんでしょうか。 という問いに対して %b、%O が出てくる理由を応用力が欠如したゆとりにも 理解できるように説明してもらえるとありがたいです。 >問題なのはアクセスログが残っているにも関わらず、 >(例えばネットワークの障害の原因で) >クライアントがデータを取得できていないということが >あり得るのかどうかということです。 こちらに関していえば、「あり得る」で問題ないですよね。 ログ出力をどう指定するかとはまったく無関係に。 っていうか、ログの指定方法を変えることでデータの転送の確実性が 変わったりなんかしたら大変なことだ。
620 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/21(水) 12:57:40 ] >>619 > という問いに対して %b、%O が出てくる理由を応用力が欠如したゆとりにも > 理解できるように説明してもらえるとありがたいです。 それは >>576 の後半に書いてあるじゃん。 そもそもの問いが的外れだった。
621 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/21(水) 13:31:02 ] >>620 えーと、ということは、 >こちらに関していえば、「あり得る」で問題ないですよね。 >ログ出力をどう指定するかとはまったく無関係に。 これを否定するってことですか? ログの指定ってのは、発生した現象を記録するかどうかの違いだけで、 その現象が発生するかどうかとはまったく無関係だと思うんですが。 それともアレですか、バグのあるプログラムのあやしそうなところに printf をつっこんだらバグが再現しなくなったとかいうのを 日常的にやってる方なんでしょうか?
622 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/21(水) 13:34:29 ] >>619 「ゆとり」恐るべし。 字面をなぞるだけでは、質問の意図するところはわからんよ。 後半とあわせて読めば、>>576 の状況は ・クライアントがデータが取得できていない(ように思える) ・でもアクセスログでは正常に転送したことになっている。 そこで、>>576 はアクセスログの記録タイミングを疑って > すいません。apacheのアクセスログの > 書き込みタイミングっていつなんでしょうか。 という質問をしたわけだ。 質問が「アクセスログが残っているのですが、これ本当ですか? 実際には 転送されていないのでは?」であることは明白。 %b %O両方とれば、 1 (apacheから見た)クライアントのプロトコルスタックまではデータ転送が完了している。 2 コネクション切断等の原因で転送が中断された。 のいずれかであることがわかるので障害の切り分けができる。
623 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/21(水) 13:39:15 ] >>621 >>620 != >>617 なので勘違いしないように。
624 名前:名無しさん@お腹いっぱい。 [2008/05/21(水) 13:39:42 ] >>617 応用力?w それなら %X 応答が完了したときの接続ステータス を使うから、mod_logioをその目的に使おうなんて思わないんだよ。 だから誰もお前の「応用」を理解できないんだよ。 それにそもそも質問者に対する答えになってないだろ>>579 は。
625 名前:620 mailto:sage [2008/05/21(水) 13:46:19 ] >>621 否定も肯定もしないよ。 >>619 の前半に答えただけ。
626 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/21(水) 13:47:05 ] っていうか、よく見たら >%b 転送する予定のバイト数 >%O 転送したバイト数 これ思いっきり嘘じゃねーか。 %b response body だけのバイト数 %O header 込みの総バイト数 どっちも実際に転送したサイズで、転送する「予定」のバイト数ではない。 つーか、CGI みたいにリクエストを受けてから動的に生成してるページの 「転送する予定のバイト数」をどうやってログに載せるんだよ。
627 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/21(水) 14:12:20 ] >>624 後出し乙。後出しといわれたくなかったら、別スレでお前が自分で 言ってたようにmd5貼っとけば良かったのに。www >>626 ウルトラ初心者は黙ってろよ。 > どっちも実際に転送したサイズで、転送する「予定」のバイト数ではない。 >>589 でも引用している。 > httpd 2.0 では 1.3 とは異なり、%b と %B フォーマット文字列はクライアントに > 送信されたバイト数そのものではなく、 HTTP レスポンスのバイト数です (これら > つーか、CGI みたいにリクエストを受けてから動的に生成してるページの > 「転送する予定のバイト数」をどうやってログに載せるんだよ。 apacheが一旦受け取ってバッファリングしている。 お前は知らないだろうが、HTTPレスポンスメッセージにはステータスラインが必須なのだが、 Apacheが裏でつけてくれている。 お前のようなウルトラ初心者が作ったCGIの出力を正しいHTTPレスポンスメッセージにするた めにApacheは頑張ってるんだぞ。
628 名前:名無しさん@お腹いっぱい。 [2008/05/21(水) 14:37:22 ] 後出し?別スレ?md5? もういいよ
629 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/21(水) 15:42:01 ] >628 お前の負けーwwwwwwwwwww
630 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/21(水) 16:39:10 ] 劣悪な通信環境化でのサーバ・クライアントのやり取りを見ているみたいだw
631 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/21(水) 16:44:17 ] 以上、本試合は「最後にしゃべった方が勝ち」ルールでお送りしました。
632 名前:名無しさん@お腹いっぱい。 [2008/05/22(木) 15:57:46 ] apache-2.2.8 をインストールしました。 httpd.confにて、 DocumentRoot "/usr/pkg/share/httpd/htdocs" を、 DocumentRoot "/www/htdocs" に変更しました。(/www/htdocsは作成し、index.htmlも作成しました。 そして、apacheを再起動してアクセスすると Forbidden You don't have permission to access / on this server. と表示されてしまいます。 何が原因かわかりません絵ででしょうか? 上記以外の修正点は、 ServerAdmin と ServerNameだけです。
633 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/22(木) 16:06:39 ] 777にでもしてみ
634 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/22(木) 16:12:28 ] /www/htdocs に対し、GroupとUserで指定した実行ユーザのアクセス権限がない →ディレクトリのパーミッションを調べる /www/htdocs に対し、ディレクティブで許可指定が無い →とりあえず<Directory /usr/pkg/share〜> とかいう部分を/www/htdocsに書き換えてみる 最低の対策としては、多分このへんでは。
635 名前:632 mailto:sage [2008/05/22(木) 16:19:42 ] ありがとうございます。 解決できました。 DocumentRootだけを変えていたのですが、cgi-binやerrro, iconsも同じパスに変更し、 もとのDocumentRootの中身をすべてコピーすればできました。 お手数をおかけいたしました。
636 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/22(木) 16:30:42 ] 777のままにしとくなよ。
637 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/23(金) 05:25:35 ] mod_proxy 使って、クライアント→SSLproxy化サーバ→WEBサーバ というようにSSLアクセスさせたいのですが、 この場合に、 ログの管理上、 WEBサーバにクライアントのIPを直に残させることは可能なのでしょうか。
638 名前:名無しさん@お腹いっぱい。 [2008/05/23(金) 07:13:32 ] XAMPP for Windowsでローカル用にApache 2.2.8を動かしているのですが、 ちょっと困ったことがあり、御助言を頂きたく思います。 USBメディアにて異なる環境にてapacheを使えるようにしているのですが、 httpd.conf(実際には httpd-vhosts.conf)の、<VirtualHost *> の DocumentRoot 指定に 存在しないドライブを指定すると、 Syntax error on line 80 of (インスコしたディレクトリ)/xampp/apache/conf/extra/httpd-vhosts.conf: DocumentRoot must be a directory と言われてapacheが起動しません。 環境によって場合分け、もしくは、存在しないドライブを指定しても(無視して)起動できるようにする方法はありませんでしょうか? 結局のやりたいこととしては、家の環境と作業場の環境のsambaで割り当てたドライブ(家の環境には存在しない)で、 共通の方法で運用したいということです。
639 名前:638 [2008/05/23(金) 07:28:59 ] バージョンを書き忘れてました。 Server version: Apache/2.2.8 (Win32) XAMPP Version 1.6.6a です。 補足なのですが、他のバーチャルホストの設定などの共通の設定もたくさんあるため、 できれば、apacheなどを2つわけてインストールをしたくないということです。
640 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/23(金) 09:14:32 ] >>637 proxy→web鯖 の際、mod_proxyの機能として、 X-forwarded-For というヘッダがリクエストに挿入されるので、それをログに記録すればよい。 あるいは、mod_rpafを入れればHostが上書きされるのでログも変わる。
641 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/23(金) 09:15:41 ] 場合わけで使えそうなのは IfDefine かねえ。 ttp://httpd.apache.org/docs/2.2/ja/mod/core.html#ifdefine
642 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/23(金) 10:29:19 ] 自宅パソコンの中身を同じ風味にすれば良いかと ドライブレター変えるとかエイリアス作るとか
643 名前:638 mailto:sage [2008/05/23(金) 13:28:38 ] >>641 いけますた!! 次のレスのようなWSHを書いて、 <IfDefine WorkMachine> <VirtualHost *> DocumentRoot ないドライブを含むパス : : </IfDefine> みたいに、httpd.conf(httpd-vhosts.conf)に書いておけばばっちりでした。
644 名前:638 mailto:sage [2008/05/23(金) 13:29:06 ] でっち上げたWSHです。 MachineNameForWork = 'RED'; function IsMachineForWork() { return WScript.CreateObject("WScript.Network").ComputerName == MachineNameForWork; } function GetApacheArgs() { return IsMachineForWork() ? " -DWorkMachine" : ""; } var args = WScript.Arguments; var shell = WScript.CreateObject("WScript.Shell"); var isStopMode = (args.length == 1 && args(0) == 'stop'); // stop process shell.Run('apache_stop.bat', 0, true); if (isStopMode) { // if mysqld is not booting, beep onn urusai!! shell.Run('mysql_stop.bat', 0, true); WScript.Quit(); } WScript.Sleep(1000 * 3); // run apache etc... shell.Run('apache\\bin\\apache.exe' + GetApacheArgs(), 0, false); WScript.Sleep(1000 * 1); shell.Run('mysql\\bin\\mysqld --defaults-file=mysql\\bin\\my.cnf --standalone', 0, false);
645 名前:638 [2008/05/23(金) 13:30:56 ] >>642 アドホックに行くならば環境の方を変えてしまうのもアリですね。 無事解決いたしました。 ご協力くださりありがとうございました。
646 名前:名無しさん@お腹いっぱい。 [2008/05/23(金) 14:52:57 ] FreeBSDでApache2.2.8で存在しないディレクトリをDocumentRootに設定したら Warning: DocumentRoot [/usr/home/user1/www/vh/virtualhost1/] does not exist って警告が出るけど普通に起動するね。 存在しないドライブだとエラーになるのか…。バグ報告出すかね。
647 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/23(金) 21:29:59 ] >>646 まずソースを読んで、意図的なのかバグっぽいのか判断してみては? メインのDocumentRootだとエラーで、<VirtualHost> だったら警告のみ、とかって いう風になっている可能性もあるし。いきなりバグ報告されても萎えると思う。 # 漏れは読んでない。ごめん。
648 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/24(土) 01:02:19 ] すいません、以前アドバイス頂いた>>507 です。 チラシの裏みたいで恐縮ですが、その後の快調になりました。ありがとうございます。 今回いろいろ蓄積してきたルールを整理しようとしているのですが、 httpd.confに <IfModule mod_limitipconn.c> ExtendedStatus On <Directory "/var/www/example/*/example"> <FilesMatch "\.(zip|lzh|rar|sit|tgz)$"> MaxConnPerIP 2 </FilesMatch> </Directory> </IfModule> ... <IfModule log_config_module> ... SetEnvIf User-Agent "(bad-agent1|bad-agent2 ...)" robots ... SetEnvIf Referer "example.jp" ref_ok SetEnvIf Referer "^$" ref_ok </IfModule>
649 名前:648続き mailto:sage [2008/05/24(土) 01:03:14 ] そしてhttpd-vhosts.confに <Directory /var/www/example/*/example> <FilesMatch "\.(zip|rar|lzh|sit|tgz)$"> Order deny,allow Deny from env=robots Allow from env=ref_ok </FilesMatch> </Directory> としている箇所がありますが、limitは効いて503を返すのですが、アクセスログを見るとuser-agentで弾けてないのに気づきました。 前はSetEnvIFでの環境変数の設定はしてずにRewriteルールで403を返すようにしていました。 これはルールの適用順の問題なのかアドバイス頂けますと助かります。 で、前述のとおりログを見て気づき、修正できるまでRewriteとSetEnvIfはコメントアウトして、同一ipから503を返した回数に閾値を設定し、超えたユーザは問答無用でiptablesに突っ込んでいます。 なるべくiptablesをしょっ中更新したくないので、apache側で出来ないかと思いました。 もし、私の設定単純ミスでしたらお詫びします…宜しくお願いします。
650 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/24(土) 04:56:52 ] 複合条件だから難しいなw こんな感じかな? SetEnvIf User-Agent "^bad-agent1" robots SetEnvIf User-Agent "^bad-agent2" robots SetEnvIf Referer "^.+" ref_ng SetEnvIf Referer "^example\.jp " !ref_ng Order allow,deny Allow from all Deny from env=robots Deny from env=!ref_ng Referer のとこに補足すると、まず Referer 値があったら ref_ng という 拒否前提のフラグを立てておいて、それが許可される Referer だった場合には ref_ng のフラグを解除する。Referer 値がないときは ref_ng が立たないから アクセスは許可される。 これ以上に条件が増えると難解になるだけなんで、素直に mod_rewrite で 設定した方が良いと思うです。
651 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/24(土) 05:01:13 ] 閾値の件については、apache で処理させてたら意味ないな。 503 を返そうが 403 を返そうが、リクエストが httpd にまで到達していることに 変わりはないので、処理コストの若干の違いはあれど同じこと。 ログを定期的に見て、IP アドレスを iptables に追加するスクリプトでも 書いたほうが早いかと・・・・