2012年2月17日金曜日

BitNami Redmineの自動起動



便利だけどインストールまでにいろいろすることが多いRedmine。
その面倒なところを全部やってくれるのでBitNamiでインストールしてみた。
メニューで選択していくだけなんで、ものすごく簡単。
「こりゃあ快適~」なんて悦に入っていたけど、サーバを再起動したら動いてない…。


「どこから起動するんだっけ?」と思い、調べてみると
# /opt/redmine-<バージョン>/ctlscript.sh start
でOK。


でも、毎回起動するのメンドイなぁ。
ctlscript.shを/etc/init.d/に持ってきてchkconfig -addでうまく行くか?と思ったけど、chkconfigから「サポートしてない形式」、と言われてしまった。


ってことでさらに調べてみるとここにあたった。
http://bitnami.org/article/how-to-install-services-on-linux
上の例はdrupalだけど、redmineでも他のでも応用可能なはず。


# cp /opt/redmine-<バージョン>/ctlscript.sh /etc/init.d/bitnami-redmine
としただけではダメで、ちょっと編集しないといけないらしい。
最初の4行がこうなるように


#!/bin/sh
#
# chkconfig: 2345 80 30
# description: BitNami Service
runラベルが2345のときは起動して、起動の優先度を80、停止の優先度を30にしてくれるはず。


これで
# chkconfig --add bitnami-redmine
# chkconfig --list bitnami-redmine
bitnami-redmine 0:off   1:off   2:on    3:on    4:on    5:on    6:off


素晴らしい!
再起動してみても、ちゃんと自動起動してくれました!


一応、/etc/rc.d/rc3.dを見てみるとちゃんとS80で動いてる
# ll /etc/rc.d/rc3.d/*bitnami*
lrwxrwxrwx 1 root root 25  2月 17 16:33 /etc/rc.d/rc3.d/S80bitnami-redmine -> ../init.d/bitnami-redmine
さらにrc0.dを見るとK30となってました
# ll /etc/rc.d/rc0.d/*bitnami*
lrwxrwxrwx 1 root root 25  2月 17 16:33 /etc/rc.d/rc0.d/K30bitnami-redmine -> ../init.d/bitnami-redmine


これで楽々!

2012年2月14日火曜日

HP-UXのシェルスクリプトで親プロセスのIDを取得する


GNUコマンドがふんだんに使えるLinuxが好きだけど、職務上HP-UXも使ったりする。
シェルスクリプトで親プロセスを取得したくて、いろいろ調べた時に分かったのでちょっと書いておきます。


#!/bin/sh
PID=$$
PPID=$( UNIX95="" ps -o ppid -p $PID | tail -1 )
PCOMM=$( UNIX95="" ps -o comm -p $PPID | tail -1 )
echo PID: $PID
echo PPID: $PPID
echo PPCOM: $PCOMM


実行結果
% sh ./test.sh
PID: 27324
PPID: 25107
PPCOM: -zsh

と一致しているので大丈夫でしょう。

分かりにくいのはここ。
PPID=$( UNIX95="" ps -o ppid -p $PID | tail -1 )

というのもpsもmanを見てみると、-o format とあるものの「UNIX標準の構文」の部分。
英語だとXPG4の部分。
普通に
ps -o pid
としても
ps: オプションが正しくありません。-- o
とか出てくる。

なにこれ、どうすんの?と思ったら、ここを見つけた。
http://d.hatena.ne.jp/cartooh/20050611

要は環境変数UNIX95がセットしてあればいいらしい。値はダミーでもいいみたい。
% UNIX95="dummy" ps -o pid
  PID
26857
25107

…やっぱりLinuxが好きだなぁ~。

2012年2月8日水曜日

DELL PowerEdgeのRAID状態を監視


RAID1で組んでいたDELLのLinuxサーバで、ディスクが片方死んでいたのに気付かず、片肺のまま放置されていた。
再起動をきっかけに死んでいたディスクが一時的に復活し、数週間前の状態に両方のディスクを同期してくれた…。
つまりは、ここ数週間にあった更新が全て消えた…。
バックアップは取っていたけど、一世代前しかなくて、さらにそれも同期された後に気付いた。
どうしようもない…。


