git alias について
git config --global alias.co checkout
git config --global alias.st 'status'
git config --global alias.ci 'commit -a'
git config --global alias.di 'diff'
git config --global alias.br 'branch'
git config --global alias.stat 'log --stat --summary'
daemontools インストール
参考1:http://cr.yp.to/daemontools/install.html
参考2:http://www.atmarkit.co.jp/flinux/rensai/qmail09/qmail09a.html
cloudforecast やら memcached やらの自動起動&プロセス監視に deamontools を使う。
公式を参考にインストール。
# mkdir -p /package # chmod 1755 /package # cd /package # wget http://cr.yp.to/daemontools/daemontools-0.76.tar.gz # tar xzf daemontools-0.76.tar.gz # rm -f daemontools-0.76.tar # cd admin/daemontools-0.76
このままインストールしようとするとエラーがでる。
参考3:http://d.hatena.ne.jp/suzumura_ss/20081017
ので、 src/print-cc.sh を下記のように書き換える。
# echo exec "$cc" '-c ${1+"$@"}' echo exec "$cc --include=/usr/include/errno.h " '-c ${1+"$@"}'
で、インストール。
# package/install
完了。と思いきや、Amazon Linux ではうまくsvscanboot が実行されていないっぽい。
公式を参考に、/etc/init/svscan.conf ってファイルを下記の内容で作成。
start on runlevel [12345] respawn exec /command/svscanboot
うまく行った。
なんで、/etc/inittab を読み込まないのか調べたけど、よくわからん。
# Ubuntu9.10 だと、そもそも/etc/inittab がないらしい。
# Amazon Linux が Ubuntu9.10 をベースにしてるってことなのかな?
プロセスの起動やら停止
- 停止
# svc -d /service/サービス名
- 起動
# svc -u /service/サービス名
- 起動時、自動起動しない
# touch /service/サービス名/down
- プロセス削除
# svc -d /service/サービス名 # mv /service/サービス名 /service/.サービス名 # svc -x /service/.サービス名
- サービス状態の監視
$ svstat /service/サービス名
サーバ時刻を UTC から JST に変更する
参考:http://tm.root-n.com/unix:general:utc2jst
$ sudo ln -sf /usr/share/zoneinfo/Japan /etc/localtime
snmp 設定
参考1:http://www.itmedia.co.jp/enterprise/special/0705/snmp/
参考2:http://www.cosmo.sci.hokudai.ac.jp/~jgn/tebiki/mrtg/snmp.html
参考3:http://www.uetyi.mydns.jp/wordpress/tag/snmp
cloudforecast を設定するに当たり、snmp について簡単に勉強したのでそのまとめ。
ほぼデフォルトの設定。アクセス元だけ制限してる。
#### # First, map the community name "public" into a "security name" # sec.name source community com2sec notConfigUser 192.168.0.0/16 public #### # Second, map the security name into a group name: # groupName securityModel securityName group notConfigGroup v1 notConfigUser group notConfigGroup v2c notConfigUser #### # Third, create a view for us to let the group have rights to: # Make at least snmpwalk -v 1 localhost -c public system fast again. # name incl/excl subtree mask(optional) view all included .1 80 #### # Finally, grant the group read-only access to the systemview view. # group context sec.model sec.level prefix read write notif access notConfigGroup "" any noauth exact all none none disk / 10000
com2sec | |
---|---|
sec.name | セキュリティ名。識別子。 |
source | 問い合わせ可能なホスト名/IP アドレス。"default" ですべてのホストから受け付け。 |
community | コミュニティ名。パスワード的な物。 |
group | |
groupName | グループ名。複数のユーザを紐付けできる? |
securityModel | セキュリティモデル(バージョン)の指定。v1, v2c, usm のいずれかを選択。 |
securityName | グループにひもづけるユーザを指定。sec.nameを使用。 |
view | |
name | 閲覧範囲を指定するグループ名。accessで使用? |
incl/excl | included または excluded を選択。用途不明。 |
subtree | set/get を許可する MIB ツリー名。種類多すぎ。 |
mask(optional) | MIB ツリーの指定方法を 16 進 4 桁表示したもの(らしい)。よくわからん。 |
access | |
group | group で指定したグループ名。 |
context | SNMPv1, SNMPv2c を用いる場合は空欄 ("") 。詳細不明。 |
sec.model | セキュリティモデル名。any でおk? |
sec.level | セキュリティレベル。SNMPv1, SNMPv2c を用いる場合は noauth。 |
prefix | よくわからん。exactでおk? |
read/write/notif | get (読みだし), set (書き込み), trap (通知)出来る範囲をviewのnameで指定。 |
cloudforcast について
cloudforecast で以下のようなエラーが出るが、memShared が2.6 kerne では使えないためっぽい。
2011-09-18T06:10:00 [WARN] c:Component::SNMP,h:man1,ad:man1 SNMP get failed: memShared.0.NOSUCHOBJECT.INTEGER32 error: NOSUCHOBJECT {lib/CloudForecast/Component/SNMP.pm#39}
Debian 系の snmp について
参考1:http://perltips.twinkle.cc/linux/ubuntu/snmp_remote.php
参考2:http://blog.s21g.com/articles/251
Debian では /etc/default/snmpd を読み込んで、172.0.0.1 からしか Listen しないようデフォルトで設定されている。
他のノードからアクセスする際は、/etc/default/snmpd を下記のように書き換える。
#SNMPDOPTS='-Lsd -Lf /dev/null -u snmp -I -smux -p /var/run/snmpd.pid 127.0.0.1' SNMPDOPTS='-Lsd -Lf /dev/null -u snmp -I -smux -p /var/run/snmpd.pid'
AWS環境構築メモ
Amazon Linux AMI からインスタンスを立ち上げたときの初期設定作業メモ
- ホスト名で他ノードを引けるように
- /etc/hosts差し替え
- ホスト名変更
- /etc/sysconfig/network の HOSTNAME 変更
- /etc/rc.d/init.d/network restart
- 変更しなかったので、hostname で直接変更
- rootになれるユーザを限定
- /etc/pam.d/su の "authrequiredpam_wheel.so use_uid" をコメントイン
- パッケージ更新
- yum update
- 開発に必要なもの一式インストール
- yum groupinstall "Development Tools"
- 秘密鍵ばらまく
- snmpd設定
あとは、screen やら vim やら シェルの設定ファイルもばらまく
Homebrew でパッケージ管理
Lion に移行した際、パッケージ管理を導入することに。
MacPorts は色々と良い話を聞かないので、Homebrew を入れることに。
Homebrew は Rubyで書かれていて、コマンドも brew だけ。
インストール先も /usr/local/ 以下だからまぁそんなもんだよねということで。
参考:http://mxcl.github.com/homebrew/
公式を参考にインストール
とりあえず、必要スペック。
App Store から Xcode をインストール。
これが今回一番時間かかった。
全部インストール終わったら下記のコマンドを実行。
$ /usr/bin/ruby -e "$(curl -fsSL https://raw.github.com/gist/323731)"
アドレスは多分Headが変わるたびにで変わるので、下記を参照。
https://github.com/mxcl/homebrew/wiki/installation
で、インストール完了。
とりあえず、wget と unrar と cpanm と bash-completion をインストール。
$ brew install wget unrar cpanm bash-completion
sudo 付けてないのに /usr/local/ に入るのはちょっと怖いけど、快適。
bash-completion 入れたら、ついでに brew の補完スクリプト付いてきた。
さらに快適に。
ちなみに、
$ brew install git $ brew update
で、brew 自体を更新できる。
git が必要なので、先に git も入れてやる必要がある。
# 現在、kernel.org がメンテナンス中で入れられないけど。。。
後の詳しいことは、以下のコマンドを参照する。
$ brew help
UnixTimestamp から通常の時刻へ変換
参考:http://www.math.kobe-u.ac.jp/~kodama/tips-DateTime-transform.html
変換コマンドなど
現在の UNIX time
# date $ date +"%s" 1170604923 # ruby $ ruby -e 'p Time.now.to_i' 1170604923 # awk $ gawk 'BEGIN{print systime();exit}' 1170604923 # perl $ perl -e 'print time,"\n"' 1170604923
通常の時刻から UNIX time への変換
# date $ date -d '2007/2/5 01:02:03' +'%s' 1170604923 # ruby1 $ ruby -e 'require "time";t=Time.parse("2007/2/5 01:02:03"); p t.to_i' 1170604923 # ruby2 $ ruby -e 'require "time";t=Time.parse("2007/2/5 01:02:03 JST"); p t.to_i' 1170604923 # ruby3 $ ruby -e 'require "time";t=Time.parse("2007/2/5 01:02:03 UTC"); p t.to_i' 1170637323
UNIX time から通常の時刻への変換
# ruby1 $ ruby -e 'p Time.at(1170604923)' Mon Feb 05 01:02:03 JST 2007 # ruby2 $ ruby -e 't=Time.at(1170604923); p t.utc; p t.localtime' Sun Feb 04 16:02:03 UTC 2007 Mon Feb 05 01:02:03 JST 2007 # ruby3 $ ruby -e 'p Time.at(1170604923).strftime("%Y/%m/%d %H:%M:%S")' "2007/02/05 01:02:03" # awk1 $ gawk 'BEGIN{print strftime("%c",1170604923);exit}' Mon Feb 5 01:02:03 2007 # awk2 $ gawk 'BEGIN{print strftime("%Y/%m/%d %H:%M:%S",1170604923);exit}' 2007/02/05 01:02:03 # perl $ perl -e '@t=localtime(1170604923);printf("%d/%02d/%02d %02d:%02d:%02d\n",@t[5]+1900,@t[4]+1,@t[3],@t[2],@t[1],@t[0])' 2007/02/05 01:02:03