hnakamur’s blog

ものすごい勢いで忘れる私のために未整理でもいいからとりあえずメモ

2008-12-31

クーポンにつられてebookを2冊購入



35%オフのクーポンが今日で切れるというメールにつられて購入。


The Pragmatic Bookshelf | Hello, Android


Hello, Android: Introducing Google's Mobile Development Platform


The Pragmatic Bookshelf | iPhone SDK Development


iPhone SDK Development





John Resigさんの本『Secrets of the JavaScript Ninja』を購入



Manning: Secrets of the JavaScript Ninja


Secrets of the Javascript Ninja


early access editionなのでまだ一部の章しかありませんが、さすがjQueryのJohn Resigさんの著書だけあって深いです。





2008-12-27

IETester



IETesterですが、早速Vista+IE7の環境で試してみた。v0.2.3です。新しいタブを開くときにIEのバージョンを5.5/6/7/8beta2から選べます。ちょっと動かしてみたところではいい感じですね。


2008-12-31 追記


当初はIE8beta2のタブも機能していたと思うんですが(うろ覚え)、気づいたらタブは作れるんだけどURLでローカルのパスを指定しても読み込んでくれなくなってしまいました。まだアルファ版らしいのでしかたないかな。





『現場のプロから学ぶXHTML+CSS』を読んだ



現場のプロから学ぶXHTML+CSS


現場のプロから学ぶXHTML+CSS


帰省の新幹線内で一気読みした。現場のプロの技をまとまった形で読めるというのはありがたいです。


IETesterなど知らないツールも紹介されていたので試してみたいところ。





2008-12-17

OpenVZでCentOS5をゲストOSとしてセットアップの続き



昨日の記事の続きです。


検索してみると



というページを発見。


まねしてやってみる。



# vi /vz/template/centos/5/x86_64/config/install-post
===================================================================
--- /vz/template/centos/5/x86_64/config/install-post 2008/12/17 15:14:07 1.1
+++ /vz/template/centos/5/x86_64/config/install-post 2008/12/17 15:25:17 1.4
@@ -35,10 +35,10 @@
$VZCTL exec2 $VEID sed -i -e '/getty/d' /etc/inittab

# Disable klogd
-$VZCTL exec2 $VEID \
- "sed -i -e 's/daemon\\ klogd/passed\\ klogd\\ skipped/' \
- -e 's/killproc\\ klogd/passed\\ klogd\\ skipped/' \
- /etc/init.d/syslog"
+#$VZCTL exec2 $VEID \
+# "sed -i -e 's/daemon\\ klogd/passed\\ klogd\\ skipped/' \
+# -e 's/killproc\\ klogd/passed\\ klogd\\ skipped/' \
+# /etc/init.d/syslog"
# FIXME: fix '/etc/init.d/syslog status' to return 0
# even if klogd is not running

@@ -55,7 +55,7 @@
# Disable fsync() in syslog
$VZCTL exec2 $VEID \
'sed -i -e s@\\\([[:space:]]\\\)\\\(/var/log/\\\)@\\\1-\\\2@' \
- /etc/syslog.conf
+ /etc/rsyslog.conf

# Disable X11Forwarding by default
$VZCTL exec2 $VEID \
@@ -85,3 +85,5 @@
#echo "Rebuilding RPM DB ..."
#$RPM --root $VE_ROOT --rebuilddb
#rm -f $VE_ROOT/var/lib/rpm/__db.0*
+
+mkdir -p $VE_ROOT/var/lib/yum || abort "Can't create /var/lib/yum"
===================================================================
# vzpkgcache -f centos-5-x86_64-minimal
...


しかし、やはり



could not open ts_done file: [Errno 2] No such file or directory: '/vz/root/100001/var/lib/yum/transaction-done.2008-12-18.00:31.05'


のようなエラーが連発しているので、別の端末から手動で



# mkdir -p /vz/root/100001/var/lib/yum


として作成。


その後



...
Complete!
chmod: cannot access `/etc/cron.daily/slocate.cron': No such file or directory
chmod: cannot access `/etc/cron.daily/makewhatis.cron': No such file or directory
Packing cache file centos-5-x86_64-minimal.tar.gz ...
Cache file centos-5-x86_64-minimal.tar.gz [129M] created.
#


となって一応終了。cron.dailyでエラーが出てますがInstall OpenVZ on a x86 64 system Centos-Fedora - OpenVZ Wikiにも



It finishes with complaints about cron.daily, but don't worry about it.



と書いてあるので気にしないことにします。


で、そのページの続きに従って実行。あとBasic operations in OpenVZ environment - OpenVZ Wikiも見つつ。



# vzpkgls -c
centos-5-x86_64-minimal
# vzctl create 200 --ostemplate centos-5-x86_64-minimal
Creating container private area (centos-5-x86_64-minimal)
Performing postcreate actions
Container private area was created



