amari3のはてなダイアリー このページをアンテナに追加 RSSフィード

2014-01-31

[]特定のディレクトリの特定のオーナーの時にだけ chown する時のメモ

特定のディレクトリの中に複数のオーナーのディレクトリやファイルがあって、特定のオーナーだけ変更したい時がたまにある。find コマンドを使ってうまくできるのでメモとして残しておく

# find /path/to/dir -user old_owner -exec chown new_owner {} \;

これからは、こういった小さなことでもブログに書きとめることにしよう。

2013-08-28

[][]CentOS 6.4 に Python 2.7.5 をインストールした

pythonbrew でも pyenv でもなく単純なソースコンパイルで入れた。これはその時のメモである。

なぜ Python 2.7.5?

Python 3 系ではなく 2.7.5 を入れた理由はただひとつ、supervisord が非推奨だったからだ!実は、Python 3.3.2 をインストールしてみたんだけど、supervisord にそのバージョンはダメよ的なことを言われて、しょんぼりしながらバージョンを落としたのである。

ライブラリ

Python 3.3.2 をインストールする際に入れたものなので、実際には必要ないものも含まれているかもしれない。

% sudo yum install zlib-devel \
 openssl-devel \
 readline-devel \
 ncurses-devel \
 sqlite-devel \
 expat-devel \
 bzip2-devel \
 tcl-devel \
 gdbm-devel \
 libbsd-devel

コンパイル & インストール

淡々とコマンドを貼っていく。

% wget http://www.python.org/ftp/python/2.7.5/Python-2.7.5.tar.bz2
% tar xpvf Python-2.7.5.tar.bz2
% cd Python-2.7.5
% ./configure --prefix=/usr/local/python-2.7 --enable-shared
% make
% make test
% sudo make install

その他諸々設定

シンボリックリンクを張っておく方が使いやすいと思う。

% sudo ln -s /usr/local/python-2.7/bin/python /usr/local/bin/python

パス通しもしておく。

% sudoedit /etc/ld.so.conf
/usr/local/python-2.7/lib

% sudo ldconfig

easy_install

ついでなんで、easy_install のインストールもしておく。途中エラーになったりしたので、無駄な手順もあるかもしれないけど、それも含めてメモとして残しておく。

% wget https://pypi.python.org/packages/source/d/distribute/distribute-0.6.49.tar.gz
% tar xpvf distribute-0.6.49.tar.gz
% sudo /usr/local/bin/python distribute-0.6.49/setup.py install
% sudo ln -s /usr/local/python-2.7/bin/easy_install /usr/local/bin/easy_install

なんかエラーが出たので↓を実行したら直った

% cd distribute-0.6.49
% sudo /usr/local/bin/python distribute_setup.py

なぜ、エラーが出てこれで直ったのか原因は調べてないので、分かったら追記しようと思う。

2013-08-26

[] CentOS(6.4) に daemontools をインストールした

PSGI なアプリを運用するにあたり、落ちた時に自動起動して欲しいなと思うわけです。そこで daemontools を導入しようと考えている。runit や monit 等同様なツールもあるわけだけど、 ネットで調べる限りだと daemontools での運用実績はかなり多そうなので良さそうかと思ったのだ。

インストール手順

何はともあれインストールしないと始まらないし、さくっとインストールしてみる。

パッチを当てないとコンパイルに失敗するので、併せてダウンロードしておこう。

本体&パッチのダウンロード

% wget http://cr.yp.to/daemontools/daemontools-0.76.tar.gz
% tar xpvf daemontools-0.76.tar.gz
% cd admin/daemontools-0.76
% wget http://qmail.org/moni.csi.hu/pub/glibc-2.3.1/daemontools-0.76.errno.patch

パッチ適用&コンパイル

% patch -s -p1 <./daemontools-0.76.errno.patch
% ./package/compile

このままインストールすると /command にシンボリックリンクが張られて、そこからさらに /usr/local/bin にシンボリックが張られるのだが、気持ち悪いし直接 /usr/local/bin にインストールする。

svscanboot の設定に /command の記述があるので、/usr/local/bin に修正しておこう。他のファイルも同様に修正しておくとよい。

% cd command/
% sudo install -o root -g root -m 0755 -s envdir /usr/local/bin
% sudo install -o root -g root -m 0755 -s envuidgid /usr/local/bin
% sudo install -o root -g root -m 0755 -s fghack /usr/local/bin
% sudo install -o root -g root -m 0755 -s multilog /usr/local/bin
% sudo install -o root -g root -m 0755 -s pgrphack /usr/local/bin
% sudo install -o root -g root -m 0755 -s readproctitle /usr/local/bin
% sudo install -o root -g root -m 0755 -s setlock /usr/local/bin
% sudo install -o root -g root -m 0755 -s setuidgid /usr/local/bin
% sudo install -o root -g root -m 0755 -s softlimit /usr/local/bin
% sudo install -o root -g root -m 0755 -s supervise /usr/local/bin
% sudo install -o root -g root -m 0755 -s svc /usr/local/bin
% sudo install -o root -g root -m 0755 -s svok /usr/local/bin
% sudo install -o root -g root -m 0755 -s svscan /usr/local/bin
% sudo install -o root -g root -m 0755 -s svstat /usr/local/bin
% sudo install -o root -g root -m 0755 -s tai64n /usr/local/bin
% sudo install -o root -g root -m 0755 -s tai64nlocal /usr/local/bin
% sudo install -o root -g root -m 0755 svscanboot /usr/local/bin

/service ディレクトリを作成する。

% sudo ./package/run

Upstart の設定をする。

% sudo vim /etc/init/svscan.conf
start on runlevel [12345]
respawn
exec /usr/local/bin/svscanboot

起動する

% sudo initctl reload-configuration
% sudo initctl list
% sudo initctl start svscan

これで daemontools が使用できるようになった。

と、daemontools のインストールをしておいてなんだが、supervisor を使ってみたいと今思ってる。

2013-07-16

[]Linux Mintの日本語/英語キーボード切り替え

すぐ忘れるのでメモ。

% setxkbmap us -model us101
% setxkbmap jp -model jp106

2013-06-13

[]sysstat の設定

そんなに大した事ではないが、sar コマンドを実行したら何の統計情報もなくて慌てて設定した。その時のメモである。

難しいことはなく以下の様な cron の設定をするだけである。

*/1 * * * * /usr/local/lib64/sa/sa1 1 1
53 23 * * * /usr/local/lib64/sa/sa2 -A

データの粒度を10分刻みで取る人も多いと思うが、僕は1分刻みで取っている。最近のサーバはディスク容量も多いし全然気にならない。

なお、sar コマンドの見方はこちらの記事 sarによるボトルネック発見の手順(というかsysstatの使用法)をまとめてみた - end0tknrのkipple - web写経開発 に分かりやすくまとまっています。