Archive

Posts Tagged ‘Apache’

PHP のイメージ関数の注意点

今日、ファイルアップロードした画像のサムネイルやらを作って書き出す機能が正常に動作しない場合があるという不具合を見つけました。

デバッグしていくと、原因は imagecreatefromjpeg() だと分かったのですが、Apache もエラーを吐いていなくて、ブラウザもレスポンスコードを受け取っていないようだったので、恐らくプロセスが途中で死んでいるようでした。

ググってみると、他に数人レンタルサーバーで同現象を体験している人がいて、やはりメモリの問題じゃないかとつっこまれていました。

ウチでは、Apache を djb の softlimit 経由で 32MB のメモリ制限を設けて起動しているので、それを 64MB にしたら正常に動作するようになりました。

問題の現象は、アップロードした JPEG 画像が 800*600 ピクセルでは起きなかったのですが、1600*1200 だと起きました。この問題は、ファイルサイズよりも、ピクセルサイズの方が重要になるようです。ちなみに問題のファイルは 214KB (1600*1200) でした。

恐らく、softlimit を使わないで Apace の httpd.conf 側でメモリ制限をしていた場合はちゃんとログにエラーを吐いて、ブラウザにもレスポンスを返してくれていたのでしょう。

参考:
◇ [PHP-users 25728] Re: ImageCreateFromJPEG が正常に動かない
https://www.drive.ne.jp/iMA/showmail.pl?PHP-users=25728

webalizer 拡張その後

色々ごてごて組み込もうとしたらコンパイル周りでハマりました。

webalizer-CT-1.0 をベースに、Webalizer-Xtended と浦島氏の検索語句の日本語化を組み込みました。

configure は通りましたが、make したらこんなエラー

output.o(.text+0×4236): In function top_urls_table’:
: undefined reference to msg_top_p’
output.o(.text+0×4287): In function top_urls_table’:
: undefined reference to msg_v_pages’
collect2: ld はステータス 1 で終了しました
make: *** [webalizer] エラー 1

日本語の言語ファイルを開いてみたら、どうやら単に変数が足りなかった様子。英語のファイルから引っ張ってきて無事コンパイル通過。

無事、webalizer が拡張子無しの URL でも HTML ページとして認識してくれるようになった。Servlet とか、Zope とか使ってる場合はこの拡張は必須だろう。

今回手で修正したパッチ

Webalizer 拡張

webalizer が拡張子無しの URL を拾ってくれないので、なんとかならないかとパッチを探していたら見つけたサイト。

◇ Webalizer with Content-Type enhancements
http://www.zope.org/Members/sbrauer/Webalizer-CT/

付属の README.CT を見ると、Apache 側でログに Content-Type も記録するようにして、webalizer 側でそれを拾うようにするらしい。ので採用。

ついでにこんなのも見つけました。

◇ Webalizer-Xtended
http://www.irc.unizh.ch/users/pfrei/webalizer/

404 Not Found を拾って、URL をリストアップしてくれる。これはサイトが大きくなりすぎて把握しきれないときにいいかも知れません。

今回、webalizer のパッチを海外でググっていたら色々なパッチがあることが判明しました。analog や awstats などより見易い webalizer がある程度発展しているのは嬉しいことです。

webalizer インストール

ログ解析ツールの webalizer の Fedra Core 3 へのインストール。
Apache だけでなく、各種 FTPd や Squid にも対応しているらしい。
http://www.mrunix.net/webalizer/

ググって各所のインストールの仕方を覗いてみました。一般的には自動処理に cron を使っているようでしたが、せっかく logrotate で日時処理をしているので同じタイミングで webalizer も処理させたい。なので、logrotate から webalizer を起動させることにしました。

(続きを読む…)

Apache を daemontools で管理

Apache 2.0 を daemontools で管理しようとしたら、httpd -h でヘルプを見ても -F オプションが無い。どうやら廃止されたようです。

とりえあずググったら割とすぐ見つかりました。

— Apache 1.3.x
$ cat /service/apache1/run
#!/bin/sh
exec 2>&1
exec env - PATH='/usr/local/apache1/bin' \
httpd -F

— Apache 2.0.x
$ cat /service/apache2/run
#!/bin/sh
exec 2>&1
exec env - PATH='/usr/local/apache2/bin' \
httpd -DNO_DETACH