# vzctl create 200 --ostemplate centos-5-x86_64-minimal
# vzctl start 200


パッケージインストールのテスト。fastestmirrorが効いてなくて遅いミラーを選んでしまったようで1分程度かかったが成功。



# vzyum 200 install nano
# vzrpm 200 -qa



# vzctl set 200 --ipadd 192.168.1.101 --save
# vzctl set 200 --nameserver 192.168.1.1.1 --save
# vzctl stop 200
# vzctl start 200
# vzctl exec 200 ps ax
PID TTY STAT TIME COMMAND
1 ? Ss 0:00 init [3]
9513 ? Ss 0:00 /usr/sbin/sshd
9524 ? Rs 0:00 ps ax
# vzctl enter 200
# ps ax
PID TTY STAT TIME COMMAND
1 ? Ss 0:00 init [3]
9513 ? Ss 0:00 /usr/sbin/sshd
9526 ? Ss 0:00 vzctl: pts/0
9527 pts/0 Ss 0:00 -bash
9542 pts/0 R+ 0:00 ps ax
# exit
# vzctl stop 200


てなわけでとりあえず動きました!





2008-12-16

OpenVZを試す、が、まだうまくいかない



Linux-VServerはバニラカーネルへのパッチとして提供されていて、パッチあたりまくりのCentOSだとうまく当たらないし、そうかといってバニラカーネル+Linux-VServerにしてしまうとCentOSとは別物になってしまってCentOSの検証環境としては使えないなあと悩んでいて以下のページを見つけました。



そうかOpenVZならCentOSのカーネルにも対応していたのか(もっと早く気付けよ>私)。ということでトライしてみました。



# cd /etc/yum.repos.d/
# wget http://download.openvz.org/openvz.repo
# rpm --import http://download.openvz.org/RPM-GPG-Key-OpenVZ
# yum search ovzkernel
# yum install ovzkernel.x86_64
# vi /etc/sysctl.conf
===================================================================
RCS file: /etc/sysctl.conf,v
retrieving revision 1.1
diff -u -r1.1 /etc/sysctl.conf
--- /etc/sysctl.conf 2008/12/16 16:13:56 1.1
+++ /etc/sysctl.conf 2008/12/16 16:15:34
@@ -4,15 +4,19 @@
# sysctl.conf(5) for more details.

# Controls IP packet forwarding
-net.ipv4.ip_forward = 0
+net.ipv4.ip_forward = 1
+net.ipv4.conf.default.proxy_arp = 0

# Controls source route verification
+net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1
+net.ipv4.conf.default.send_redirects = 1
+net.ipv4.conf.all.send_redirects = 0

# Do not accept source routing

# Controls the System Request debugging functionality of the kernel
-kernel.sysrq = 0
+kernel.sysrq = 1

# Controls whether core dumps will append the PID to the core filename
# Useful for debugging multi-threaded applications
===================================================================
# sysctl -p
net.ipv4.ip_forward = 1
net.ipv4.conf.default.proxy_arp = 0
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.send_redirects = 1
net.ipv4.conf.all.send_redirects = 0
kernel.sysrq = 1
kernel.core_uses_pid = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 68719476736
kernel.shmall = 4294967296
net.ipv4.tcp_syncookies = 1
net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv4.conf.eth0.accept_redirects = 0
net.ipv4.conf.lo.accept_redirects = 0
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.default.accept_source_route = 0
net.ipv4.conf.eth0.accept_source_route = 0
net.ipv4.conf.lo.accept_source_route = 0

# reboot
uname -r
2.6.18-92.1.13.el5.028stab059.6
# yum install vzctl vzctl-lib vzpkg vzquota vzyum vzrpm43 vzrpm43-python vzrpm44 vzrpm44-python
oading "fastestmirror" plugin
Loading mirror speeds from cached hostfile
* addons: ftp2.riken.jp
* extras: ftp2.riken.jp
* base: ftp2.riken.jp
* openvz-kernel-rhel5: ftp.iij.ad.jp
* openvz-utils: ftp.iij.ad.jp
* updates: ftp2.riken.jp
Setting up Install Process
Parsing package install arguments
Resolving Dependencies
--> Running transaction check
---> Package vzctl.i386 0:3.0.23-1 set to be updated
---> Package vzpkg.noarch 0:2.7.0-18 set to be updated
---> Package vzrpm44-python.i386 0:4.4.1-22.5 set to be updated
---> Package vzquota.i386 0:3.0.12-1 set to be updated
---> Package vzyum.noarch 0:2.4.0-11 set to be updated
--> Processing Dependency: cElementTree.so for package: vzyum
---> Package vzrpm43-python.i386 0:4.3.3-7_nonptl.6 set to be updated
---> Package vzrpm44.i386 0:4.4.1-22.5 set to be updated
---> Package vzctl.x86_64 0:3.0.23-1 set to be updated
---> Package vzquota.x86_64 0:3.0.12-1 set to be updated
---> Package vzrpm43.i386 0:4.3.3-7_nonptl.6 set to be updated
---> Package vzctl-lib.i386 0:3.0.23-1 set to be updated
---> Package vzctl-lib.x86_64 0:3.0.23-1 set to be updated
--> Finished Dependency Resolution
Error: Missing Dependency: cElementTree.so is needed by package vzyum


