<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
   <channel>
      <title>てきとー管理者にっき！</title>
      <link>http://www.gourd.jp/</link>
      <description>　　　晩酌しながらサーバ管理。　こんな「てきとー管理者」にサーバ預けて、大丈夫？</description>
      <language>ja</language>
      <copyright>Copyright 2012</copyright>
      <lastBuildDate>Tue, 14 Feb 2012 11:11:14 +0900</lastBuildDate>
      <generator>http://www.sixapart.com/movabletype/</generator>
      <docs>http://blogs.law.harvard.edu/tech/rss</docs> 

      
      <item>
         <title>tcp_wrappersの応用設定</title>
         <description>いつも設定していながらも、忘れてしまい過去に設定を行ったサーバに接続して内容を確認していたが、面倒になったのでメモ！
　※ドキュメントに記載しているが、探すのが面倒・・・ｗ

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

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

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

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

具体的にはこんな感じ

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

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

意外と、便利！！
</description>
         <link>http://www.gourd.jp/2012/02/tcp_wrappers.php</link>
         <guid>http://www.gourd.jp/2012/02/tcp_wrappers.php</guid>
        
          <category domain="http://www.sixapart.com/ns/types#category">01, Linux</category>
        
        
         <pubDate>Tue, 14 Feb 2012 11:11:14 +0900</pubDate>
      </item>
      
      <item>
         <title>FirefoxとThunderbirdのアドオン</title>
         <description>最近Mozilla系のUPDATEが頻繁にあり、アドオンが使えない状況になる場合が多い。
そこで、非対応のアドオンでも利用できるように裏技が有るらしい。


例えば・・・Thunderbirdの場合。

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

これで立ち上がってくると、全てのアドオンが使えるようになっているはず・・・・
</description>
         <link>http://www.gourd.jp/2012/02/firefoxthunderbird.php</link>
         <guid>http://www.gourd.jp/2012/02/firefoxthunderbird.php</guid>
        
          <category domain="http://www.sixapart.com/ns/types#category">01, Linux</category>
        
          <category domain="http://www.sixapart.com/ns/types#category">06, Windows</category>
        
          <category domain="http://www.sixapart.com/ns/types#category">07, Mac</category>
        
        
         <pubDate>Mon, 13 Feb 2012 10:36:13 +0900</pubDate>
      </item>
      
      <item>
         <title>OpenVZのCTでSSHログイン出来ず・・・</title>
         <description>OpenVZで構築したCTにSSHで接続できなくなった。
そこで、ホストから　vzctl enter CTID(CTの番号)でログインを試みるがエラーが出る。

Unable to open pty: No such file or directory

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

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

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

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

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

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

念のため、

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

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

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

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

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

を打って、

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

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

そして
/sbin/start_udev　を実行

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

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

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

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

■参考サイト
http://www.eukhost.com/forums/f29/vps-unable-open-pty-no-such-file-directory-2666/
</description>
         <link>http://www.gourd.jp/2012/01/openvzctssh.php</link>
         <guid>http://www.gourd.jp/2012/01/openvzctssh.php</guid>
        
          <category domain="http://www.sixapart.com/ns/types#category">05, OpenVZ</category>
        
        
         <pubDate>Thu, 26 Jan 2012 17:30:03 +0900</pubDate>
      </item>
      
      <item>
         <title>Linuxの起動スクリプト</title>
         <description>ここ最近、オリジナルのデーモンを動かすことが多くなってきた。
サーバの再起動は行わないが、念のため起動スクリプトを作ってみた。

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


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

PROG=/usr/local/bin/XXXXXXXX
PROGNAME=XXXXXXXX
LOCKFILE=/var/lock/subsys/$PROGNAME

# Source function library.
. /etc/rc.d/init.d/functions

RETVAL=0

# Get config.
. /etc/sysconfig/network

# Check that networking is up.
if [ ${NETWORKING} = &quot;no&quot; ]
then
        exit 0
fi