実話だけど、二度とこんなことがないようにバックアップ先を複数にして、さらに世代化した。
で、RAIDが死んでたのに気付かない、なんてことがないように監視をしたい。


DELLサーバなので、Open Manage Server Administratorを使えばいいらしい。


参考にしたのはこの辺り。
http://d.hatena.ne.jp/kno1020/20081007/1223387709
http://satospo.sakura.ne.jp/blog_archives/tech/hardware/r210_omsa.html
http://linux.dell.com/wiki/index.php/Repository/OMSA


yumでインストールするために、リポジトリを追加
# wget -q -O - http://linux.dell.com/repo/hardware/latest/bootstrap.cgi | bash
コマンドだけあればいいので、srvadmin-baseとsrvadmin-storageservicesをyumでインストール
# yum install srvadmin-base srvadmin-storageservices
インストール完了後、勇んでコマンドを打ってみる
# omreport
-bash: omreport: command not found
「あれ?」と思い、ログを見たら
     **********************************************************
     After the install process completes, you may need
     to log out and then log in again to reset the PATH
     variable to access the Dell OpenManage CLI utilities
     **********************************************************
としっかり書いてありました。


一回ログアウトして、ログインし直したら、ちゃんとUsageが出た。


よしよし、いい調子。
試しにちょっとやってみよう。
# omreport chassis memory
Memory Information
Error : Memory object not found
え、メモリが見えないって…。
他にもポートもプロセッサもやってみたけど、どれもnot found。
CentOSのバージョン?PowerEdge T100はサポートされない?インストールの問題?とかいろいろ考えたけど、ちょっと調べてみたら、OMSAが起動してない、と。


では、OMSAを起動する方法は?と調べたところ、以下でいいらしい
# /opt/dell/srvadmin/sbin/srvadmin-services.sh start
Starting Systems Management Device Drivers:
Starting dcdbas:                                           [  OK  ]
Starting dell_rbu:                                         [  OK  ]
Starting Systems Management Data Engine:
Starting dsm_sa_datamgrd:                                  [  OK  ]
Starting dsm_sa_eventmgrd:                                 [  OK  ]
Starting DSM SA Shared Services:                           [  OK  ]
libstdc++.so.5 is required to run the Inventory Collector.
あら、何かエラーだ。
libstdc++がないならインストールしてやればいいだけか。


# yum install compat-libstdc++-33
サービスの再起動
# /opt/dell/srvadmin/sbin/srvadmin-services.sh restart
Shutting down DSM SA Shared Services:                      [  OK  ]

Stopping Systems Management Data Engine:
Stopping dsm_sa_eventmgrd:                                 [  OK  ]
Stopping dsm_sa_datamgrd:                                  [  OK  ]
Stopping Systems Management Device Drivers:
Stopping dcdbas:                                           [  OK  ]
Stopping dell_rbu:                                         [  OK  ]
Starting Systems Management Device Drivers:
Starting dcdbas:                                           [  OK  ]
Starting dell_rbu:                                         [  OK  ]
Starting Systems Management Data Engine:
Starting dsm_sa_datamgrd:                                  [  OK  ]
Starting dsm_sa_eventmgrd:                                 [  OK  ]
Starting DSM SA Shared Services:                           [  OK  ]
エラーもなし。毎回ここで起動するのも面倒。
あ、enableすればそれでいいらしい



# /opt/dell/srvadmin/sbin/srvadmin-services.sh enable
instsvcdrv      0:on    1:off   2:off   3:on    4:on    5:on    6:on
dataeng         0:off   1:off   2:off   3:on    4:on    5:on    6:off
dsm_om_shrsvc   0:off   1:off   2:off   3:on    4:on    5:on    6:off


# omreport storage pdisk controller=0
List of Physical Disks on Controller SAS 6/iR Adapter (Slot 2)
Controller SAS 6/iR Adapter (Slot 2)
ID                        : 0:0
Status                    : Ok
Name                      : Physical Disk 0:0
State                     : Online
~(略)~
ID                        : 0:1
Status                    : Ok
Name                      : Physical Disk 0:1
State                     : Online
~(略)~


うまく行った!!
あとはこれをNagiosかなんかで定期的に実行してステータス確認すればよさそう。


コマンドのマニュアルはこちら
http://support.dell.com/support/edocs/software/svradmin/5.4/ja/cli/report.htm