おおっとなんかエラーが。


で、検索したら本家のドキュメントに行き着く(最初からこちらを見ようね>私)。



というわけで続き。



# yum install vzctl vzquota
# /sbin/service vz start
# /sbin/chkconfig --list vz
# wget http://linux.carreira.com.pt/ovzutils/setx86_64-0.3.tar.gz
# tar zxf setx86_64-0.3.tar.gz
# sh setx86_64
# vi /vz/template/centos/5/x86_64/config/.rpmmacros
===================================================================
RCS file: /vz/template/centos/5/x86_64/config/.rpmmacros,v
retrieving revision 1.1
diff -u -r1.1 /vz/template/centos/5/x86_64/config/.rpmmacros
--- /vz/template/centos/5/x86_64/config/.rpmmacros 2008/12/16 16:34:18 1.1
+++ /vz/template/centos/5/x86_64/config/.rpmmacros 2008/12/16 16:34:35
@@ -1 +1 @@
-%_install_langs C
+%_install_langs C:ja_JP.UTF-8
===================================================================

# vzpkgls | grep x86_64
fedora-7-x86_64-small
fedora-7-x86_64-default
fedora-7-x86_64-minimal
fedora-core-5-x86_64-default
fedora-core-5-x86_64-minimal
fedora-core-3-x86_64-default
fedora-core-3-x86_64-minimal
fedora-core-6-x86_64-default
fedora-core-6-x86_64-minimal
fedora-core-4-x86_64-default
fedora-core-4-x86_64-minimal
centos-5-x86_64-default
centos-5-x86_64-minimal
centos-4-x86_64-default
centos-4-x86_64-minimal
# vzpkgcache -f centos-5-x86_64-minimal
...
Installing: libgcc ####################### [ 1/87]
could not open ts_done file: [Errno 2] No such file or directory: '/vz/root/100001/var/lib/yum/transaction-done.2008-12-17.01:43.38'
Installing: setup ####################### [ 2/87]
could not open ts_done file: [Errno 2] No such file or directory: '/vz/root/100001/var/lib/yum/transaction-done.2008-12-17.01:43.38'
...
Complete!
sed: can't read /etc/init.d/syslog: No such file or directory
ERROR: Script install-post failed


途中で/vz/root/100001/var/lib/yum/というディレクトリが無いっぽいエラー連発。最後にもエラーが。なんか間違えたかな。


調べてみると/vz/root/まではあるがその下はないようだ。/etc/init.d/syslogのほうはあるんだけどな。続きはまた今度。





2008-12-15

HP-ProLiant-ML115 G5購入



ついにサーバーマシンを買ってしまいました。coLinuxとLinux-VServerという2段仮想は初心者にはつらいし、CentOSはカーネルにパッチあたりまくりでcoLinuxもLinux-VServerもバニラカーネルへのパッチが基本なようなので、これはもうサーバーマシンを買った方が早いだろうと思ったのがきっかけです。


ウェブで情報収集して検討した結果、HP-ProLiant-ML115 G5にしました。まとめサイトHP-ProLiant-ML115 G5がとても参考になりました。先駆者のみなさまに感謝です。


購入費用は







PCHP-ProLiant-ML115 G5¥13,750NTT-X Store
RAMCFD ELIXIR W2U800CQ-2GL5J 2GBx2¥3,480ドスパラ
モニタ中古15インチ¥4,000ソフマップ
 合計¥21,230 


でした。土曜の深夜に情報収集始めて日曜の昼過ぎにNTT-X Storeでポチって、秋葉原に行ってRAMとモニタを買って(本当は安いキーボードも買ったけどProLiantに同梱されてて無駄になったのはナイショ)、月曜の夜にはProLiantが届きました。


静音性重視でHP ProLiant ML110 G5にしようかとも迷ったのですが(中古パソコンとパソコンパーツの通販ショップGENOで¥11,490と安かったし)、やっぱりこっちにしました。


ファンの音はそこそこしますが、そのうち慣れるでしょう(と期待)。





2008-12-05

bcapabilitiesにSYS_CHROOTを追加したらホストからゲストにsshできた