start() {
	echo -n &quot;Starting $PROGNAME services: &quot;
	daemon $PROG -p 1022 &amp;
	RETVAL=$?
	echo
	[ $RETVAL = 0 ] &amp;&amp; touch $LOCKFILE
	return $RETVAL
}

stop() {
	echo -n &quot;Stopping $PROGNAME services: &quot;
	killproc $PROGNAME
	RETVAL=$?
	echo
	[ $RETVAL = 0 ] &amp;&amp; rm -f $LOCKFILE
	return $RETVAL
}

# See how we were called.
case &quot;$1&quot; in
  start)
        start
        ;;
  stop)
        stop
        ;;
  status)
        status $PROGNAME
        ;;
  restart|reload)
        stop
        start
        ;;
  *)
        echo &quot;Usage: $PROGNAME {start|stop|status|restart}&quot;
        exit 1

esac

exit $RETVAL
++++++++++++++++++++++++++++++++++++++++++++++++

これをフォーマットにすれば、余計な時間を取られずに済むな・・・・
</description>
         <link>http://www.gourd.jp/2012/01/linux_1.php</link>
         <guid>http://www.gourd.jp/2012/01/linux_1.php</guid>
        
          <category domain="http://www.sixapart.com/ns/types#category">01, Linux</category>
        
        
         <pubDate>Thu, 19 Jan 2012 16:20:38 +0900</pubDate>
      </item>
      
      <item>
         <title>コマンドでSSLのバインドを構成する</title>
         <description>またまたWindowsのSSL証明書ネタｗ

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

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

参考サイト
http://cspssl.jp/support/install_iis7_bind_cui.html

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

先ず、現在の設定を確認

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

コマンドで、強制的にバインドさせる

c:\Windows\System32\inetsrv&gt;appcmd set site /site.name:&quot;www2&quot; /+bindings.[protoco
l=&apos;https&apos;,bindingInformation=&apos;192.168.0.11:443:www2.hogehoge.jp&apos;]
SITE オブジェクト &quot;contact&quot; は変更されました

再度バインドの状態を確認

c:\Windows\System32\inetsrv&gt;appcmd list site
SITE &quot;Default Web Site&quot; (id:1,bindings:http/192.168.0.11:80:www.hogehoge.jp,https/192.168.0.11:443:www.hogehoge.jp,state
:Started)
SITE &quot;www2&quot; (id:2,bindings:http/192.168.0.11:80:www2.hogehoge.jp,https/192.168.0.11:443:www2.hogehoge.jp,state:Started)

これで出来上がり！

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

</description>
         <link>http://www.gourd.jp/2012/01/ssl_1.php</link>
         <guid>http://www.gourd.jp/2012/01/ssl_1.php</guid>
        
          <category domain="http://www.sixapart.com/ns/types#category">01, Linux</category>
        
          <category domain="http://www.sixapart.com/ns/types#category">06, Windows</category>
        
        
         <pubDate>Tue, 17 Jan 2012 12:17:37 +0900</pubDate>
      </item>
      
      <item>
         <title>SSL証明書の４階層クロスルート方式</title>
         <description>最近Windowsを触る機会が多いのだが、覚える気が全くない俺はやったことを直ぐに忘れてしまうので、メモって置くことにした。

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

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

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

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

http://valuessl.net/support/checker.php

</description>
         <link>http://www.gourd.jp/2012/01/ssl.php</link>
         <guid>http://www.gourd.jp/2012/01/ssl.php</guid>
        
          <category domain="http://www.sixapart.com/ns/types#category">01, Linux</category>
        
          <category domain="http://www.sixapart.com/ns/types#category">06, Windows</category>
        
        
         <pubDate>Tue, 17 Jan 2012 12:00:11 +0900</pubDate>
      </item>
      
      <item>
         <title>EC-CUBEのエラー</title>
         <description>先日、EC-CUBEをインストールした際にエラーが出た！

Warning: date() [function.date]: It is not safe to rely on the system&apos;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 &apos;Asia/Tokyo&apos; for &apos;JST/9.0/no DST&apos; instead in /var/www /html/eccube/data/class/util/GC_Utils.php on line 221

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

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

