<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title>てきとー管理者にっき！</title>
    <link rel="alternate" type="text/html" href="http://www.gourd.jp/" />
    <link rel="self" type="application/atom+xml" href="http://www.gourd.jp/atom.xml" />
    <id>tag:www.gourd.jp,2006-09-07://3</id>
    <updated>2012-02-14T02:25:54Z</updated>
    <subtitle>　　　晩酌しながらサーバ管理。　こんな「てきとー管理者」にサーバ預けて、大丈夫？</subtitle>
    <generator uri="http://www.sixapart.com/movabletype/">Movable Type Pro 4.23-ja</generator>

<entry>
    <title>tcp_wrappersの応用設定</title>
    <link rel="alternate" type="text/html" href="http://www.gourd.jp/2012/02/tcp_wrappers.php" />
    <id>tag:www.gourd.jp,2012://3.290</id>

    <published>2012-02-14T02:11:14Z</published>
    <updated>2012-02-14T02:25:54Z</updated>

    <summary>いつも設定していながらも、忘れてしまい過去に設定を行ったサーバに接続して内容を確...</summary>
    <author>
        <name>ま～と</name>
        <uri>http://www.gourd.jp</uri>
    </author>
    
        <category term="01, Linux" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://www.gourd.jp/">
        <![CDATA[<p>いつも設定していながらも、忘れてしまい過去に設定を行ったサーバに接続して内容を確認していたが、面倒になったのでメモ！<br />
　※ドキュメントに記載しているが、探すのが面倒・・・ｗ</p>

<p>何をしたいかというと、アクセスが有った際に管理者に通知が届くようにしたい。<br />
不正アクセスの把握にも役立つので、設定は必須。</p>

<p>どの様に設定を行えばよいかというと、通常の設定ではhosts.allowに</p>

<p>sshd :xxx.xxx.xxx.xxx ←　実際にはアクセスさせるIPアドレスを記述</p>

<p>こんな感じでアクセスを許可させるが、設定した内容でアクセスが有った場合、管理者へメール通知することが出来る。</p>

<p>具体的にはこんな感じ</p>

<p>sshd :xxx.xxx.xxx.xxx　:spawn (/usr/sbin/safe_finger -l @%h | /usr/bin/Mail account@hogehoge.jp -s "[tcpd] Access from %h to %s") &</p>

<p>こんな感じで記述すると、アクセスが有るたびに、access元のIPが記載されたメールが飛んでくる・・・</p>

<p>意外と、便利！！<br />
</p>]]>
        
    </content>
</entry>

<entry>
    <title>FirefoxとThunderbirdのアドオン</title>
    <link rel="alternate" type="text/html" href="http://www.gourd.jp/2012/02/firefoxthunderbird.php" />
    <id>tag:www.gourd.jp,2012://3.289</id>

    <published>2012-02-13T01:36:13Z</published>
    <updated>2012-02-13T01:42:20Z</updated>

    <summary>最近Mozilla系のUPDATEが頻繁にあり、アドオンが使えない状況になる場合...</summary>
    <author>
        <name>ま～と</name>
        <uri>http://www.gourd.jp</uri>
    </author>
    
        <category term="01, Linux" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="06, Windows" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="07, Mac" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://www.gourd.jp/">
        <![CDATA[<p>最近Mozilla系のUPDATEが頻繁にあり、アドオンが使えない状況になる場合が多い。<br />
そこで、非対応のアドオンでも利用できるように裏技が有るらしい。</p>

<p><br />
例えば・・・Thunderbirdの場合。</p>

<p>[ツール]→[オプション]を押すとオプションダイアログが起動。<br />
[詳細]→[一般]→[高度な設定]→[設定エディタ]を押す。<br />
[細心の注意を払って使用する]を押す。<br />
リスト内の何もない部分で右クリック→[新規作成]→[真偽値]を押す。<br />
設定名に「extensions.checkCompatibility.バージョン」を入力。<br />
今回はThunderbird１０.１なので、「extensions.checkCompatibility.10.1」に設定。<br />
真偽値に「false」を選択。<br />
全てのダイアログを閉じて、Thunderbirdを再起動。</p>

<p>これで立ち上がってくると、全てのアドオンが使えるようになっているはず・・・・<br />
</p>]]>
        
    </content>
</entry>

