Forum Patio [ホームに戻る] [スレッド一覧] [新規投稿] [留意事項] [ワード検索] [管理用] [過去ログ] 記事閲覧

◆ 指定された発言を表示

スレッド73: Forum Patio 最新版 (v1.5x) に対するFAQ ATOM1.0 RSS2.0 RSS1.0 FEEDアイコン
No.7: 緊急アップデート サーバ停止の危険を回避する v1.53 をリリースします   [No.6への返信]     レスする ←引用して返信
日時: 2013/02/16 10:48
名前: スガラボット ID:Vwda0t.g メールを送信する
参照: http://vmorita.com/bbs/patio/forum.shtml

Forum Patio ファンの皆さん、

今回は、掲示板サーバをクラッシュさせる危険があるスクリプトを修正した緊急アップデートです。諸般の事情でスクリプトを一式アップデートできない場合でも、3つ目にアップした download.cgi だけは新しいスクリプトと差し替えて頂くようお願い致します。

実は、新年を期してこの掲示板を公開しているサーバを「さくらレンタルサーバ」から「さくらVPS(1G)」に乗り替えました。この時このサーバOSとして CentOS6.3 の 64bit 版を採用しました。 また公開するサーバアプリは Apache-2.4.3, perl-5.16.2, php-5.4.11, 等全て最新版をソースからコンパイルしてインストールしたのです。
ここまでは良かったのですが、暫くして友人からある掲示板に新しい記事が投稿できなくてエラーになると連絡があったのです。「えっ、そんなはずは…」と思って早速サーバにアクセスして状況を確認したところ、何と df コマンドでパーティションが 100% 使用されていて、いわゆる「ディスク・フル」の状況になっていました。そして、HTTPD (Apache) のエラーログが何と 79GB まで膨れあがっているではありませんか。このファイル一つが全ディスク容量の八割を専有してサーバが一切のディスク書込みができない状況になっていたのです。

慌てて このファイルを rm コマンドで削除してもう一度 df コマンドを打ってもまだパーティション 100% の状況は変わりません。そうです、rm コマンドでファイル削除して ls コマンドでこのファイルが表示されなくなっても、このファイルを握っている HTTPD を停止するまではディスクスペースは解放されないのです。 まあ、この様にして HTTPD をリスタートして一応サーバは復旧はしたのですが、問題はその原因です。

今までの「さくらレンタルサーバ」ではこんな経験はなかったのに…、と思って振り返ってみると原因の一つはOSを64bit版にしたために79GBもの巨大ファイルが作成できてしまうということでしょうか。32bit版だとアドレスの限界は拡張しない限り4GBですかららね。ただそれにしてもなぜこれほどエラーログを吐き続けるのでしょう。それから数日間色々解析して分かったことは、掲示板スクリプトの中で添付ファイルをダウンロードする download.cgi が原因だったのです。Forum Patio 掲示板では写真などの画像ファイルはブラウザが描画するためにターゲットファイルを開いて内容を送信するだけですが、ZIP ファイルなどは download.cgi スクリプトを使ってターゲットファイルを GET のクエリー・パラメータで指定してダウンロードします。 具体的には http://yourdomain.com/cgi-bin/download.cgi?bfile=xxxxx などと GET ダウンロードファイルを指定する仕組みにしています。掲示板の閲覧画面から添付ファイルをクリックしてターゲットをダウンロードするときは問題なく動作するのですが、今回はロボット検索エンジンが download.cgi を "?" 以下のクエリー・パラメータを付けずにアクセスしたようなのです。それでオープンしたのは ./upl/ ディレクトリの以下のファイルは空ですから何とディレクトリそのものをオープンしてしまい、ファイルでないために続く read() 関数がエラーリンターンして読み込んだバイト数が undef になり、ファイルを最後まで読み込む while {} ループ (v1.52版の download.cgi では 89~93行目) を抜けることができず、undef ( not initialized ) のエラーログを吐きながら無限ループになってしまったという次第でした。皆さんもブラウザから?以下のパラメータを付けずに download.cgi をアクセスすると同様の状況が発生すると思いますが、危険ですからおヤメ頂いた方がいいと思います。

今回、この様な状況が発生しないよう二重・三重のガードを入れて download.cgi を修正しましたので、少なくともこのスクリプトだけは新しいものに差し替えて下さい。 あと、バグ修正として init.cgi, read.cgi, lib/tree.pl の以下の項目を修正しています。

① UTF-8 文字列の出力時にエンコードエラーで "wide character in print" がエラーログに出力されるバグを修正。 ( init.cgi, read.cgi, tree.pl )
② 検索語のハイライト機能で記事本文中のキーワードがハイライト表示されなくなっていたバグを修正 ( init.cgi, read.cgi, lib/tree.pl )
③ あと v1.52 版からサポートした Patio/Forum 両形式のスレッド・インデックス・ページで、スレッドの目次の下に新着記事を5個表示する機能をデフォールトで有効にしました。新着記事表示をせず、従来通りの表示とするには、init.cgi (serverconf.cgi または会議室毎の roomini.cgi の方が良いです) の our $newArticle = 5 の値を 0 に修正して下さい。

