Muninのグラフを見ていたらたまたま見つけたキューの中から消えないメール。
1件のみなのでメールサーバ自体のトラブルではないと思うけど、早速確認してみる。

# mailq
-Queue ID- --Size-- ----Arrival Time---- -Sender/Recipient-------
xxxxxxxxxx     5306 Thu Feb  5 03:38:53  MAILER-DAEMON
(lost connection with mx.xxxxx.com[74.208.xx.xx] while performing the HELO handshake)
                                         moldieru@xxxxx.com

-- 5 Kbytes in 1 Request.

メールアドレスから判断する限りスパムメールなので削除する。

# /sbin/service/postfix stop
# postsuper -d QUEUE ID
postsuper: xxxxxxxxxx: removed
postsuper: Deleted: 1 message

# /sbin/service/postfix start

なお、内容を確認したい場合は次のコマンドで可能。

# /usr/local/sbin/postcat -q Queue ID

最後にメールキューを確認。

# mailq
Mail queue is empty

2008/12/12 19:21PHP 5.2.8

PHPをバージョンアップします。
アップデートバージョンはPHP 5.2.8です。
PHP 5.2.6、PHP 5.2.7と立て続けに脆弱性が見つかっているので早めにアップデートしましょう。

$ wget http://jp.php.net/get/php-5.2.8.tar.bz2/from/this/mirror
$ tar xvjf php-5.2.8
$ cd php-5.2.8
$ ./configure --with-apxs2=/usr/local/apache2/bin/apxs \
              --with-mysql=/usr/local/mysql \
              --with-zlib \
              --with-gd \
              --with-jpeg-dir=/usr/lib \
              --enable-mbstring \
              --enable-mbregex \
              --disable-ipv6
$ make
# make install

Apacheを再起動します。

# /sbin/service httpd restart
httpd を停止中:                                            [  OK  ]
httpd を起動中:                                            [  OK  ]

見た目には成功のように見えましたが、エラーログが出ていてApacheが起動していませんでした。
/var/log/httpd/error.log

PHP Warning:  [eAccelerator] This build of "eAccelerator" was compiled for PHP version 5.2.6. Rebuild it for your PHP version (5.2.8) or
download precompiled binaries.\n in Unknown on line 0
PHP Fatal error:  Unable to start eAccelerator module in Unknown on line 0

eAcceleratorをPHP 5.2.8でコンパイルする必要があります。

$ tar xvjf eaccelerator-0.9.5.2.tar.bz2
$ cd eaccelerator-0.9.5.2
$ phpize
$ ./configure
$ make
# make install

もう一度Apacheを再起動します。

# /sbin/service httpd restart
httpd を停止中:                                            [  OK  ]
httpd を起動中:                                            [  OK  ]

今度は成功しました。

2008/06/14 22:40HDD高温対策

HDD温度
気温が高くなるにつれて我が家のPCのHDDも熱くなってきました。
冬の間は止めていたHDDの空冷ファンを動かしました。
これで少しは温度が下がってくれる事でしょう。

2008/06/11 20:53Munin障害(対応)

障害が発生してしまったMuninですがperl-Net-SSLeayがインストールされていると自動的にSSL接続するようです。
Munin側でTLSを向こうにできることがわかったので早速対応しました。
/etc/munin/munin.conf

tls disabled

2008/06/09 15:57Munin障害

突然Muninのデータが取得できなくなってしまいました。
ログを見るとTLSのエラーが出力されています。

# cat munin-node.log
2008/06/07-00:10:08 [22940] TLS Notice: No key file "/etc/munin/munin-node.pem". Continuing without private key.
2008/06/07-00:10:08 [22940] TLS Notice: No certificate file "/etc/munin/munin-node.pem". Continuing without certificate.
2008/06/07-00:10:08 [22941] TLS Notice: No key file "/etc/munin/munin-node.pem". Continuing without private key.
2008/06/07-00:10:08 [22941] TLS Notice: No certificate file "/etc/munin/munin-node.pem". Continuing without certificate.
Use of uninitialized value in concatenation (.) or string at /usr/lib/perl5/vendor_perl/5.8.5/i386-linux-thread-multi/Net/SSLeay.pm line 490, <STDIN> line 1.
2008/06/07-00:10:08 [22940] TLS Error: Could not enable TLS:  22940: 1 - error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure
2008/06/07-00:10:18 [22941] Connection timed out.
timeout at /usr/local/munin/sbin/munin-node line 543, <STDIN> line 1.

データが取得できなくなる前にperl-Net-SSLeayをインストールしたのが原因でした。
暫定対応としてperl-Net-SSLeayをアンインストールしました。