<entry>
    <title>OpenVZのCTでSSHログイン出来ず・・・</title>
    <link rel="alternate" type="text/html" href="http://www.gourd.jp/2012/01/openvzctssh.php" />
    <id>tag:www.gourd.jp,2012://3.288</id>

    <published>2012-01-26T08:30:03Z</published>
    <updated>2012-01-26T08:46:04Z</updated>

    <summary>OpenVZで構築したCTにSSHで接続できなくなった。 そこで、ホストから　v...</summary>
    <author>
        <name>ま～と</name>
        <uri>http://www.gourd.jp</uri>
    </author>
    
        <category term="05, OpenVZ" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://www.gourd.jp/">
        <![CDATA[<p>OpenVZで構築したCTにSSHで接続できなくなった。<br />
そこで、ホストから　vzctl enter CTID(CTの番号)でログインを試みるがエラーが出る。</p>

<p>Unable to open pty: No such file or directory</p>

<p>ファイルまたは、ディレクトリが無いだと！！</p>

<p>この「Unable to open pty: No such file or directory」でGoogle先生に聞いてみると、以外に多くのページがHITした。</p>

<p>説明によると、udevとの相性がわるいらしい・・・<br />
では、何故今までログインできて、突然ログインできなくなったのか？<br />
サーバの設定も変えた覚えもないし・・・　意味が分からない。</p>

<p>とにかく、ログイン出来るように対処方法が出ていたので、実行してみた。</p>

<p>エラーの内容では「Unable to open pty」となっていたので</p>

<p>/usr/sbin/vzctl exec CTID(CTの番号) /sbin/MAKEDEV pty　<br />
とだけ実行したがだめ。</p>

<p>念のため、</p>

<p>/usr/sbin/vzctl exec CTID(CTの番号) /sbin/MAKEDEV tty<br />
も実行してみた。</p>

<p>この2つを実行することで、ログイン出来るようになった。</p>

<p>しかし、サーバを再起動すると、同じ現象になってしまう。<br />
では、継続して利用出来るようにするためには、どの様にすれば良いのか、再度Google先生に聞いてみた。</p>

<p>サーバ起動時に、udevを利かないように設定すればいいらしい。<br />
って事で、早速やってみた。</p>

<p>先ず、<br />
/usr/sbin/vzctl exec CTID(CTの番号) /sbin/MAKEDEV pty　<br />
/usr/sbin/vzctl exec CTID(CTの番号) /sbin/MAKEDEV tty</p>

<p>を打って、</p>

<p>vzctl enter CTID(CTの番号)<br />
で、対象CTにログインする。</p>

<p>そして<br />
/etc/rc.sysinit　の<br />
#/sbin/start_udev　　←　コメントアウトする</p>

<p>そして<br />
/sbin/start_udev　を実行</p>

<p>念のため<br />
/sbin/MAKEDEV tty<br />
/sbin/MAKEDEV pty<br />
も実行して〜　再起動！！</p>

<p>起動後に<br />
vzctl enter CTID(CTの番号)<br />
でログインできることを確認。</p>

<p>そして<br />
ssh root@CTのIPアドレス<br />
にて、SSH接続を確認。</p>

<p>これで、何度再起動してもOKになったが、何故udevとの相性問題が出たのか、意味が分からない・・・・</p>

<p>■参考サイト<br />
http://www.eukhost.com/forums/f29/vps-unable-open-pty-no-such-file-directory-2666/<br />
</p>]]>
        
    </content>
</entry>

<entry>
    <title>Linuxの起動スクリプト</title>
    <link rel="alternate" type="text/html" href="http://www.gourd.jp/2012/01/linux_1.php" />
    <id>tag:www.gourd.jp,2012://3.287</id>

    <published>2012-01-19T07:20:38Z</published>
    <updated>2012-01-19T07:27:54Z</updated>

    <summary>ここ最近、オリジナルのデーモンを動かすことが多くなってきた。 サーバの再起動は行...</summary>
    <author>
        <name>ま～と</name>
        <uri>http://www.gourd.jp</uri>
    </author>
    
        <category term="01, Linux" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://www.gourd.jp/">
        <![CDATA[<p>ここ最近、オリジナルのデーモンを動かすことが多くなってきた。<br />
サーバの再起動は行わないが、念のため起動スクリプトを作ってみた。</p>

<p>今までも、起動スクリプトは作成していたが、都度作成していたので、応用の利きそうなものを作成してみた。</p>

<p><br />
++++++++++++++++++++++++++++++++++++++++++++++++<br />
#!/bin/sh<br />
#<br />
# デーモン名<br />
#<br />
# chkconfig: 345 99 01　　←　用途や依存関係に気をつけて値を決める<br />
# processname: デーモンName<br />
# description: 適当に・・・ｗ</p>

<p>PROG=/usr/local/bin/XXXXXXXX<br />
PROGNAME=XXXXXXXX<br />
LOCKFILE=/var/lock/subsys/$PROGNAME</p>

<p># Source function library.<br />
. /etc/rc.d/init.d/functions</p>

<p>RETVAL=0</p>

<p># Get config.<br />
. /etc/sysconfig/network</p>

<p># Check that networking is up.<br />
if [ ${NETWORKING} = "no" ]<br />
then<br />
        exit 0<br />
fi</p>

<p>start() {<br />
	echo -n "Starting $PROGNAME services: "<br />
	daemon $PROG -p 1022 &<br />
	RETVAL=$?<br />
	echo<br />
	[ $RETVAL = 0 ] && touch $LOCKFILE<br />
	return $RETVAL<br />
}</p>

<p>stop() {<br />
	echo -n "Stopping $PROGNAME services: "<br />
	killproc $PROGNAME<br />
	RETVAL=$?<br />
	echo<br />
	[ $RETVAL = 0 ] && rm -f $LOCKFILE<br />
	return $RETVAL<br />
}</p>

<p># See how we were called.<br />
case "$1" in<br />
  start)<br />
        start<br />
        ;;<br />
  stop)<br />
        stop<br />
        ;;<br />
  status)<br />
        status $PROGNAME<br />
        ;;<br />
  restart|reload)<br />
        stop<br />
        start<br />
        ;;<br />
  *)<br />
        echo "Usage: $PROGNAME {start|stop|status|restart}"<br />
        exit 1</p>

<p>esac</p>

