変奏現実

パソコンやMMORPGのことなどを思いつくまま・・・記載されている会社名・製品名・システム名などは、各社の商標、または登録商標です。

この画面は、簡易表示です

2013年4月10日

「mcrypt 拡張をロードできません。PHP の設定を確認してください」

# yum -y install php-mcrypt

Setting up Install Process

Package php-mcrypt-5.3.3-1.el6.rf.x86_64 already installed and latest version

Nothing to do

インスト済なのに

# yum remove php-mcrypt

# yum -y install php-mcrypt

Installed:
php-mcrypt.x86_64 0:5.3.3-1.el6.rf

# service httpd restart

httpd を停止中: [ OK ]
httpd を起動中: [ OK ]

しても、

mcrypt 拡張をロードできません。PHP の設定を確認してください

(謎
php.iniを見ると、
;;;;
; Note: packaged extension modules are now loaded via the .ini files
; found in the directory /etc/php.d; these are loaded by default.
;;;;
phpの拡張モジュールは /etc/php.d にiniファイルを配置すればいいらしい。
そこには/etc/php.d/mcrypt.ini があった。
; Enable mcrypt extension module
extension=module.so
と書いてある。
# find / -name  module.so -print
しかし、見つからなかった。
その先の答えはコマンドプロンプトにあった。
# php
PHP Warning: PHP Startup: Unable to load dynamic library ‘/usr/lib64/php/modules/module.so’ – /usr/lib64/php/modules/module.so: cannot open shared object file: No such file or directory in Unknown on line 0
^C ※入力待ちになっているので、Ctrl+Cで止めなといけない。
こっちかな?
# php -v
PHP Warning: PHP Startup: Unable to load dynamic library ‘/usr/lib64/php/modules/module.so’ – /usr/lib64/php/modules/module.so: cannot open shared object file: No such file or directory in Unknown on line 0
PHP 5.3.3 (cli) (built: Feb 22 2013 02:51:11)
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies
64ビット版のLinuxのPHPが使うモジュールは、
/usr/lib64/php/modules/の下にあるらしい。
確かに
/usr/lib64/php/modules/module.so
は無く、
/usr/lib64/php/modules/mcrypt.so
がソレっぽかった。
/etc/php.d/mcrypt.ini を修正
extension=mcrypt.so
に書き換え、service httpd restartでOK。
 
トラブルが起こると、Linuxの中身に詳しくなれるね。
無線LANでも、/etc/sysconfig/network-scriptsの中のシェルファイルを読んでみたりと、
プロの運用でも一生読むことが無さそうなソースを読む機会に恵まれる。(大笑
※尚、この問題は現在(CentOS6.6)も修正されておりません。CentOS7では修正済。2014/11/3



Blog鯖のバックアップ

気が向いたときにしかバックアップしていない。
でも rsync で、パソを起動した後に、勝手にBLOG鯖の中身をパソにバックアップしてくれたら楽そうだ。
/etc とか /var/www /root  あたりかな
/var/log/* も日付でファイルをローテートすれば、履歴が残せそうな気もするが・・・
Blog鯖  rsync  最小限インストールでインスト済。
でも、バックアップファイルを作ってるとSSDの痛みが激しくなりそうなので
リアルタイムミラーリングツール導入(lsyncd+rsyncd)
を見ながらインストしてみる。
今は lsyncd-2.1.4.tar.gz が最新らしい。
# ./configure && make && make install
・・・
checking for a2x… no
configure: error: Program ‘a2x’ (package asciidoc) is required
そうなのか・・・
# yum – y  install   asciidoc
次!
# ./configure && make && make install
・・・
checking whether Lua library was compiled with compat support… no
configure: error: Lua library needs to be compiled with compat support
しかし、
# yum install lua-devel
・・・
Package lua-devel-5.1.4-4.1.el6.x86_64 already installed and latest version
あれ?入っているのか?
# yum  install   lua
・・・
Package lua-5.1.4-4.1.el6.x86_64 already installed and latest version
設定がおかしいらしい。
# export LUA_CFLAGS=’-I/usr/include -lm -ldl’
は、
# ls -l  /usr/include/lua*
-rw-r–r– 1 root root 11688 8月 19 15:15 2010 /usr/include/lua.h
-rw-r–r– 1 root root 191 8月 19 15:15 2010 /usr/include/lua.hpp
-rw-r–r– 1 root root 22128 8月 19 15:15 2010 /usr/include/luaconf.h
-rw-r–r– 1 root root 1026 8月 19 15:15 2010 /usr/include/lualib.h
ふむ
export LUA_LIBS=’/usr/lib/liblua.a’
ls -l /usr/lib/liblua*
ls: cannot access /usr/lib/liblua*: そのようなファイルやディレクトリはありません
これらしい。
# find / -name liblua.a -print
/usr/lib64/liblua.a
x86_64入れたからな、仕方がない。
# export LUA_LIBS=’/usr/lib64/liblua.a’
# ./configure && make && make install
・・・
make[1]: ディレクトリ `/root/lsyncd-2.1.4′ から出ます
インスト完了。
あ、yumでできたんじゃないのかな?
# yum list  lsyncd
Available Packages
lsyncd.x86_64 2.1.4-1.el6.rf rpmforge
あるじゃないか
# grep uninstall: Makefile
uninstall: uninstall-am
# make  uninstall
( cd ‘/usr/local/bin’ && rm -f lsyncd )
( cd ‘/usr/local/share/doc/lsyncd/’ && rm -f lbash.lua lecho.lua lgforce.lua limagemagic.lua lpostcmd.lua lrsync.lua lrsyncssh.lua )
( cd ‘/usr/local/share/man/man1’ && rm -f lsyncd.1 )
手で打てってことらしい。
# cd ‘/usr/local/bin’ && rm -f lsyncd
cd ‘/usr/local/share/doc/lsyncd/’ && rm -f lbash.lua lecho.lua lgforce.lua limagemagic.lua lpostcmd.lua lrsync.lua lrsyncssh.lua
cd ‘/usr/local/share/man/man1’ && rm -f lsyncd.1
ちゃんとuninstallできたかな?
# /etc/rc.d/init.d/lsyncd start
-bash: /etc/rc.d/init.d/lsyncd: そのようなファイルやディレクトリはありません
多分OK。
# yum install  lsyncd
Running Transaction
Installing : lsyncd-2.1.4-1.el6.rf.x86_64 1/1
Verifying : lsyncd-2.1.4-1.el6.rf.x86_64 1/1
Installed:
lsyncd.x86_64 0:2.1.4-1.el6.rf
lsyncd-2.1.4.tar.gz が無駄になったがこれでいいのだろう。

# rm -rf lsyncd*

最初から、yum install  lsyncd でやっておけば、何も苦労は無かったに違いない。
/etc/rc.d/init.d/lsyncd start
/etc/rc.d/init.d/lsyncd: line 23: /etc/sysconfig/lsyncd: 許可がありません
lsyncd を起動中: Warn: settings = { … } is deprecated.
please use settings{ … } (without the equal sign)
Error: error preparing /etc/lsyncd.conf: Parameter “rsyncOps” unknown. (if this is not a typo add it to checkgauge)
謎のメッセージだが、
# chmod +x /etc/sysconfig/lsyncd
vi /etc/lsyncd.conf
で、rsyncOpsの行を削除したら動き出した。
とファイルをアップすると、
lsyncd を起動中: Warn: settings = { … } is deprecated.
please use settings{ … } (without the equal sign)
settings = { の = が無駄らしい。
なんか特殊なバージョンなようだ。
マニュアルも読んでみる。ここで気が付く、2.0.x と 2.1.x でマニュアルが違っている。
さっきのconfの書き方は2.0.x用
な訳で、まだ rpmforge のはイマイチなので、またDLしてソースから・・・
適当に設定しいざ動かしてみる。
パソ側のDeltaCopy は rsyncのssh未対応。サードパティのSSH入れてくれと書いてある。
それは何故か?WindowsでSSHサーバーを立てるのが難しいからだ。
同様にcwRsync Serverも失敗。それに、こっちはサービス登録時のインストーラでアカウントを登録しないといけないから、パスワードを変えるのが面倒だ。
で、Windows7のHyper-Vでもう一台CentOS6.4を作ってみる。
バックアップ先にもrsync,sshなどが一式必要なので、不足分を見つけて追加するのは結構面倒。
# yum -y groupinstall “Base” “Development tools”
でドット入れた方がマシ。
あと公開暗号キーの転送ディレクトリィ(/root/.ssh)は手で作らないといけないようだ。
# mkdir /root/.ssh
その後、scpで転送。
/var/www以下は2.8Gバイトあったけど、
*** 10 23:09:13 ** Normal: recursive startup rsync: /var/www/ -> *.*.*.*:/var/www/
*** 10 23:22:16 ** Normal: Startup of “/var/www/” finished: 0
約15分ほどでバックアップ終了。
TOPで見る限るCPU 75%idだったりするので、もっと早くできるのかもしれないが、バックアップ中はBlogが重いのは本末転送。
※実際、バックアップ中に記事を書くとなんか重い気がする。
 
画像をアップしたり消したりすると、
Wed Apr 10 23:25:39 2013 Normal: Rsyncing list
/blogHtml/wp-content/uploads/2013/04/ASUS-EPU.bmp
Wed Apr 10 23:25:40 2013 Normal: Finished (list): 0
Wed Apr 10 23:26:24 2013 Normal: Deleting list
/var/www//blogHtml/wp-content/uploads/2013/04/ASUS-EPU.bmp
Wed Apr 10 23:26:25 2013 Normal: Finished (list): 0
と、追従してくるので非常にありがたい。
WordPressのDBバックアップ機能で自動バックアップができればそれも一緒に転送してくれる。
どうやら、rpmforgeのlsyncd 2.1.xのパッケージングは今一の様だけど、
ソースならちゃんと使えます。(笑
 
後で気が付いたけど、転送先の/etc/rsync.confの設定は必要ではなかった。

/etc/lsyncd.confの設定は・・・

settings {

statusFile = “/var/log/lsyncd.stat”,

statusInterval = 1,

logfile = “/var/log/lsyncd.log”,

}

sync{

default.rsyncssh,

source=”/var/www/”,

host=”*.*.*.*”,

targetdir=”/backup/var/www/”,

}

sync{

default.rsyncssh,

source=”/etc/”,

host=”*.*.*.*”,

targetdir=”/backup/etc”,

}

な感じにしてみた。
手元が狂うと転送先を簡単に破壊できそうです。(恐
また、この設定の仕方では、lsyncdを常時起動する必要もなかった。
lsyncd  をstop⇒startの間の変更も反映していた。
だがTeraTermから操作していたせいかもしれない。
記事を書いている間に画像をUPした場合は気が付かなかった。
回線がつながらないとか、転送先のディレクトリが存在しないとか、な理由で凹んで寝てしまう。
とか、特徴がありますね。




top