今のSSLの設定ではSSLv2が有効になっています。
SSLv2を無効にし、128bit以上の暗号強度を要求するようにします。

●SSLProtocotl all -SSLv2のみ

# openssl s_client -connect kaju.jp:443 -ssl2
CONNECTED(00000003)
30304:error:1407F0E5:SSL routines:SSL2_WRITE:ssl handshake failure:s2_pkt.c:429:

●SSLCipherSuite AES:RC4:3DES:!EXP:!ADH:!SSLv2のみ

# openssl s_client -connect kaju.jp:443 -ssl2
CONNECTED(00000003)

(省略)

30417:error:1406D0B8:SSL routines:GET_SERVER_HELLO:no cipher list:s2_clnt.c:469:

両方を有効にした場合はSSLProtocolの設定が優先的に動くようだ。
最終的な設定。
【/usr/local/apache2/conf/extra/httpd-ssl.conf】

SSLProtocotl all -SSLv2
SSLCipherSuite AES:RC4:3DES:!EXP:!ADH:!SSLv2

Webサーバ上で色々なWebアプリを動かしているのでSSL化してセキュリティの確保をしてみます。
SSLをするには証明書が必要なわけですが、いわゆるオレオレ証明書ではなく無料で証明書を発行してくれるStartSSLのサービスを使ってみます。

最初にWebサーバであるApacheがSSLに対応しているか確認しておきます。
mod_ssl.cが読み込まれていればOKです。

# /usr/local/apache2/bin/httpd -l |grep ssl
  mod_ssl.c

StartSSLのサイトでアカウントを作成して証明書の発行手続きをします。
証明書を発行してもらうためにはCSRが必要なのですがStartSSLの場合はCSRがなくても大丈夫です。
CSRを作成する場合は以下の手順で行います。

1.サーバの秘密鍵を作成
秘密鍵生成時にランダムな値が必要になるので/dev/randomを使用します。

# openssl genrsa -rand /dev/random -des3 -out kaju.jp.key 1024

2.CSRを作成
先ほど作った秘密鍵(kaju.jp.key)を使ってCSRを作成します。
証明書に含める情報を色々聞かれるので入力していきます。
※Common Nameは実際に動かすサーバのFQDNと同じにする必要があるので注意。

# openssl req -new -key kaju.jp.key -out kaju.jp.csr

3.サーバ証明書を発行
CSRをstartsslに送付するとサーバ証明書が発行されるのでWebサーバ上に保存します。

4.CA証明書と中間CA証明書の入手
startsslのCA証明書と中間CA証明書をWebサーバ上に保存します。

# wget https://www.startssl.com/certs/ca.crt
# wget https://www.startssl.com/certs/sub.class1.server.ca.crt

次にApacheの設定を行います。
【/usr/local/apache2/conf/httpd.conf】

Include conf/extra/httpd-ssl.conf

【/usr/local/apache2/conf/extra/httpd-ssl.conf】

Listen 443

<VirtualHost _default_:443>
    DocumentRoot "/usr/local/apache2/htdocs"
    LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\""
    ErrorLog /var/log/httpd/ssl_default_error.log
    TransferLog /var/log/httpd/ssl_default_access.log
    SSLEngine on
    SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
    SSLCertificateFile /usr/local/apache2/conf/kaju.jp.crt
    SSLCertificateKeyFile /usr/local/apache2/conf/kaju.jp.key
    SSLCertificateChainFile /usr/local/apache/conf/sub.class1.server.ca.crt
    SSLCACertificateFile /usr/local/apache/conf/ca.crt

CustomLog /var/log/httpd/ssl_request.log \
          "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
</VirtualHost>

設定を確認してOKだったらApacheを再起動します。

# /usr/local/apache2/bin/apachectl configtest
Syntax OK

# /usr/local/apache2/bin/apachectl start
Apache/2.2.8 mod_ssl/2.2.8 (Pass Phrase Dialog)
Some of your private key files are encrypted for security reasons.
In order to read them you have to provide the pass phrases.

Server kaju.jp:443 (RSA)
Enter pass phrase:

OK: Pass Phrase Dialog successful.

プロセスの確認をしておきます。

