2009年2月17日火曜日

unixコマンドでファイル名を一括置換 [UNIX]



とあるディレクトリのgifファイルをjpgファイルに拡張子を置換する。
for nm in ./*.gif; do mv $nm ${nm%.gif}.jpg; done
for文でmvコマンドをまわす。

ImageMagickインストール cannot find config.m4 [PHP]

忙しくてあまり寝てない。
腰痛が再発してくしゃみをするとビリンッて痛い。
これってヘルニアかな。
-------------------------------------

ImageMagaickのインストール。
http://www.imagemagick.org/script/download.php
tar.zipを落として解凍してインストールしようとしたらエラー

# phpize
Cannot find config.m4.
Make sure that you run '/usr/bin/phpize' in the top level source directory of the module

# /usr/bin/phpize
Cannot find config.m4.
Make sure that you run '/usr/bin/phpize' in the top level source directory of the module

# pecl install imagick
downloading imagick-2.2.2.tgz ...
Starting to download imagick-2.2.2.tgz (77,212 bytes)
..................done: 77,212 bytes
11 source files, building
〜略〜
aclocal.m4:4612: _LT_AC_TAGCONFIG is expanded from...
ERROR: `phpize' failed

どうやらphpizeがキーのようだ

php-develをいれるとついてくるという情報が結構あるが、php4用のようだし、そもそもphpizeは入ってる。
# yum list | grep php
php-devel.x86_64 4.3.9-3.22.12 installed

なので、config.m4.がないのが問題なのかな。

再度解凍してみたりGoogle先生に聞いてみたりしたけど、似たような話しか出てこない。。



試しに、http://pecl.php.net/package/imagickから最新版をDL→解凍してみた。
そしたら、、、
「config.m4」発見!!

# phpize
# ./configure
# make
# make install
であっさり解決。

あとはphp.iniに
・extension_dir=/インストールされたディレクトリ/
・extension=imagick.so
を追加してapache再起動。
phpinfoを見てみると、imagickの項が追加されてた!

実に2日間の作業。
お疲れ、オレ。

2009年2月8日日曜日

WEBからrsyncするツールつくり [APACHE] [PHP] [UNIX]

テストサーバから本番サーバへ反映させるのにrsnycを使ってやることにしました。
ただし、毎回毎回コマンドを叩くのもアレなのでwebで出来るようにphp経由でコマンドを叩くことにしました。
※php自体はテスト側に置いてあります。


【SSH認証でやってみようとする】
まずはsshの鍵の受け渡しをすることでパスワードなしでログイン出来るようにする。

コマンドライン経由でrsyncのテストをしたところ、本番サーバへのログインパスワードをきかれたので、なしで出来るようにしようと思いました。
テスト側でパスワードなしで公開鍵/秘密鍵を作って公開鍵を本番サーバに送ります。
互いのユーザ名は同じで、noocooとします。

[noocoo]$ ssh-keygen -t rsa
でenter三回くらい。パスワードは空で。

で、本番側の所定ユーザのauthorized_keysに鍵の内容を追加。
[noocoo]$ scp ./id_rsa.pub noocoo@honban_hostname:/home/noocoo/.ssh/authorized_keys

これでうまくいくはず、と思ったけど、まだパスワードを聞かれる。
なので、今度は本番側のsshdの設定をチェック。

[noocoo]$ su -
[root]# cd /etc/ssh
[root]# vi sshd_config
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
RSAAuthentication yes
※上記3つのコメントアウトを外しsshdを再起動。

[root]# service sshd restart
sshd を停止中: [ OK ]
sshd を起動中: [ OK ]

これでパスワードなしでsshログイン出来ました。



次に、php側にrsyncスクリプトを作って実行したところエラーをはきます。
Could not create directory '/.ssh'

色々調べたら実行ユーザが違う(nobodyとかapacheとか?)ということなので、/.sshを作成してnoocooの鍵を置いてみたりしたけど駄目。
nobodyとapacheで鍵を作ろうかと思ったけど、そもそもログイン出来るユーザじゃないみたいで、そこら辺調べるのも面倒になってきて方針を変えました。

【rsh-serverを使ってみる】
結論、出来た。さらっと出来たのでもうメモみたいな感じで。
[root]# chkconfig --list
[root]# up2date rsh-server
[root]# chkconfig rsh on
[root]# chkconfig rsync on
[root]# vi /etc/hosts.equiv
test nobody

これで終わり。

ssh認証を使ってどうしてもやりたいなぁと思っていたので、どうやって鍵を渡してやろうかってところでずーと悩んでました。