ホストからゲストにsshできないの続きです。


util-vserver:Capabilities and Flags - Linux-VServerを見て



SYS_CHROOT


という内容で/etc/vservers/vserver1/bcapabilitiesファイルを作成してからvserver1起動して、ホストからゲストにsshしてみるといけましたよ!


util-vserver:Capabilities and Flags - Linux-VServerのページはここ数日何回か見てたんだけどdefault bcaps are:というところにSYS_CHROOTが含まれているし、/etc/vservers/vserver1/bcapabilitiesファイルは無いからデフォルトになってるんだろうな、と思って試してなかったのですが、明示的に指定すれば行けたってことですね。


となるとreducecap --showで表示された情報ってのもなんだったのか。あれはホストで実行するとホストのcapabilitiesを表示しているのかな?これも要調査。というかまだまだ基本的なところがわかってないな。


まあ何はともあれ一歩前進。





2008-12-04

ホストからゲストにhttpではアクセスできた







guest# yum install httpd
guest# /etc/init.d/httpd start
guest# echo 'It works' > /var/www/html/index.html
guest# wget http://192.168.0.3/


でまず自分自身では取得できた(192.168.0.3はguestのIPアドレス。lo(loopback)が無い状態なのでlocalhostとは指定できない状況)


次にホストから



host$ wget http://192.168.0.3/


でも取得できた。





ホストからゲストにsshできない




  • ホスト: Debian etch

  • ゲスト: CentOS 5.2


ホストからゲストにsshで入ろうとすると



$ ssh 192.168.0.3
Read from socket failed: Connection reset by peer
$


となってしまいます。


ゲストの/var/log/secureには



Dec 3 16:58:51 vserver1 sshd[4587]: fatal: chroot("/var/empty/sshd"): Operation not permitted


という行ができてた。


Capabilities and Flags - Linux-VServerのSystem capabilities (bcaps) のSYS_CHROOTが無いのかなと思ったけどutil-vserver:Capabilities and Flags - Linux-VServerを見てもデフォルトで入ってるらしい。/etc/vservers/vserver1/にbcapabilitiesというファイルは無い状態なのでデフォルト値になってるはず。


vserver development mailing list: [Vserver] "Defaults Caps of chcontext" and whish listというページでreducecapというコマンドの存在を知り(dpkg -S /usr/sbin/reducecapによるとutil-vserverパッケージに含まれる)、ホストで実行してみると



# reducecap --show
Capability Effective Permitted Inheritable
...
CAP_SYS_RAWIO X X


となるので、やはり許可されているようだ。


今後さらに調査が必要ということで一旦棚上げ。





2008-12-03

Debianにはデフォルトではwheelグループが無い



新山 祐介さん著の入門OpenSSHサポートページ)で/etc/sudoersでwheelグループに対して許可を与える設定を使っているというのを呼んでまねしようとしたのですが(私はそれまでは直接ユーザーに許可を与えていた)、CentOSではwheelグループがあるのにDebianには無いことに気づきました。


検索するとDebian referenceに9.2.2 "Why GNU su does not support the wheel group"という節があることを発見。じゃあadmグループで代用するのかと思いきや、Securing Debian Manualに4.10 Providing secure user accessという節があり、wheelグループを追加するのがもっともきれいな方法だとされている。


で、/etc/pam.d/suを見ると以下のようなセクションがある。



# Uncomment this to force users to be a member of group root
# before they can use `su'. You can also add "group=foo"
# to the end of this line if you want to use a group other
# than the default "root" (but this may have side effect of
# denying "root" user, unless she's a member of "foo" or explicitly
# permitted earlier by e.g. "sufficient pam_rootok.so").
# (Replaces the `SU_WHEEL_ONLY' option from login.defs)
# auth required pam_wheel.so


とりあえず



auth required pam_wheel.so group=wheel


と書き換えた後、



# addgroup --gid 11 wheel
# usermod -a -G wheel root
# usermod -a -G wheel rails # railsはsudoを許可したい一般ユーザー


を実行して(wheelのgidはCentOS5では10だが/etc/groupを見るとuucpにとられていて10の次は12だったので11にしてみた)



# su - rails
$ sudo whoami
Password:
rails is not in the sudoers file. This incident will be reported.


と試してみたがエラーになった。


/etc/sudoersへの追加は結局必要らしい(というかPAMのことがよくわかっていないことに今気づいた。後日勉強すること)。



# visudo




%wheel ALL=(ALL) ALL


という行を追加して再度sudoを試すと今度はできた。


その後再度/etc/pam.d/suを見てたら、さっきの節の前に



# This allows root to su without passwords (normal operation)
auth sufficient pam_rootok.so


と書かれていることを発見。rootユーザーをwheelグループに追加するというのは不要でした。





ブログ アーカイブ