Monthly Archives: 1月 2013

Plesk環境でhttpd.confを変更したい

Plesk 環境は、全ての設定をPlesk上から行う前提になっているので、直接サーバの設定ファイルを修正したりすると、整合性が取れなくなって、最悪サーバが正常動作しなくなるそうです。httpd.conf にしてもしかり。基本的に .htaccess で対応してね、という事らしい。やっぱりPleskは相当な曲者ですよ。(そもそもPleskって1台のサーバを使って、レンタルサーバ業を始めたい人用っぽいメニュー内容なんだよね。。でも詳細設定はできないとか何という中途半端な。)

ところが、VirtualHostディレクトリの内容程度ならば、以下の手順で追加ファイルを置くことで上書きできるらしいので忘れないようにメモしときます。

各ドメインディレクトリ内の conf ディレクトリに vhost.conf (SSLの場合には vhost_ssl.conf) を置き、呪文コマンドでPleskにそのファイルが追加されたことを教えてあげればOK。
/usr/local/psa/admin/sbin/httpdmng --reconfigure-domain ドメイン名
service httpd configtest
service httpd restart

詳しくは、以下のクララオンラインさんのFAQを参照。
Plesk環境でhttpd.conf、httpd.include、.qmailなどの設定ファイルを直接編集してもいいですか?
以下も必要になりそうな内容。
Plesk 上のバーチャルホストについて、PEAR を有効にする方法はありますか?

※ でも、最新のPlesk11で確認したら、ホーム > 契約 > [ドメイン名] > ウェブサイトとドメイン > 高度な管理[ドメイン名] のPHP設定
でこの辺まで設定できそう。

ちなみに、Apacheの error_log や access_log は、以下のディレクトリに保存される模様
/var/www/vhosts/ドメイン名/statistics/logs

logwatchからFTPの転送ログを除外

あるサーバのlogwatchから、FTPの転送ログが送られてくるので、膨大な量になってしまっています。
ログを止めずに、logwatchで監視するサービスからFTPの転送ログを除外してみます。

vi /etc/logwatch/conf/logwatch.conf
を見ると何も入っていません。デフォルト設定のほうを見てみます。
vi /usr/share/logwatch/default.conf/logwatch.conf

# The 'Service' option expects either the name of a filter
# (in /usr/share/logwatch/scripts/services/*) or 'All'.
# The default service(s) to report on.  This should be left as All for
# most people.
Service = All
# You can also disable certain services (when specifying all)
Service = "-zz-network"     # Prevents execution of zz-network service, which
                            # prints useful network configuration info.
Service = "-zz-sys"         # Prevents execution of zz-sys service, which
                            # prints useful system configuration info.
Service = "-eximstats"      # Prevents execution of eximstats service, which
                            # is a wrapper for the eximstats program.
# If you only cared about FTP messages, you could use these 2 lines
# instead of the above:
#Service = ftpd-messages   # Processes ftpd messages in /var/log/messages
#Service = ftpd-xferlog    # Processes ftpd messages in /var/log/xferlog

なるほど、Service = All で全サービス監視が設定されていて、Service = "-zz-network"zz-network サービスが除外されるようです。そして、ftpd-xferlog/var/log/xferlog を表すようです。

という事は、-ftpd-xferlogxferlog を除外できそう。
vi /etc/logwatch/conf/logwatch.conf に1行だけ設定追加します。

Service = "-ftpd-xferlog"

これでOK!

chmod chgrp chown をPHPとPerlで行う

chmod, chgrp, chown をプログラムからやろうとすると、PHPとPerlで微妙に方法が違って、いつも引数がごちゃ混ぜになってしまうので、忘れないようにメモ

PHPの場合

chmod(ファイル名, 0666);
chgrp(ファイル名, 'mygrp'); ※番号でもOK
chown(ファイル名, 'myuser');

Perlの場合

chmod 0666, ファイル名;
※ 名前指定で直接 chown, chgrp を行う方法は無い
my($nm, $pwd, $gid, $members) = getgrnam 'mygrp';
my($nm, $pwd, $uid, $gid, $quota, $comment, $gcos, $dir, $shell) = getpwnam 'myuser';
chown $uid, $gid, @ファイル名リスト;
uid,gidを変更したくない場合は、変更したくない側に -1 を設定

Apacheログから”internal dummy connection”を消す

Apacheのアクセスログに、こんな行がダラダラと出てきてる。(ログタイプを combined にした例です)

::1 - - [08/Jan/2013:17:31:10 +0900] "OPTIONS * HTTP/1.0" 200 -
     "-" "Apache/2.2.15 (CentOS) (internal dummy connection)"

どうやら、Apache2.2以降で追加された自分自身(子プロセス)への内部通信らしい。
こんなのログに出す意味ない!という事で、これをログに出さなくする方法

httpd.conf に以下を追加
SetEnvIf User-Agent "internal dummy connection" dummylog

ログ出力の定義をしている箇所を見つけて上記変数がセットされてるログは除外
CustomLog logs/access_log combined env=!dummylog

こんなログをデフォルトで吐いて、誰が得するんでしょう??

SmartyのフィルタでHOST名表示

当たり前といえば当たり前ですけど、Smartyは変数の出力フィルタ関数としてPHPの本来の関数をそのまま使えます。

$ip_address = '121.110.70.76';
という値が設定されていたとしたら
 
{$ip_address|gethostbyaddr}
と記述することでgethostbyaddr関数に処理させて結果を得る事ができるので
 
KD121110070076.ppp-bb.dion.ne.jp
という表記がSmartyテンプレート上だけでできます。

あら便利