<p>exit $RETVAL<br />
++++++++++++++++++++++++++++++++++++++++++++++++</p>

<p>これをフォーマットにすれば、余計な時間を取られずに済むな・・・・<br />
</p>]]>
        
    </content>
</entry>

<entry>
    <title>コマンドでSSLのバインドを構成する</title>
    <link rel="alternate" type="text/html" href="http://www.gourd.jp/2012/01/ssl_1.php" />
    <id>tag:www.gourd.jp,2012://3.286</id>

    <published>2012-01-17T03:17:37Z</published>
    <updated>2012-01-17T03:34:37Z</updated>

    <summary>またまたWindowsのSSL証明書ネタｗ 最近１５サイト分のワイルドカード形式...</summary>
    <author>
        <name>ま～と</name>
        <uri>http://www.gourd.jp</uri>
    </author>
    
        <category term="01, Linux" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="06, Windows" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://www.gourd.jp/">
        <![CDATA[<p>またまたWindowsのSSL証明書ネタｗ</p>

<p>最近１５サイト分のワイルドカード形式のSSL証明書を申請した。<br />
枯渇しているIPを消費させない一つの方法です。<br />
申請は*.hogehoge.jp等の様に、１つのドメインに対してのワイルドカードで有って、異なるドメインで使えるものではありません。（※念のため・・・）<br />
しかし、良い面だけでは有りません。<br />
古めのブラウザ（IE6）や携帯端末では認識しない場合も有るようです。</p>

<p>IISの場合、非常に簡単で、１つ目のサイトは普通にバインドさせる。<br />
２つ目以降のサイトに関してはコマンドにて設定していくのだが、覚えてしまえば非常に簡単。<br />
でも、覚えの悪い俺はメモることにしたｗ</p>

<p>参考サイト<br />
http://cspssl.jp/support/install_iis7_bind_cui.html</p>

<p>上記サイトの例ではIPを指定していないが、実際にはIPを入れて設定することになる。</p>

<p>先ず、現在の設定を確認</p>

<p>c:\Windows\System32\inetsrv>appcmd list site<br />
SITE "Default Web Site" (id:1,bindings:http/192.168.0.11:80:www.hogehoge.jp,https/192.168.0.11:443:cspssl.com,state<br />
:Started)<br />
SITE "www2" (id:2,bindings:http/192.168.0.11:80:www2hogehoge.jp,state:Started) ←　ここ(www2)にはSSL証明書が割当たっていない。</p>

<p>コマンドで、強制的にバインドさせる</p>

<p>c:\Windows\System32\inetsrv>appcmd set site /site.name:"www2" /+bindings.[protoco<br />
l='https',bindingInformation='192.168.0.11:443:www2.hogehoge.jp']<br />
SITE オブジェクト "contact" は変更されました</p>

<p>再度バインドの状態を確認</p>

<p>c:\Windows\System32\inetsrv>appcmd list site<br />
SITE "Default Web Site" (id:1,bindings:http/192.168.0.11:80:www.hogehoge.jp,https/192.168.0.11:443:www.hogehoge.jp,state<br />
:Started)<br />
SITE "www2" (id:2,bindings:http/192.168.0.11:80:www2.hogehoge.jp,https/192.168.0.11:443:www2.hogehoge.jp,state:Started)</p>

<p>これで出来上がり！</p>

<p>同一ドメインで複数サイトがある場合は、これを繰り返すだけ。</p>]]>
        
    </content>
</entry>