【補足】 さくらVPSで CentOS6.3 にして分かったことですが、CentOS で標準的に配布される perl モジュールには CGI.pm が含まれていないようなので、CPAN などからインストールしないとサーバエラーになってしまいます。ご注意下さい。

以上です。
1. Forum Patio v1.53m 複数会議室版

forum_patio_v153m.zip
2. Forum Patio v1.53s 単一会議室版

forum_patio_v153s.zip
3. サーバ停止の危険を修正したスクリプト

download.cgi
 スレッド一覧  新規スレッド作成


  • スレッド先頭部のまたはをクリックするとスレッド内の全記事を表示します。(はツリー表示)
  • 記事先頭の▼ △をクリックすると参照関係のある発言をその発言から(は下、は上) へツリー表示します。 
  • スレッド最終行のまたは最新発言のをクリックするとスレッドの全記事を降順に表示します。(はツリー表示)
  • 投稿に添付は添付ファイル付き   
  • 新着記事は new!
  •   スレッド73: Forum Patio 最新版 (v1.5x) に対するFAQ  
    No.0   RSS フィード作成機能を見直し、ビューカウンタを実装した Forum Patio v1.50 をリリースしました] スガラボット  2012/07/25 17:27   閲覧数: 229021
    No.1  [リリースした Forum Patio v1.50 に不具合がありました] スガラボット  2012/11/10 01:44
    No.2  [ Forum Patio v1.50 の不具合と若干機能追加した Forum Patio v1.51 をリリースしました] スガラボット  2012/12/10 21:44
    No.3  [サムネイルが移動されない] 鈴木  2012/12/06 17:12
    No.4  [ Re: サムネイルが移動されない] スガラボット  2012/12/08 18:01
    No.5  [ありがとうございました] 鈴木  2012/12/09 11:36
    No.6  [ v1.51 のバグを修正した v1.52 版をリリースします] スガラボット  2012/12/10 21:44
    No.7  [ 緊急アップデート サーバ停止の危険を回避する v1.53 をリリースします] スガラボット  2013/02/16 10:48
    No.8  [Re: 緊急アップデート サーバ停止の危険を回避する v1.53 をリリースします] ヤハタ  2014/05/01 16:36
    No.9  [Re^2: 緊急アップデート サーバ停止の危険を回避する v1.53 をリリースします] スガラボット  2014/05/02 16:20
    No.10  [Re^3: 緊急アップデート サーバ停止の危険を回避する v1.53 をリリースします] ヤハタ  2014/05/14 10:25
    No.11  [ プレビューで投稿取りやめ時にエラーになるバグを修正した v1.54 をリリースします] スガラボット  2014/09/24 19:31
    No.12  [Re: プレビューで投稿取りやめ時にエラーになるバグを修正した v1.54 をリリースします] うしわか  2014/09/24 22:24
    No.13  [Re^2: プレビューで投稿取りやめ時にエラーになるバグを修正した v1.54 をリリースします] スガラボット  2014/09/25 06:49
    No.14  [Re^3: プレビューで投稿取りやめ時にエラーになるバグを修正した v1.54 をリリースします] うしわか  2014/09/25 15:55
    No.15  [また、エラーが出ました] うしわか  2014/09/25 21:27
    No.16  [Re: また、エラーが出ました] スガラボット  2014/09/26 10:37
    No.17  [Re^2: また、エラーが出ました] うしわか  2014/09/27 08:05
    No.18  [Re^3: また、エラーが出ました] スガラボット  2014/09/27 19:25
    No.19  [Re^4: また、エラーが出ました] うしわか  2014/09/28 20:00
    No.20  [Re^5: また、エラーが出ました] スガラボット  2014/09/30 19:05

      レス(返信) 投稿フォーム
    題名 スレッドをトップへソート
    返信する相手先 上記の発言に返信する  スレッドの元テーマに投稿する
    名前
    E-Mail 入力すると メールを送信する をクリックした人からメールを受け取れます(アドレスは表示されません)
    URL
    添付ファイル

    表示: jpg/gif
    DL:zip/pdf/cgi
       標題:
       標題:
       標題:
    パスワード 記事メンテ時に使用 (入力しておくと後から発言を修正・削除できます: 英数字 8 文字以下)
    投稿認証キー (投稿時 投稿認証キー を入力してください。投稿認証キーは表示後360分間のみ有効です。)
    記事本文

    (全角5000字まで)



    文字色

       クッキー保存