‘CentOS’ タグのついている投稿
メモ:Linux::Inotify2 でディレクトリを監視して処理
- 2010/08/05
- murabe
- CentOS
- Linux::Inotify2
Linuxサーバー上のディレクトリにファイルが作成されたら処理するってのをやりたくて、調べてたら cpan の Linux::Inotify2 が良さそうだったので試してみました。
モジュールをインストール(cpanminusを使用)。イベントループに AnyEvent を使うといいらしいので、そちらも。
1 2 | $ cpanm Linux::Inotify2 $ cpanm AnyEvent |
指定ディレクトリにファイルを投入したら別ディレクトリに mv するスクリプトを作成。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | #!/usr/bin/env perl use strict; use warnings; use Linux::Inotify2; use AnyEvent; my $watch_dir = $ENV{HOME} . '/inotify/queue'; my $processed_dir = $ENV{HOME} . '/inotify/processed'; my $inotify = Linux::Inotify2->new or die $!; $inotify->watch( $watch_dir, IN_CLOSE_WRITE | IN_MOVED_TO, sub { my $e = shift; my $name = $e->fullname; print "test!:${name}\n"; system( 'mv', $name, "${processed_dir}/" ); } ); my $cv = AnyEvent->condvar; my $inotify_w = AnyEvent->io( fh => $inotify->fileno, poll => 'r', cb => sub { $inotify->poll } ); $cv->recv; |
起動して queue ディレクトリにファイルを置いたら processed ディレクトリに移動するのを確認できました。
Popularity: 13% [?]
メモ:CentOS 5.5 で perlbrew + cpanminus
ユーザーのホームに全部入るので影響範囲を限定できてうれしい。
OSのバージョンとかあまり関係ないのですが、試した環境が CentOS 5.5 なので。
まずは perlbrew から。
ホームに移動。インストール用のファイルを取ってきてインストール実行。
1 2 3 4 | $ cd $ wget http://xrl.us/perlbrew $ chmod +x perlbrew $ ./perlbrew install |
インストール用ファイル削除。イニシャライズを実行。
1 2 | $ rm perlbrew $ perl5/perlbrew/bin/perlbrew init |
用意された設定を読み込むように .bashrc に追加。
1 2 | $ echo "source $HOME/perl5/perlbrew/etc/bashrc" >> ~/.bashrc $ source .bashrc |
perlbrewで perl 5.8.9 をインストール。インストールした perl 5.8.9 に切り替え。
1 2 | $ perlbrew install perl-5.8.9
$ perlbrew switch perl-5.8.9 |
確認。使用するものに(*)がつく(アカウントapacheでやってます)。
1 2 3 4 | $ perlbrew installed perl-5.8.9(*) /home/apache/perl5/perlbrew/perls/current/bin/perl /usr/bin/perl |
次に cpanminus 。
ホームに bin がなかったんで掘って移動。
1 2 | $ mkdir ~/bin $ cd ~/bin |
ファイルを取ってきて実行権限付ける。
1 2 | $ wget http://xrl.us/cpanm $ chmod +x cpanm |
以上。あら簡単。
※この方法だと後で不便があります。コメントでご助言いただいていますのでご参照下さい。
ちまたで噂の cpan-outdated + cpanminus での全モジュールのアップデートもやっときます。
cpan-outdated 入れる。
1 | $ cpanm App::cpanoutdated |
cpan-outdated は古くなったモジュールの一覧返してくれるのですが、
1 | $ cpan-outdated | cpanm |
と cpanminus に食わせると古くなったモジュールを全部アップデートしてくれる。素敵!
Popularity: 13% [?]
CentOS5.5 64bitにmod_pythonをインストール
- 2010/05/25
- yoshida
- Apache
- CentOS
- mod_python
CentOS5.5に標準で入っているPythonは2.4系でした。最初は何も考えずソース取って来てコンパイルしてインストールしてましたが、オプション無しでコンパイルするとmod_pythonのインストールにこけてしまいました。下記インストール手順になります。
Python 2.6
wget http://www.python.org/ftp/python/2.6.5/Python-2.6.5.tgz tar xzvf Python-2.6.5.tgz cd Python-2.6.5 ./configure --enable-shared CFLAGS="-fPIC" CXXFLAGS="-fPIC" LDFLAGS="/usr/local/lib" make make install cp libpython2.6.so* /usr/lib64/
vi /etc/ld.so.conf.d/python2.6.conf +1:/usr/local/bin
/sbin/ldconfig ln -s /usr/local/bin/python /usr/bin/python2.6
一旦ログアウト
ldd /usr/local/bin/python libpython2.6.so.1.0 => /usr/lib64/libpython2.6.so.1.0 (0x00002b7ea57a7000) libpthread.so.0 => /lib64/libpthread.so.0 (0x0000003d9cc00000) libdl.so.2 => /lib64/libdl.so.2 (0x0000003d9c400000) libutil.so.1 => /lib64/libutil.so.1 (0x0000003d9f800000) libm.so.6 => /lib64/libm.so.6 (0x0000003d9d000000) libc.so.6 => /lib64/libc.so.6 (0x0000003d9c000000) /lib64/ld-linux-x86-64.so.2 (0x0000003d9bc00000)
lib64を見ているか確認
mod_python
wget http://ftp.kddilabs.jp/infosystems/apache/httpd/modpython/mod_python-3.3.1.tgz tar xzvf mod_python-3.3.1.tgz cd mod_python-3.3.1 ./configure --with-apxs=/usr/local/apache2/bin/apxs --with-python=/usr/local/bin/python
vi src/connobject.c -142:!(b == APR_BRIGADE_SENTINEL(b) || +142:!(b == APR_BRIGADE_SENTINEL(bb) || #フォーラムにありましたが、どうやらバグのようです。
chown apache:apache /usr/local/apache2/modules/mod_python.so #権限は環境に合わせてください
Popularity: 24% [?]
yum の Proxy 設定でハマった
前回の Mac の Web 共有で Proxy で設定した Macbook 経由で CentOS 5 のサーバーで yum を使おうとして少しハマったのでメモ。
「export で proxy 設定してもダメ!」だったのでした。
http_proxy やら ftp_proxy やら設定しまくって、やっぱりだめで、ところが yum.conf を編集したらあっさり、さっくり、うまくいってしまったのでした。一時的に繋ぎたいだけなので yum.conf を触りたくなかったのですがしょうがないですね。
一般的にそうなのかはわからないのですが、そういうことがあったということで。
ちなみに、apt の場合は export で http_proxy (と必要なら ftp_proxy )環境変数を設定すれば OK。
Popularity: 16% [?]