<entry>
    <title>SSL証明書の４階層クロスルート方式</title>
    <link rel="alternate" type="text/html" href="http://www.gourd.jp/2012/01/ssl.php" />
    <id>tag:www.gourd.jp,2012://3.285</id>

    <published>2012-01-17T03:00:11Z</published>
    <updated>2012-01-17T03:08:16Z</updated>

    <summary>最近Windowsを触る機会が多いのだが、覚える気が全くない俺はやったことを直ぐ...</summary>
    <author>
        <name>ま～と</name>
        <uri>http://www.gourd.jp</uri>
    </author>
    
        <category term="01, Linux" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="06, Windows" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://www.gourd.jp/">
        <![CDATA[<p>最近Windowsを触る機会が多いのだが、覚える気が全くない俺はやったことを直ぐに忘れてしまうので、メモって置くことにした。</p>

<p>お客様でSSL証明書にVeriSignやCybertrustを利用していたが、コスト削減のため、安い証明書を好むような傾向が有る。<br />
しかし、スマートフォンの普及によりダメダメな証明書では使い物にならない。</p>

<p>最近はRapidSSLを申請する機会が置いのだが、古い携帯端末でも新しい携帯端末でも利用出来るような複数の証明書（中間証明書）を入れることが出来るようだ。</p>

<p>やり方は簡単で、２つの中間証明書を１つのファイルでまとめてサーバに読み込ませるだけ！<br />
方法は割愛するが、下記のサイトに詳細が出ている。<br />
http://valuessl.net/support/etc/rapidsslre_cross/index.php</p>

<p>設定したら、正常に動作しているかをチェッカーでチェックすることをオススメする！</p>

<p>http://valuessl.net/support/checker.php</p>]]>
        
    </content>
</entry>

<entry>
    <title>EC-CUBEのエラー</title>
    <link rel="alternate" type="text/html" href="http://www.gourd.jp/2012/01/ec-cube.php" />
    <id>tag:www.gourd.jp,2012://3.284</id>

    <published>2012-01-17T02:53:10Z</published>
    <updated>2012-01-17T02:58:30Z</updated>

    <summary>先日、EC-CUBEをインストールした際にエラーが出た！ Warning: da...</summary>
    <author>
        <name>ま～と</name>
        <uri>http://www.gourd.jp</uri>
    </author>
    
        <category term="01, Linux" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://www.gourd.jp/">
        <![CDATA[<p>先日、EC-CUBEをインストールした際にエラーが出た！</p>

<p>Warning: date() [function.date]: It is not safe to rely on the system's timezone  settings. You are *required* to use the date.timezone setting or the  date_default_timezone_set() function. In case you used any of those methods and   you are still getting this warning, you most likely misspelled the timezone   identifier. We selected 'Asia/Tokyo' for 'JST/9.0/no DST' instead in /var/www /html/eccube/data/class/util/GC_Utils.php on line 221</p>

<p>こんな感じのエラーだったが、Google先生に確認すると、直ぐに対策が解った。</p>

<p>今回のサーバでは、CentOS5.7+PHP5.3.8の構成でエラーが出た。<br />
php.iniに細工をすると直るらしい。</p>

<p>修正箇所は以下のとおり。</p>

<p>php.ini の [Date] セクションにtimezoneを設定するだけ。</p>

<p>[Date]<br />
date.timezone = Asia/Tokyo</p>

<p>そしてApache再起動！</p>

<p>php5.1とかではこんな設定したことなかったけど、EC-CUBE側の仕様変更なのかな？？？<br />
</p>]]>
        
    </content>
</entry>

<entry>
    <title>OpenSSL（Linux）で作成したSSL証明書を変換してIISへ</title>
    <link rel="alternate" type="text/html" href="http://www.gourd.jp/2012/01/openssllinuxssliis.php" />
    <id>tag:www.gourd.jp,2012://3.283</id>

    <published>2012-01-17T02:38:05Z</published>
    <updated>2012-01-17T02:51:34Z</updated>

    <summary>Linux（Apache）からWindows(IIS)に乗り換えたお客様が居る。...</summary>
    <author>
        <name>ま～と</name>
        <uri>http://www.gourd.jp</uri>
    </author>
    
        <category term="01, Linux" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="06, Windows" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://www.gourd.jp/">
        <![CDATA[<p>Linux（Apache）からWindows(IIS)に乗り換えたお客様が居る。<br />
今時Windowsなんて使ってもね〜〜っと思いながらも、お客様の依頼なので仕方がない。</p>

<p>コンテンツ（Linuxで動いていたPHP+PostgreSQLをWindows版PHP+MSSQLに焼き直し）を再構築して、やっと動くようになった。<br />
無理にWindows版PHPに焼かずに.netで再構築すれば良いと思うのだが、俺の周りには.netに詳しいプログラマーがいないｗ<br />
やってやれないことは無いが、PHP同士の移植の方が簡単で工数も少なく、トラブルも少ないとの結論に至った。</p>

<p>ま〜　ここまでは、俺の担当では無いので詳細は割愛！！</p>

<p>本題のSSL証明書の変換だが、Google先生に聞いてみると意外に情報が少ない。<br />
しかし、方法は一発のコマンドで変換できてしまう。</p>

<p>忘れないように、また同じような事はあった時の為にメモ！</p>

<p>Linuxの場合は、keyとcrtの２段構えで構成されている。<br />
Windowsの場合はPKCS#12 形式。</p>

<p>コマンドでサクッと変換してみましょ。</p>

<p>OpenSSLがインストールされたLinuxで下記を実行</p>

<p># openssl pkcs12 -export -in DOMAIN.crt -inkey DOMAIN.key -out DOMAIN.p12</p>

<p>これだけで変換完了。<br />
出来たPKCS#12 形式をWindowsへ転送して、読みこませれば完了！</p>

<p><br />
■参考にしたサイト<br />
　http://support.citrix.com/article/CTX108031<br />
</p>]]>
        
    </content>
</entry>

<entry>
    <title>Apacheのエラー6</title>
    <link rel="alternate" type="text/html" href="http://www.gourd.jp/2011/11/apache6.php" />
    <id>tag:www.gourd.jp,2011://3.282</id>

    <published>2011-11-14T08:56:50Z</published>
    <updated>2011-11-14T09:11:43Z</updated>

    <summary>本日連続してsignal Bus error (7)の為Apacheが再起動され...</summary>
    <author>
        <name>ま～と</name>
        <uri>http://www.gourd.jp</uri>
    </author>
    
        <category term="01, Linux" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://www.gourd.jp/">
        <![CDATA[<p>本日連続してsignal Bus error (7)の為Apacheが再起動された。<br />
コンテンツは問題無く表示（稼働）しているが、なんか気持ち悪い・・・・</p>

<p>バーチャルドメインのログを見ても、それらしきものは残っていない〜</p>

<p>coreが吐かれていたので、内容を確認したが以前と同じ・・・<br />
(gdb) where<br />
#0  0xb7bca697 in memset () from /lib/libc.so.6<br />
#1  0xb7e987ab in apr_password_validate () from /usr/lib/libaprutil-1.so.0<br />
#2  0xb7843bda in __cxa_finalize () from /etc/httpd/modules/mod_authn_file.so<br />
#3  0xb7f11c6e in __cxa_finalize () from /etc/httpd/modules/mod_auth_basic.so<br />
#4  0xb7f52a0d in ap_run_check_user_id ()<br />
#5  0xb7f53d17 in ap_process_request_internal ()<br />
#6  0xb7f6763b in ap_process_request ()<br />
#7  0xb7f643ef in ?? ()<br />
#8  0xb7f5fa0d in ap_run_process_connection ()<br />
#9  0xb7f5fb0c in ap_process_connection ()<br />
#10 0xb7f6c694 in ?? ()<br />
#11 0xb7f6c9a1 in ?? ()<br />
#12 0xb7f6d3a3 in ap_mpm_run ()<br />
#13 0xb7f43157 in main ()</p>

<p><br />
怪しいのは<br />
mod_auth_basic.so<br />
mod_authn_file.so</p>

<p><br />
ここのところ、phpMyAdminに対しもログが残っている。<br />
ｐｈｐMyAdminのディレクトリにはベーシック認証を施している。<br />
もしかすると、ベーシック認証を破る攻撃がなされば場合にApacheに不具合が出るのかもしれない。<br />
しかし、ググッてもそれらしき情報が無いため、対策が打てない！<br />
地道に攻撃元IPをブラック化（iptablesで破棄）するしか無いだろうな〜〜<br />
</p>]]>
        
    </content>
</entry>

<entry>
    <title>Apacheのエラー5</title>
    <link rel="alternate" type="text/html" href="http://www.gourd.jp/2011/11/apache5.php" />
    <id>tag:www.gourd.jp,2011://3.281</id>

    <published>2011-11-08T04:24:31Z</published>
    <updated>2011-11-08T04:35:03Z</updated>

    <summary>昨晩、下記のログを吐いていた。 [Tue Nov 08 02:08:31 201...</summary>
    <author>
        <name>ま～と</name>
        <uri>http://www.gourd.jp</uri>
    </author>
    
        <category term="01, Linux" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://www.gourd.jp/">
        <![CDATA[<p>昨晩、下記のログを吐いていた。</p>

<p>[Tue Nov 08 02:08:31 2011] [notice] child pid 27500 exit signal Segmentation fault (11)</p>

<p>しかし、swatchで感知しないｗ<br />
設定ファイルには　watchfor /signal Bus error (7)|signal Segmentation fault (11)/　のように記述しているが。。。。<br />
何か、問題でも？？</p>

<p>って事で、watchfor /signal Bus error|signal Segmentation fault/　こんな感じにしてみた。</p>

<p>それと、昔NICが死んでしまう現象があり、その時にお対策を行った事が有ったが、logrotateする際に、古いLogDATAを読み続けてしまう現象が有った。<br />
今回のLogはApacheのログなので、logrotateした後にswatchを再起動するようにして、logrotateした後の新しいLogを参照するように追記してみた。</p>

<p>------------------------------------------------------------------------------------------<br />
/var/log/httpd/*log {<br />
weekly<br />
rotate 13<br />
missingok<br />
notifempty<br />
sharedscripts<br />
postrotate<br />
/sbin/service httpd reload > /dev/null 2>/dev/null || true<br />
endscript<br />
}<br />
------------------------------------------------------------------------------------------<br />
↓　↓　↓<br />
------------------------------------------------------------------------------------------<br />
/var/log/httpd/*log {<br />
weekly<br />
rotate 13<br />
missingok<br />
notifempty<br />
sharedscripts<br />
postrotate<br />
/sbin/service httpd reload > /dev/null 2>/dev/null || true<br />
/etc/rc.d/init.d/swatch restart　　←　ここ<br />
endscript<br />
}<br />
------------------------------------------------------------------------------------------</p>

<p>これで、再度様子みてみようか・・・</p>]]>
        
    </content>
</entry>

<entry>
    <title>Apacheのエラー4</title>
    <link rel="alternate" type="text/html" href="http://www.gourd.jp/2011/11/apache4.php" />
    <id>tag:www.gourd.jp,2011://3.280</id>

    <published>2011-11-03T15:11:33Z</published>
    <updated>2011-11-08T04:35:48Z</updated>

    <summary>その後、何故かわからないが不具合が出ない・・・ｗ 良いことではあるが、せっかくs...</summary>
    <author>
        <name>ま～と</name>
        <uri>http://www.gourd.jp</uri>
    </author>
    
        <category term="01, Linux" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://www.gourd.jp/">
        <![CDATA[<p>その後、何故かわからないが不具合が出ない・・・ｗ<br />
良いことではあるが、せっかくswatchを仕掛けたのに〜〜</p>

<p>ちょっと時間が有ったので、ここ最近追加したドメインの配下を見てみたら、htdocsの下にcoreが吐かれてる。<br />
findで検索すると、他のドメインでもcoreが吐かれてるドメインが有る。</p>

<p>今度、エラーが出てSwatchでApacheが再起動すればメールが飛んでくる。<br />
そのタイミングで、各ドメイン配下にcoreが有るか確認すれば、追求出来るかも！！<br />
※ドメイン配下に有ったcoreは調査する前に削除していたので、次回発生しないと調べられないｗ</p>]]>
        
    </content>
</entry>

<entry>
    <title>Apacheのエラー3</title>
    <link rel="alternate" type="text/html" href="http://www.gourd.jp/2011/11/apache3.php" />
    <id>tag:www.gourd.jp,2011://3.279</id>

    <published>2011-11-02T16:08:57Z</published>
    <updated>2011-11-08T04:36:26Z</updated>

    <summary>その後、何度かcoreを吐くが、全く原因が掴めず。 このままでは、相当やばい！ ...</summary>
    <author>
        <name>ま～と</name>
        <uri>http://www.gourd.jp</uri>
    </author>
    
        <category term="01, Linux" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://www.gourd.jp/">
        <![CDATA[<p>その後、何度かcoreを吐くが、全く原因が掴めず。<br />
このままでは、相当やばい！</p>

<p>って事で、<br />
child pid XXXX exit signal Segmentation fault (11)<br />
とか<br />
child pid XXXX exit signal Bus error (7)<br />
を吐いたら、Apacheを再起動するようにしてみた。</p>

<p>早速、swatchを導入。<br />
通常 /root/.swatchrc に記述するようになっているが、これでは管理しにくいので、 /etc/swatch に設定ファイルを置いて動くようにしてみた。</p>

<p># mkdir /etc/swatch<br />
# cd /etc/swatch<br />
# vi error_log.conf<br />
----------------------------------------------------------------------------------------<br />
#logfile: /var/log/httpd/error_log</p>

<p>watchfor /signal Bus error (7)|signal Segmentation fault (11)/<br />
    echo<br />
    mail admin@hogehoge.jp,subject=[Alert] Apache Restart!!<br />
    exec /etc/rc.d/init.d/httpd restart<br />
----------------------------------------------------------------------------------------</p>

<p>こんな感じで設定。<br />
swatchは標準で起動スクリプトが用意されていないので、色々調べてこんな感じで作ってみた。</p>

<p>----------------------------------------------------------------------------------------<br />
#!/bin/sh<br />
#<br />
# Swatch<br />
#<br />
# chkconfig: 345 90 35<br />
# description: swatch log monitoring<br />
#</p>

<p>SWATCH=/usr/bin/swatch<br />
LOCKFILE=/var/lock/subsys/swatch<br />
CONFPATH=/etc/swatch<br />
PROCFILE_PATH=/var/run<br />
CONFFILE=*.conf<br />
WORKPATH=/tmp<br />
LOGFILE=/var/log/swatch/swatch.log</p>

<p>. /etc/rc.d/init.d/functions</p>

<p>start()<br />
{<br />
	RESULT_CODE=0<br />
	<br />
	if [ -f ${LOCKFILE} ]; then<br />
	<br />
		echo "Swatch is already running."<br />
		exit 1</p>

<p>	else<br />
	<br />
		touch ${LOCKFILE}<br />
				<br />
	fi<br />
	<br />
	PROCCOUNT=0<br />
	<br />
	for CONFIGFILE in ${CONFPATH}/${CONFFILE}<br />
	do<br />
		if [ -f ${CONFIGFILE} ]; then<br />
		<br />
			PROCCOUNT=`expr ${PROCCOUNT} + 1`<br />
			<br />
			TARGET_LOG=`head -1 ${CONFIGFILE} | awk 'BEGIN { FS = ":" }; { sub(/([ \t]+$|^[ \t]+)/, "", $2); print $2 }'`<br />
	<br />
			echo -n "Starting swatch: ${TARGET_LOG}: "<br />
			<br />
			daemon ${SWATCH} \<br />
				--config-file ${CONFIGFILE} \<br />
				--tail-file ${TARGET_LOG} \<br />
				--script-dir=${WORKPATH} \<br />
				--awk-field-syntax \<br />
				--daemon \<br />
				--pid-file ${PROCFILE_PATH}/swatch.${PROCCOUNT}.pid \<br />
					2>> ${LOGFILE}<br />
			<br />
			RETVAL=$?<br />
			echo<br />
			<br />
			if [ ${RETVAL} != 0 ]; then<br />
			<br />
				RESULT_CODE=${RETVAL};<br />
			<br />
			fi<br />
		<br />
		else<br />
		<br />
			RESULT_CODE=7<br />
		<br />
		fi<br />
		<br />
	done<br />
		<br />
	return ${RESULT_CODE}<br />
}</p>

<p>stop()<br />
{<br />
	if [ -f ${LOCKFILE} ]; then<br />
	<br />
		for PID in ${PROCFILE_PATH}/swatch.*.pid<br />
		do<br />
			if [ -f ${PID} ]; then<br />
			<br />
				PID_NUMBER=`cat ${PID}`<br />
				<br />
				echo -n "Shutting down swatch (pid ${PID_NUMBER}): "<br />
			<br />
				killproc -p ${PID}<br />
				RETVAL=$?<br />
				<br />
				rm -f ${PID}<br />
				<br />
				echo<br />
			<br />
			else<br />
			<br />
				RETVAL=7<br />
				<br />
			fi<br />
			<br />
		done<br />
	fi<br />
		<br />
	rm -f ${LOCKFILE}<br />
	rm -f ${WORKPATH}/.swatch_script.*<br />
	<br />
	return ${RETVAL}<br />
}</p>

<p>status()<br />
{<br />
	if [ -f ${LOCKFILE} ]; then<br />
	<br />
		echo -n "Swatch (pid :"<br />
		<br />
		for PID in ${PROCFILE_PATH}/swatch.*.pid<br />
		do<br />
			if [ -f ${PID} ]; then<br />
			<br />
				echo -n " `cat ${PID}`"<br />
				<br />
			fi<br />
			<br />
		done<br />
		<br />
		echo ") is running."<br />
	<br />
	else<br />
	<br />
		echo "Swatch is stopped."<br />
		<br />
	fi<br />
	<br />
	return 0<br />
}</p>

<p>case "$1" in</p>

<p>	start)<br />
		start<br />
		RETVAL=$?<br />
		;;<br />
		<br />
	stop)<br />
		stop<br />
		RETVAL=$?<br />
		;;<br />
		<br />
	restart)<br />
		stop<br />
		start<br />
		RETVAL=$?<br />
		;;<br />
		<br />
	status)<br />
		status<br />
		RETVAL=$?<br />
		;;<br />
		<br />
	*)<br />
		echo "Usage: swatch {start|stop|restart|status}"<br />
		exit 1<br />
esac</p>

<p>exit ${RETVAL}<br />
----------------------------------------------------------------------------------------</p>

<p>これを<br />
chkconfig --add swatch<br />
して<br />
service swatch start<br />
して<br />
chkconfig swatch on<br />
こんな感じ！</p>

<p>これで、ちょっと様子見だな。<br />
</p>]]>
        
    </content>
</entry>

<entry>
    <title>Apacheのエラー2</title>
    <link rel="alternate" type="text/html" href="http://www.gourd.jp/2011/11/apache2.php" />
    <id>tag:www.gourd.jp,2011://3.278</id>

    <published>2011-11-02T14:18:29Z</published>
    <updated>2011-11-08T04:37:13Z</updated>

    <summary>coreを吐かせても、解決策が分からない。 ましてや、どのドメインが問題なのかも...</summary>
    <author>
        <name>ま～と</name>
        <uri>http://www.gourd.jp</uri>
    </author>
    
        <category term="01, Linux" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://www.gourd.jp/">
        <![CDATA[<p>coreを吐かせても、解決策が分からない。<br />
ましてや、どのドメインが問題なのかも分からない。</p>

<p>coreを吐いた時刻付近のログを調べたいが、150以上のドメインのログを見ていくのは辛い。<br />
そこで、何か良い案は無いかと、知恵を絞ってみた。</p>

<p>　grepコマンドで絞れそうな気がしてきた</p>

<p>現在、バーチャルドメインのディレクトリは /home/virtualdomain/ドメイン名　としている。　その配下にlogsを作成し、ドメインごとのログを取っている。<br />
ターゲットは/home/virtualdomain/ドメイン名/logs/error.log　だ！</p>

<p>多分こんな感じで行けるのかな？？　と、やってみたら簡単に抽出できた。</p>

<p>grep "Wed Nov 02 06:52" /home/virtualdomain/*/logs/error.log</p>

<p>コンソールにはズラズラズラと出るが、分かり難い</p>

<p>そこで、抽出したデータを/tmp/error.dumpに書きだしてみる。</p>

<p>grep "Wed Nov 02 06:52" /home/virtualdomain/*/logs/error.log > /tmp/error.dump</p>

<p>すべてのドメインの　error.log から、"Wed Nov 02 06:52"にHITするものが一目で見られるが、それらしきエラーは無い！<br />
時間を変更して抽出しても、怪しい書き込みが無い・・・・</p>

<p>あらら。。。　お手上げだ〜〜〜</p>]]>
        
    </content>
</entry>

<entry>
    <title>Apacheのエラー1</title>
    <link rel="alternate" type="text/html" href="http://www.gourd.jp/2011/10/apache1.php" />
    <id>tag:www.gourd.jp,2011://3.277</id>

    <published>2011-10-25T11:00:17Z</published>
    <updated>2011-11-08T04:37:41Z</updated>

    <summary>最近 child pid XXXX exit signal Segmentati...</summary>
    <author>
        <name>ま～と</name>
        <uri>http://www.gourd.jp</uri>
    </author>
    
        <category term="01, Linux" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://www.gourd.jp/">
        <![CDATA[<p>最近<br />
child pid XXXX exit signal Segmentation fault (11)<br />
とか<br />
child pid XXXX exit signal Bus error (7)<br />
のエラーを吐いて、静的データは動いても、動的データでエラーが出るようになった。</p>

<p>複数のドメインを管理しているため、ログは各ドメイン配下に書き込まれる。<br />
大元のログには、上記内容のみの記述しか書き込まれない・・・・</p>

<p>頻繁に発生するので、coreを吐かせるように設定してみた。</p>

<p>先ずは、ulimit設定確認</p>

<p># ulimit -a<br />
core file size          (blocks, -c) 0　　←　ここ<br />
data seg size           (kbytes, -d) unlimited<br />
scheduling priority             (-e) 0<br />
file size               (blocks, -f) unlimited<br />
pending signals                 (-i) 143360<br />
max locked memory       (kbytes, -l) 32<br />
max memory size         (kbytes, -m) unlimited<br />
open files                      (-n) 1024<br />
pipe size            (512 bytes, -p) 8<br />
POSIX message queues     (bytes, -q) 819200<br />
real-time priority              (-r) 0<br />
stack size              (kbytes, -s) 10240<br />
cpu time               (seconds, -t) unlimited<br />
max user processes              (-u) 143360<br />
virtual memory          (kbytes, -v) unlimited<br />
file locks                      (-x) unlimited</p>

<p><br />
これでは、ダメなので　/etc/profile　の値を書き換えて、無制限にしてみた。</p>

<p># ulimit -a<br />
core file size          (blocks, -c) unlimited  ←　ここ<br />
data seg size           (kbytes, -d) unlimited<br />
scheduling priority             (-e) 0<br />
file size               (blocks, -f) unlimited<br />
pending signals                 (-i) 143360<br />
max locked memory       (kbytes, -l) 32<br />
max memory size         (kbytes, -m) unlimited<br />
open files                      (-n) 1024<br />
pipe size            (512 bytes, -p) 8<br />
POSIX message queues     (bytes, -q) 819200<br />
real-time priority              (-r) 0<br />
stack size              (kbytes, -s) 10240<br />
cpu time               (seconds, -t) unlimited<br />
max user processes              (-u) 143360<br />
virtual memory          (kbytes, -v) unlimited<br />
file locks                      (-x) unlimited</p>

<p><br />
apacheの設定に下記の記述を追加<br />
CoreDumpDirectory /tmp</p>

<p>そして、Apache再起動<br />
これで、準備OK！！</p>

<p><br />
数日経ったある日、Apacheが死にやがった！<br />
/tmpにはcore.XXXXが複数存在する。</p>

<p>このデータは生の状態では見られないので、gdbコマンドで見る必要が有る。</p>

<p>gdbコマンドはこんな感じで実行する。</p>

<p>gdb <commnd> -c <(core)file></p>

<p>それでは、実際に見てみよう<br />
gdb /usr/sbin/httpd -c /tmp/core.28778</p>

<p>ずらずらずら〜〜〜っと出てきて、意味不明ｗ<br />
そこで　where　と打ってみると、見やすくなるらしい</p>

<p>(gdb) where<br />
#0  0xb7b8f697 in memset () from /lib/libc.so.6<br />
#1  0xb7e5d7ab in apr_password_validate () from<br />
/usr/lib/libaprutil-1.so.0<br />
#2  0xb7808bda in __cxa_finalize () from<br />
/etc/httpd/modules/mod_authn_file.so<br />
#3  0xb7ed5c6e in __cxa_finalize () from<br />
/etc/httpd/modules/mod_auth_basic.so<br />
#4  0xb7f17a0d in ap_run_check_user_id ()<br />
#5  0xb7f18d17 in ap_process_request_internal ()<br />
#6  0xb7f2c63b in ap_process_request ()<br />
#7  0xb7f293ef in ?? ()<br />
#8  0xb7f24a0d in ap_run_process_connection ()<br />
#9  0xb7f24b0c in ap_process_connection ()<br />
#10 0xb7f31694 in ?? ()<br />
#11 0xb7f319a1 in ?? ()<br />
#12 0xb7f323a3 in ap_mpm_run ()</p>

<p><br />
意味はわからないが、ベーシック認証系のエラーっぽい。<br />
確かに、動的データが死んだ時は、ベーシンク認証でID&PASSが通らない。</p>

<p>何故、こんなエラーがでるんだ？？<br />
</p>]]>
        
    </content>
</entry>

<entry>
    <title>MacBookAir2011のWi-Fiが遅い</title>
    <link rel="alternate" type="text/html" href="http://www.gourd.jp/2011/08/macbookair2011wi-fi.php" />
    <id>tag:www.gourd.jp,2011://3.276</id>

    <published>2011-08-30T05:21:26Z</published>
    <updated>2011-08-30T05:29:25Z</updated>

    <summary>一ヶ月程前にMacBookAir2011（１１をインチ特盛）購入しましたが、ず〜...</summary>
    <author>
        <name>ま～と</name>
        <uri>http://www.gourd.jp</uri>
    </author>
    
        <category term="07, Mac" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://www.gourd.jp/">
        <![CDATA[<p>一ヶ月程前にMacBookAir2011（１１をインチ特盛）購入しましたが、ず〜〜〜〜っと気になっていたのが、Wi-Fiの速度。<br />
先代のMacBookAir201０（１３インチ特盛）では、Wi-Fiで８０Mを振り切り快適だった。<br />
しかし、今は１５M程度した出ない。<br />
速度が遅いだけなら良いのだが、Wi-Fiが不安定でリンクが切れることが多々・・・</p>

<p>そんな時にGoogle先生に聞いてみたら、<br />
http://blog.daisukeyamashita.com/post/1714.html<br />
に、よさそうな記事が！</p>

<p>何をするわけでは無いが、新たにネットワーク環境を作成するだけで、劇的に速くなると言う<br />
早速試してみる。</p>

<p>[システム環境]→[ネットワーク]→[ネットワーク環境：ネットワーク環境を編集...]→[＋]→[適当な名前で作成]<br />
元々「自動」となっていたので、今回は「手動」と言う名称で作ってみたした。</p>

<p>設定後、リンク速度を計測すると、９０M超え！</p>

<p>なんで、これだけで速くなるの？　　って言うくらいに早くなります。</p>

<p>初期設定では、何かがバグってるのかっもしれませんね</p>]]>
        
    </content>
</entry>

</feed>

