カテゴリー
Apache CentOS4.x CentOS5.x perl

Perl の環境変数 $ENV{PATH} の初期値はどこを参照しているのか?

Perl の $ENV{PATH} は何処を参照しているのか?

例えば bayon を perl から使うのに Text::Bayon モジュールを利用したら
sh: bayon: command not found
と言うエラーログが残る。

コマンドが見つからない = パスが通っていない、と言う事なんだろうけど、apache を2.2 にしたらパスが変わったのか apache2.0 の時に使えた Lingua::JA::Summarize を使用するスクリプトも

sh: mecab: command not found

となる。

mecab も bayon も /usr/local/bin にインストールしてあるのだけれど、$ENV{PATH} を調べてみると、
$ENV{PATH} = /sbin:/usr/sbin:/bin:/usr/bin
となっており、/usr/local/bin にはパスが通っていない。

この 環境変数はどこを参照しているのかまさに以下のページのような迷い方をした。

apacheの起動ユーザーにPATH通しときゃいいのか?とか、httpd.confにそういう設定が?とか、もしかしてPHP.iniにそんな設定が?とか思ってたんですが、全部ハズレ。

Apache2の環境変数PATHを設定する - masahilog

SetEnvやPassEnvディレクティブを追加してみたり、. bash_profile を変更したり、散々いろいろ試してみたけど、上記ページのおかげでヒントが得られたのでメモ。

CentOS系(というかRedhat系、だろうか)は/etc/sysconfig/httpdがそれに該当するような。探しても調べてもenvvarsの影も形も無かったけど、/etc/init.d/httpdの冒頭箇所で/etc/sysconfig/httpdがあったらそれを評価してからhttpdが起動するようになってる。なんでこんな仕様なんだろうか。

追記でこのように書かれていたのだけれど、/etc/rc.d/init.d/httpd を見てみると、 /etc/sysconfig/httpd のみではなく、 /etc/rc.d/init.d/functions も参照している。

/etc/rc.d/init.d/functions を見ると、ビンゴでした。

# Set up a default search path.
PATH="/sbin:/usr/sbin:/bin:/usr/bin"
export PATH

ここのパスを変更して、保存。

注意点としては、apache を再起動ではなく 停止してから起動する事。
再起動では反映されませんでした。

ちなみに CentOS (4.x 5.x) での話ですので他のディストリビューションでは違うかもしれません。

カテゴリー
Apache CentOS4.x PHP インストールメモ

centOS4.8 apache2.0.x を apache 2.2.15 へ yum でアップデート

utterramblings レポジトリを使い apache を2.2.15 へ yum でアップデートする。
phpも5.2.13 へアップデートされる。
remiレポジトリでもいいけど PHPが5.3になってしまうので。

カテゴリー
Apache

Apache の ServerLimit を反映させるには restart ではダメらしい

Apacheの設定ファイル httpd.conf でServerLimit を変更する場合、restart では反映されない。

[Thu Mar 18 18:01:13 2010] [warn] WARNING: Attempt to change ServerLimit ignored during restart

このようなエラーがログに残る。
stop した後に start で Apacheを起動すると ServerLimit の変更を反映する事が出来る。

カテゴリー
Apache LINUX

Apacheの設定ファイル(httpd.conf)の文法をチェックするコマンド

Apacheの設定ファイルが正しいかhttpdを起動する前に確認する

/usr/sbin/apachectl configtest

設定ファイル(httpd.conf)に文法エラーが無ければ
Syntax OK と表示されるはず。

何らかのエラーがある場合は

Syntax error on line 31 of /etc/httpd/conf/httpd.conf:
Invalid command '¥x11', perhaps mis-spelled or defined by a module not included in the server configuration

などとエラーメッセージを表示する。

/etc/httpd/conf.d 以下にある設定ファイルはチェックされないので注意。

カテゴリー
Apache サーバ管理

LogWatchのhttpd(Apache)に大量のログが添付される場合の対処

webサーバのlogwatchから送信されてくるメールの容量が400kbyteとか600kbyteとか、かなり大きいので対処方法を検索した所以下のページを発見。

参考:logwatch に大量の Apache アクセスログが添付される | futuremix

CentOS や Fedora Core には LogWatch というアプリケーションがついており、毎晩各種ログを検査して、問題のある部分を抜き出して送ってきてくれます。しかし Apache のログが大量に記録されてメールに添付され、私のサイトでは毎日数100KB のメールが届きます...

対処方法は参考ページにあるのだけれど、一応コピペ。

vi /etc/log.d/scripts/services/http

   $content_types =  $content_types.'|\.htm|\.html|\.jhtml|\.phtml|\.shtml|\/';
   ↓追記
   $content_types =  $content_types.'|\.html#.*|\/[a-zA-Z0-9\-_\/\!]+|\/[a-zA-Z0-9\-_\/\!]+#.*|\/';
   $content_types =  $content_types.'|\.inc|\.php|\.php3|\.asp|\.pl|\.wml|\/';

検査するときの条件を付け加える事で全部ではないけれど抑えられる。

2011-08-11追記
CentOS5.5だと設定ファイルの場所が変わってる。
/usr/share/logwatch/scripts/services