# ps aux |grep httpd
root      9897 18.0  2.0 55948 10512 ?       Ss   14:53   0:01 /usr/local/apache2/bin/httpd -k start
apache    9898  0.0  1.6 55756 8456 ?        S    14:53   0:00 /usr/local/apache2/bin/httpd -k start
apache    9900  0.0  1.6 55948 8592 ?        S    14:53   0:00 /usr/local/apache2/bin/httpd -k start
apache    9901  0.0  1.6 55948 8588 ?        S    14:53   0:00 /usr/local/apache2/bin/httpd -k start
apache    9902  0.0  1.6 55948 8588 ?        S    14:53   0:00 /usr/local/apache2/bin/httpd -k start
apache    9903  0.0  1.6 55948 8588 ?        S    14:53   0:00 /usr/local/apache2/bin/httpd -k start
apache    9904  0.0  1.6 55948 8588 ?        S    14:53   0:00 /usr/local/apache2/bin/httpd -k start

# netstat -an
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address               Foreign Address             State
tcp        0      0 0.0.0.0:80                  0.0.0.0:*                   LISTEN
tcp        0      0 0.0.0.0:443                 0.0.0.0:*                   LISTEN

2008年2月のアクセス解析結果が出ました。

全リクエスト数 :37951req
ユニークユーザ数:2175ユーザ

アクセス数TOP10:
1.WordPressチューニング(Zend Optimizer編1)(100req)
2.Apache 2.2.8(93req)
3.Slimboxの導入(86req)
4.WordPressチューニング(WP-cache編)(78req)
5.日帰り餃子ドライブ(67req)
6.CentOS 4.6(65req)
7.Munin(エージェント追加編4)(57req)
8.PHP 5.2.5(56req)
9.スマイルパーソナルカード到着(55req)
10.道の駅めぐり(54req)

MuninでMySQLのクエリキャッシュを監視するようにします。
MySQLでクエリキャッシュを有効にする方法は過去の記事を参照してください。
WordPressチューニング(MySQL編1)

プラグインはMuninExchangeからダウンロードしてきます。ちなみに今回使用するプラグインはmysql_qcacheとmysql_qcache_memになります。
まず最初にmysql_qcacheとmysql_qcache_memをMuninのプラグインディレクトリにダウンロードし、実行権限を与えます。

# cd /usr/local/munin/lib/plugins
# wget http://muninexchange.projects.linpro.no/download.php?phid=58
# wget http://muninexchange.projects.linpro.no/download.php?phid=59
# chmod 755 mysql_qcache
# chmod 755 mysql_qcache_mem

プラグインを有効にするためシンボリックリンクを作成します。

# cd /etc/munin/plugins/
# ln -s /usr/local/munin/lib/plugins/mysql_qcache mysql_qcache
# ln -s /usr/local/munin/lib/plugins/mysql_qcache_mem mysql_qcache_mem

mysql_qcacheとmysql_qcache_mem用の設定を追加します。
/etc/munin/plugin-conf.d/plugins.conf

[mysql*]
env.mysqladmin /usr/local/mysql/bin/mysqladmin
env.mysqlopts -uroot -p<password>

動作確認のため実行してみます。

# /usr/local/munin/sbin/munin-run --servicedir /etc/munin/plugins mysql_qcache
queries.value 1139

# /usr/local/munin/sbin/munin-run --servicedir /etc/munin/plugins mysql_qcache_mem
free.value 31228136
used.value 2326296

最後にエージェントを再起動して終了になります。

# /sbin/service munin restart
Stopping Munin Node agents:                                [  OK  ]
Starting Munin Node:                                       [  OK  ]

MuninでHDDの温度を監視します。
HDDのステータスはS.M.A.R.Tを使えれば取得できるはずなので、まずはsmartctlコマンドが動作するか確認しておきます。
なお、smartctlコマンドはkernel-utilsパッケージに含まれています。

$ rpm -qf /usr/sbin/smartctl
kernel-utils-2.4-13.1.99

MuninでS.M.A.R.TからHDDの温度情報を取得するにはhddtemp_smartctlプラグインを使います。
プラグインを有効にするためシンボリックリンクを作成します。

# cd /etc/munin/plugins/
# ln -s /usr/local/munin/lib/plugins/hddtemp_smartctl hddtemp_smartctl

hddtemp_smartctl用の設定を追加します。
ここでは/dev/hdeがHDDになっています。
/etc/munin/plugin-conf.d/plugins.conf

[hddtemp_smartctl]
user root
env.smartctl /usr/sbin/smartctl
env.drives hde

動作確認のため実行してみます。

# /usr/local/munin/sbin/munin-run --servicedir /etc/munin/plugins hddtemp_smartctl
hde.value 60

最後にエージェントを再起動して終了になります。

# /sbin/service munin restart
Stopping Munin Node agents:                                [  OK  ]
Starting Munin Node:                                       [  OK  ]

© 2003-2014 うーたんの小部屋 | Powered by Wordpress