修正箇所は以下のとおり。

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

[Date]
date.timezone = Asia/Tokyo

そしてApache再起動！

php5.1とかではこんな設定したことなかったけど、EC-CUBE側の仕様変更なのかな？？？
</description>
         <link>http://www.gourd.jp/2012/01/ec-cube.php</link>
         <guid>http://www.gourd.jp/2012/01/ec-cube.php</guid>
        
          <category domain="http://www.sixapart.com/ns/types#category">01, Linux</category>
        
        
         <pubDate>Tue, 17 Jan 2012 11:53:10 +0900</pubDate>
      </item>
      
      <item>
         <title>OpenSSL（Linux）で作成したSSL証明書を変換してIISへ</title>
         <description>Linux（Apache）からWindows(IIS)に乗り換えたお客様が居る。
今時Windowsなんて使ってもね〜〜っと思いながらも、お客様の依頼なので仕方がない。

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

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

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

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

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

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

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

# openssl pkcs12 -export -in DOMAIN.crt -inkey DOMAIN.key -out DOMAIN.p12

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


■参考にしたサイト
　http://support.citrix.com/article/CTX108031
</description>
         <link>http://www.gourd.jp/2012/01/openssllinuxssliis.php</link>
         <guid>http://www.gourd.jp/2012/01/openssllinuxssliis.php</guid>
        
          <category domain="http://www.sixapart.com/ns/types#category">01, Linux</category>
        
          <category domain="http://www.sixapart.com/ns/types#category">06, Windows</category>
        
        
         <pubDate>Tue, 17 Jan 2012 11:38:05 +0900</pubDate>
      </item>
      
      <item>
         <title>Apacheのエラー6</title>
         <description>本日連続してsignal Bus error (7)の為Apacheが再起動された。
コンテンツは問題無く表示（稼働）しているが、なんか気持ち悪い・・・・

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

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


怪しいのは
mod_auth_basic.so
mod_authn_file.so


ここのところ、phpMyAdminに対しもログが残っている。
ｐｈｐMyAdminのディレクトリにはベーシック認証を施している。
もしかすると、ベーシック認証を破る攻撃がなされば場合にApacheに不具合が出るのかもしれない。
しかし、ググッてもそれらしき情報が無いため、対策が打てない！
地道に攻撃元IPをブラック化（iptablesで破棄）するしか無いだろうな〜〜
</description>
         <link>http://www.gourd.jp/2011/11/apache6.php</link>
         <guid>http://www.gourd.jp/2011/11/apache6.php</guid>
        
          <category domain="http://www.sixapart.com/ns/types#category">01, Linux</category>
        
        
         <pubDate>Mon, 14 Nov 2011 17:56:50 +0900</pubDate>
      </item>
      
      <item>
         <title>Apacheのエラー5</title>
         <description>昨晩、下記のログを吐いていた。

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

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

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

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

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

これで、再度様子みてみようか・・・

</description>
         <link>http://www.gourd.jp/2011/11/apache5.php</link>
         <guid>http://www.gourd.jp/2011/11/apache5.php</guid>
        
          <category domain="http://www.sixapart.com/ns/types#category">01, Linux</category>
        
        
         <pubDate>Tue, 08 Nov 2011 13:24:31 +0900</pubDate>
      </item>
      
      <item>
         <title>Apacheのエラー4</title>
         <description>その後、何故かわからないが不具合が出ない・・・ｗ
良いことではあるが、せっかくswatchを仕掛けたのに〜〜

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

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

</description>
         <link>http://www.gourd.jp/2011/11/apache4.php</link>
         <guid>http://www.gourd.jp/2011/11/apache4.php</guid>
        
          <category domain="http://www.sixapart.com/ns/types#category">01, Linux</category>
        
        
         <pubDate>Fri, 04 Nov 2011 00:11:33 +0900</pubDate>
      </item>
      
      <item>
         <title>Apacheのエラー3</title>
         <description>その後、何度かcoreを吐くが、全く原因が掴めず。
このままでは、相当やばい！

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

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

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

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

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

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

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

