CentOS6.6でyumから入れるとバージョンは1.8.7とかなり古いのでrubyを入れるためrbenvからインストールする。
まずはgitをインストールする
# yum install git
自分の環境だけに(ログインしているユーザーのみ)インストールしたいので、普段使っているユーザーでログイン後
$ git clone https://github.com/sstephenson/rbenv.git ~/.rbenv
rbenv のコマンドラインツールを利用できるように
$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
$ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
ここで一度ログアウトする。私は仮想環境でホストを作りそこにインストールをしているため、VNCでホストに入っているので、VNCからログアウト後、再ログイン
rbenvを確かめる
$ rbenv
rbenv 0.4.0-129-g7e0e85b
Usage: rbenv <command> [<args>]
以下略
$ git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
rubyをインストールする前に今後使うものをインストール
$ sudo yum install openssl-devel mysql-devel readline-devel
rubyのインストール。まずはインストールできるバージョンを調べる
$ rbenv install -l
かなり長いリスが表示されるのでgrepをつけ他方が見やすい。バージョン2があるのが判っていれば rbenv install -l|grep 2
ruby 2.2.0をインストールすことにする
$ rbenv install 2.2.2
おーっと、ここでエラーになった。エラーの内容は
Last 10 log lines:
make[3]: ディレクトリ `/tmp/ruby-build.20150213115701.3537/ruby-2.2.0/ext/fiddle/libffi-3.2.1' から出ます
linking shared-object fiddle.so
/usr/bin/ld: ./libffi-3.2.1/.libs/libffi.a(raw_api.o): relocation R_X86_64_32 against `.text'
can not be used when making a shared object; recompile with -fPIC
./libffi-3.2.1/.libs/libffi.a: could not read symbols: Bad value
collect2: ld はステータス 1 で終了しました
make[2]: *** [../../.ext/x86_64-linux/fiddle.so] エラー 1
make[2]: ディレクトリ `/tmp/ruby-build.20150213115701.3537/ruby-2.2.0/ext/fiddle' から出ます
make[1]: *** [ext/fiddle/all] エラー 2
make[1]: ディレクトリ `/tmp/ruby-build.20150213115701.3537/ruby-2.2.0' から出ます
make: *** [build-ext] エラー 2
どうやら libffi-devel が必要らしい。yumでインストール
$ sudo yum install libffi-devel
再度挑戦
$ rbenv install 2.2.2
今度は無事インストール出来たが、コンパイルしているのでものすごく時間がかかるので、気長に待つこと。
sambaのバージョンが4.1.16なったら、service samba startで起動しなくなった!
アップデートされたのは下記のプログラム
samba41-4.1.16-2.el6_23.wing.x86_64
samba41-libs-4.1.16-2.el6_23.wing.x86_64
samba41-client-4.1.16-2.el6_23.wing.x86_64
samba41-python-4.1.16-2.el6_23.wing.x86_64
samba41-dc-libs-4.1.16-2.el6_23.wing.x86_64
samba41-dc-4.1.16-2.el6_23.wing.x86_64
samba41-common-4.1.16-2.el6_23.wing.x86_64
それで、samba-tool domain provision を走らす。
全ての問い合わせに答えた後、
Looking up IPv6 addresses
ldb: module version mismatch in ../source4/dsdb/samdb/ldb_modules/acl.c : ldb_version=1.1.17 module_version=1.1.19
ldb: failed to initialise module /usr/lib64/samba/ldb/acl.so : Unavailable
Setting up secrets.ldb
centosのBASEレポにはないので、wingレポから持ってくるが、このままではBASEレポが優先されてしまうので、
/etc/yum.repos.d/CentOS-Base.repoを
[base]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
priority=1
enabled=0 ← これを追加し、BASEを無効にする
GUIのアップデートをするため、システム→管理→ソフトウェアの更新をクリック
ここで、httpd関連の二つと、postfix(私はpostgreyを入れているのでソースからコンパイルする必要があるので、
アップデートを止めてある)、sssd-common(これはlibldb(x86-64) = 1.1.13 を要求するが、sambaのために
1.1.16が入っているのでエラーになるため)のチェックを外し、更新をインストールをクリック、
終了後再び、samba-tool domain provision をもう一度走らし、問い合わせに答えた後は無事終了。
service samba start でsambaが走った。やれやれ
自分のサーバーからのメールが届いて入るので気がつかなかったが、外部からのメールが届かない。
自分のドメイン内のメールは送受信とも問題ない
この時のメールーのログ(/var/log/maillog)
Jan 20 13:58:08 web4 postfix/smtpd[10859]: connect from mm.e-trend.co.jp[221.253.81.58]
Jan 20 13:58:09 web4 postfix/smtpd[10859]: NOQUEUE: reject: RCPT from mm.e-trend.co.jp[221.253.81.58]:
554 5.7.1 Service unavailable; Client host [mm.e-trend.co.jp] blocked using rhsbl.ahbl.org; List shut down.
See: http://www.ahbl.org/content/last-notice-wildcarding-services-jan-1st;
from=<ds-id0i54rctffrl.febd91f4@mm.e-trend.co.jp> to=<f-otake@kinryokai.net> proto=ESMTP helo=<mm.e-trend.co.jp>
Jan 20 13:58:09 web4 postfix/smtpd[10859]: lost connection after RCPT from mm.e-trend.co.jp[221.253.81.58]
Jan 20 13:58:09 web4 postfix/smtpd[10859]: disconnect from mm.e-trend.co.jp[221.253.81.58]
Jan 20 14:00:27 web4 postfix/smtpd[11019]: connect from m112.secure.ne.jp[150.60.13.240]
Jan 20 14:00:28 web4 postfix/smtpd[11019]: 32390807B6: client=m112.secure.ne.jp[150.60.13.240]
Jan 20 14:00:28 web4 postfix/smtpd[11019]: disconnect from m112.secure.ne.jp[150.60.13.240]
送信相手に帰ったエラーメッセージ
Hi. This is the qmail-send program at m112.secure.ne.jp.
I'm afraid I wasn't able to deliver your message to the following addresses.
This is a permanent error; I've given up. Sorry it didn't work out.
<f-otake@kinryokai.net>:
218.219.246.130 does not like recipient.
Remote host said: 554 5.7.1 Service unavailable; Client host [m112.secure.ne.jp] blocked using rhsbl.ahbl.org; List shut down.
See: http://www.ahbl.org/content/last-notice-wildcarding-services-jan-1st
Giving up on 218.219.246.130.
# gedit /etc/postfix/main.cf
smtpd_client_restrictions =
permit_mynetworks,
reject_non_fqdn_sender,
reject_non_fqdn_recipient,
reject_unknown_client,
reject_rbl_client all.rbl.jp,
reject_rbl_client zen.spamhaus.org,
reject_rbl_client bl.spamcop.net,
# reject_rhsbl_client rhsbl.ahbl.org, → コメントアウトする
check_client_access hash:/etc/postfix/access,
permit
# service postfix restart
これで外部からメールが来るようになった
現行のサーバーのバックアップを作っている時の事、特定のホスト間でpingが出来ない。
それぞれのホストではルーターへのpingも通るし、だからインターネットも出来ている。
結論はMACアドレスの重複。
何でこうなったか。KVMのサブホストを作るのに一からやるのはしんどいので、現行のホストの設定ファイルをコピーしてきた。
(/etc/libvirt/qemuにあるサブホスト名.xml)
ホスト名とIPアドレスがかぶるのは分かって居たので変更をしたが、これ以外にも
サブホストのUUIDと仮想ネットワークカードのMACアドレスもかぶっている。
これらを適当に変更したらOKになった。でも数時間無駄にした。
教訓:KVMのサブホストをコピーしたら、
サブホストのUUID、ホスト名、NICのMACアドレス、IPアドレス
を変更する事
もう少し詳しく書くことにする(2016-5-29追記)
まずはサブホストのUUIDとMACアドレスの重複から、
仮想化で無ければMACアドレスがかぶることは無いが(ネットワークICのベンダーとシリアルでかぶることは無い)
サブホストの設定ファイルを /etc/libvirt/qemu/XXXXX.xml 等からコピーをしたら、この中にMACアドレスが書いてあるので、必ず重複する。
まずはその解決方法。コピーした時に定義が反映していないときがあるので(必ずサブホストは止めておく)
# virsh define /etc/libvirt/qemu/xxxx.xml
で定義をしておく。次に定義ファイルの編集
# virsh edit 定義ファイル名(xxxx.xmlの .xml を取ったもの)
これで vi と同じ方法で編集できますので、
a でインサートモードにし、カーソルで該当個所に行き、不要な部分を削除し、そこに新しい分を追記し、escキー, w, q と連続して入力すると編集後の分が定義され保存されます。
念のため、再度
# virsh define /etc/libvirt/qemu/xxxx.xml
で定義し直し(多分やらなくてもいいかも)サブホストを 仮想マシンマネージャーから起動すると新しいUUIDとMACアドレスになっています。
ここでMACアドレスは XX:XX:XX:ZZ:ZZ:ZZ になっていますが、最初の XX:XX:XX はベンダーID(KVMの仮想化の場合 52:54:00 です、次の ZZ:ZZ:ZZ がシリアルですので、他のホストとかぶらないように適当に決めます)
次にホスト名(仮想マシンマネージャー上の名前ではなく、サブホスト自身の名前)と IPアドレスを変更しますが、これはサブホストのファイルを変更する必要がありますが、KVMは領域の中にさらに領域を作っていますので、メインのホストにマウントするには(編集の為に)コツがいります(もちろんサブホストは止めておく)
これには losetup と kpartx を使っていきます。私はLVMを使っていますので# losetup -f
で使えるloop番号を調べ
# losetup /dev/loop番号 /dev/ボリューム名/サブホストに割り当てたLV名
# kpartx -a /dev/loop番号
さらに
# ls /dev/mapper
でmapperにあるファイルが表示されますので、その中に loop番号p1 などがあります。
これをマウントしますが、私はtestようのマウント場所を作っています(/test1,/test2)
# mount /dev/mapper/loop番号p1 /test1
サブホストの名前は
# gedit /test1/etc/sysconfig/network
抜粋
HOSTNAME=設定したいサブホストの名前
で保存後、IPアドレスは(私は固定IPで、NetworkManager は使っていません)
# gedit /test1/etc/sysconfig/network-scripts/ifcfg-eth0
抜粋
IPADDR=192.168.XX.XX
で後始末
# umount /test1
# kpartx -d /dev/loop番号
# losetup -d /dev/loop番号
それから再起動すればいい筈だったが、ブートでエラー(画像3)
これは前にも経験がある、多分MACアドレスをいじったために出たと思うが、/etc/udev/rules.dにある 70-persistent-net.rulesを削除し、
再起動すれば、自動でこのファイルを作ってくれるので正常に起動する
ある時、バックアップ用に今動いているサーバーと同じ型番のマザーボード(ASRockのAM1H−ITX)で新規インストールをしていた時のエラー。
このエラーどうもブートするDISKを間違えているみたいなので、まずはBIOSの設定を確かめる(このマザーは”DEL”でBIOSに)
案の定二つあるHARD DISK のOSをインストールしていないDISKからの起動になっていたので、変更し再起動。
今度は GRUB で止まったまま、ウンでもスンでもない。
困ったときはレスキューモードの起動。早速インストールDVDから起動。
画面が出たら上から三番目の Resucure installed system を選び起動、
最初に言語の選択、これは英語のままの方がいい。次がキーボードの選択、自分に合わせるがだいたいは jp106。次はネットワークだが、
今回はブートの問題なのでネットワークは無。その次の画面で Continue を選び。
次の画面で既存の領域が /mnt/sysimage にマウントされると表示が出る(確か2回出た気がする)
そして選択画面が出るので Shell Start Shell を選ぶとシェルになる。(確かパスワードは聞かれなかった)
早速、インストールされた領域に移る
# chroot /mnt/sysimage
でもって、grubの再構築
# grub-install /dev/sda
sdaは自分の環境に合わせる。
ごちょごちょと表示が出て(覚えていない)/boot/grub/device.map が表示されるが、ここが
(hd1) /dev/sda
(hd0) /dev/sdb
になっている。hd1などの定義をしているのは、多分昔からの互換性の為だと思う。
ともかくhd0がsdaでなくてはいけないので、vi(エディター、使い方は色んなWEBを参考にして) を起動し
(hd0) /dev/sda
(hd1) /dev/sdb
に変更し,保存後再起動。
今度は Cannot mount selected partition と出た。
再度、レスキューモードで起動後、chroot してから vi で /boot/grub/grub.conf を編集
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You do not have a /boot partition. This means that
# all kernel and initrd paths are relative to /, eg.
# root (hd1,0) ここも本来は hd0,0だがコメントなので直していない
# kernel /boot/vmlinuz-version ro root=/dev/sda1
# initrd /boot/initrd-[generic-]version.img
#boot=/dev/sdb ここも本来は sdaだがコメントなので直していない
default=0
timeout=5
splashimage=(hd0,0)/boot/grub/splash.xpm.gz (hd1,0)から(hd0,0)に
hiddenmenu title CentOS (2.6.32-431.el6.x86_64)
root (hd0,0) (hd1,0)から(hd0,0)に
kernel /boot/vmlinuz-2.6.32-431.el6.x86_64 ro root=UUID=4c914c3c-7ad5-4056-982a-2b2f75fcef48 rd_NO_LUKS
rd_LVM_LV=Swap/kvm5 rd_NO_MD crashkernel=auto KEYBOARDTYPE=pc KEYTABLE=jp106 LANG=ja_JP.UTF-8 rd_NO_DM rhgb quiet
initrd /boot/initramfs-2.6.32-431.el6.x86_64.img
教訓:インストール時は最低のシステムで行い、いろいろな物は付け無い方がいい
今回はHARD DISKは1台だけであればトラブルは起きなかった筈。
確かサーバー製作でOSのインストール時、CentOS 6.5 はドライバーのインストールを尋ねられ、仕方なく6.4のLIVE DVDからインストールした。
今回は理由は不明だが、インストール出来た。マザーボードのバージョンが変わったか?
本日(2014/06/26)サーバー製作で制作中のKVMホストでアップデートがあったので、行ったらネットワークに繋がらなくなってしまった。kernelのアップデートも含まれており、アップデート後のOSのバージョンはLinux version 2.6.32-431.20.3.el6.x86_64になっていた。
途方に暮れていたら閃いた。そう言えば最初のインストールの時にr8169ネットワークドライバーがインストールされ、ネットにつながらなかった。多分KERNELのアップデート時に間違って再インストールされたのでは?さっそく調べる
# lsmod | grep r81
r8169 59831 0
mii 5376 1 r8169
と表示されやっぱりr8169がインストールされている。原因が分かれば後は簡単。ダウンロードしてあったr8168ドライバーをインストールする。(ドライバーのありかは https://www.kinryokai.net/modules/news/article.php?storyid=21 を参照)
# cd ダウンロードしてある場所
# ./autorun.sh
Check old driver and unload it.
rmmod r8169
Build the module and install
Backup r8169.ko
rename r8169.ko to r8169.bak
DEPMOD 2.6.32-431.20.3.el6.x86_64
load module r8168
Completed.
REALTEKのドライバーはスクリプトになっていて、r8169がインストールされて入れば、自動で削除してくれる。
ある時KVMを使いメインになるホストを設定している時にバックアップを取っておきたかったのでDDコマンドで複製をした。
その後、tripwireやアンチウィルスなどのソフトをインストールし、何度か再起動をした。変更をする度にDDコマンドでバックアップを取っておいた(Live CDで起動しコピー)。そして再起動すると、最初の状態(何のソフトもインストールされていない状態。つまり最初の状態)になってしまった。
原因はDDコマンドではUUIDもコピーされ同じUUIDが二つ出来てしまったから
/etc/fstab には例によってルートの指定はUUIDでしているので、多分2回目の再起動時に指定されたディスク領域は最初の分と変化し(最初は /dev/sda1 バックアップは /dev/sda2 のつもりだった)sda2を使っていたものと思われる。なのでソフトを入れた分は sda2 でも自分では sda1 だと思っていた。なので dd if=/dev/sda1 of=/dev/sda2 とするとデフォルト状態のsda1がソフトを追加したsda2に書き込まれ、今までの作業が水の泡!!
考えて見れば dd コマンドでUUIDを同じにするのは当たり前で、だからディスクを入れ替えても同じように起動するのだ!
でも気がつかなかった俺が悪い。教訓:dd でコピーし両方を使いたい時は
# tune2fs -U random /dev/sda2
としUUIDを変更すること(sda2は自分の環境に合わせて)
その後
# blkid
で確認するとUUIDが変更されている
OSはcentos 6.4
PhpMyAdminにログインすると、mcrypt 拡張がありません。PHP の設定をチェックしてみてください。とエラーが出るようになった。
確かインストールしている筈。WEBでphpinfoを見れるようにしてチェックすると、Additional .ini files parsed にはmycrypr.iniは表示されている。
色々ググると http://centossrv.com/patio/patio.cgi?read=2546&ukey=0 に回答があった。/etc/php.d/mrcrypt.iniが間違えているバグみたい。
; Enable mcrypt extension module
extension=mcrypt.so ←右辺を変更
に変更し、httpdをリスタートするとエラーは表示されなくなった。
再度phpinfoをチェックすると、以前には無かった、Registered Stream Filters にも mcrypt.* が表示されていた。
gnomeのディスクトップの下にあるパネル(windowで言うタスクバー)を間違って消してまった。最初はこの事をgnomeでは何と言うか解からず、やっとパネルと呼ぶことが解かった。そう下に表示されているパネルを間違って削除してしまっていた.と言うことでその追加方法。
1:上のパネルの空いている所で、右クリックし、新しいパネル(N)を選ぶ。下にパネルが追加されたが、その他の場所ならドラッグして移せる。
2:出来たパネルの空きスペースで右クリック後、パネルへ追加(A)...を選び、必要な物を選んでいく。
A:デフォルトで一番左に表示されるディスクトップ表示は、"ディスクトップの表示"
B:その右は、"ウィンドウ一覧"
C:一番右は、"ごみ箱"
D:その左は、"ワークスペース切替器"
位置をずらしたい時は、そこを右クリックで移動を選び、マウスを動かし、左クリックするとその場所で固定される。
このホストはxenでバーチャルホストを組んでいるが、ドメイン0のネットワークが再起動後、使えなくなった。サブドメインにはwebサーバーがあるが、こちらは問題無く外部からアクセス出来る。dom0のみ問題がある。
gatewayにpingをIPアドレスで打つがunreachableになる。早速原因を考える。
1:ネットワークケーブルに問題がある → サブドメインは継っているので、ケーブルはOK
2:IPアドレスがあるか? → 固定IPの設定だし、ifconfigで見てもIPアドレスは設定されている
3:ルーターに問題がある → これもサブドメインはOKだから問題ない
4:DNSに問題がある → IPを指定してpingを打っているので、DNS関連では無い
5:GATEWAYが設定されていない → routeで調べて問題が無い(今回調べているときにdefault gatewayの表示が出るのがかなり遅かった。どこに書いてあったか失念したが、geatewayのホスト名を登録すると早くなるそうな。早速 /etc/hosts に gatewayであるルーターに名前を付けた(192.168.xx.xx Router))
6:firewallで拒否されている → 調べたが問題ない
問題ないじゃん!でも継らない!!
ログ(/var/log/messages)を見ると、received packet with own address as source address と大量に記録されていた。そのヒントが
http://www.asahi-net.or.jp/~aa4t-nngk/xen.htmlのdom0環境の確認にあった。
早速、設定ファイル(/etc/sysconfig/network-scripts/ifcfg-eth0)に
MACADDR=00:24:8C:xx:xx:xx
と追記し、(HWADDRでないことに注意)
# service network restart
とするとOKになった.後で判ったが、ifconfigでeth0のMACアドレスが 本来のネットワークICの物で無いといけないのにFE:FF:FF:FF:FF:FFになっていた。
dmesgで調べていたら
eth0: RTL8168b/8111b at 0xffffc2000003a000, fe:ff:ff:ff:ff:ff, XID 18000000 IRQ 254
が有った。これが原因でMACがおかしかったみたい。又,RTL8168bがNICのICでMACの指定が fe:ff:....。でも何で fe:...になるかは不明。