. /etc/rc.d/init.d/functions

start()
{
	RESULT_CODE=0
	
	if [ -f ${LOCKFILE} ]; then
	
		echo &quot;Swatch is already running.&quot;
		exit 1

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

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

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

case &quot;$1&quot; in

	start)
		start
		RETVAL=$?
		;;
		
	stop)
		stop
		RETVAL=$?
		;;
		
	restart)
		stop
		start
		RETVAL=$?
		;;
		
	status)
		status
		RETVAL=$?
		;;
		
	*)
		echo &quot;Usage: swatch {start|stop|restart|status}&quot;
		exit 1
esac

exit ${RETVAL}
----------------------------------------------------------------------------------------

これを
chkconfig --add swatch
して
service swatch start
して
chkconfig swatch on
こんな感じ！

これで、ちょっと様子見だな。
</description>
         <link>http://www.gourd.jp/2011/11/apache3.php</link>
         <guid>http://www.gourd.jp/2011/11/apache3.php</guid>
        
          <category domain="http://www.sixapart.com/ns/types#category">01, Linux</category>
        
        
         <pubDate>Thu, 03 Nov 2011 01:08:57 +0900</pubDate>
      </item>
      
      <item>
         <title>Apacheのエラー2</title>
         <description>coreを吐かせても、解決策が分からない。
ましてや、どのドメインが問題なのかも分からない。

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

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

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

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

grep &quot;Wed Nov 02 06:52&quot; /home/virtualdomain/*/logs/error.log

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

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

grep &quot;Wed Nov 02 06:52&quot; /home/virtualdomain/*/logs/error.log &gt; /tmp/error.dump

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

あらら。。。　お手上げだ〜〜〜

</description>
         <link>http://www.gourd.jp/2011/11/apache2.php</link>
         <guid>http://www.gourd.jp/2011/11/apache2.php</guid>
        
          <category domain="http://www.sixapart.com/ns/types#category">01, Linux</category>
        
        
         <pubDate>Wed, 02 Nov 2011 23:18:29 +0900</pubDate>
      </item>
      
      <item>
         <title>Apacheのエラー1</title>
         <description><![CDATA[最近
child pid XXXX exit signal Segmentation fault (11)
とか
child pid XXXX exit signal Bus error (7)
のエラーを吐いて、静的データは動いても、動的データでエラーが出るようになった。

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

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

先ずは、ulimit設定確認

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


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

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


apacheの設定に下記の記述を追加
CoreDumpDirectory /tmp

そして、Apache再起動
これで、準備OK！！


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

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

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

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

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

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

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


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

何故、こんなエラーがでるんだ？？
]]></description>
         <link>http://www.gourd.jp/2011/10/apache1.php</link>
         <guid>http://www.gourd.jp/2011/10/apache1.php</guid>
        
          <category domain="http://www.sixapart.com/ns/types#category">01, Linux</category>
        
        
         <pubDate>Tue, 25 Oct 2011 20:00:17 +0900</pubDate>
      </item>
      
      <item>
         <title>MacBookAir2011のWi-Fiが遅い</title>
         <description>一ヶ月程前にMacBookAir2011（１１をインチ特盛）購入しましたが、ず〜〜〜〜っと気になっていたのが、Wi-Fiの速度。
先代のMacBookAir201０（１３インチ特盛）では、Wi-Fiで８０Mを振り切り快適だった。
しかし、今は１５M程度した出ない。
速度が遅いだけなら良いのだが、Wi-Fiが不安定でリンクが切れることが多々・・・

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

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

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

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

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

初期設定では、何かがバグってるのかっもしれませんね</description>
         <link>http://www.gourd.jp/2011/08/macbookair2011wi-fi.php</link>
         <guid>http://www.gourd.jp/2011/08/macbookair2011wi-fi.php</guid>
        
          <category domain="http://www.sixapart.com/ns/types#category">07, Mac</category>
        
        
         <pubDate>Tue, 30 Aug 2011 14:21:26 +0900</pubDate>
      </item>
      
   </channel>
</rss>

