Posted by
okkez
Tue, 18 Nov 2008 13:30:00 GMT
色々やってなんとかなりそう。
DomU に Debian を使うのはすぐにできたけど、 CentOS5 を動く状態にするのがなかなかできなかったのでメモ。
ダメだったやり方を書いているので、参考にしない方がいいと思います。
以下でやるとエラーになってダメだった。
xen-create-image –install-method rinse \
–dist centos5 –arch i386 \
–dhcp –passwd \
–hostname centos5
以下のように修正すると、一応エラーが出ないけどその後がダメだった。
— centos-4.packages 2008-06-29 05:25:58.000000000 +0900
+++ centos-5.packages 2008-11-18 21:05:32.000000000 +0900
@@ -1,12 +1,13 @@
#
# Packages which we’ll need to download for a minimal installation
-# of CentOS 4.6
+# CentOS 5.0
#
MAKEDEV
SysVinit
audit-libs
+authconfig
basesystem
bash
beecrypt
@@ -18,6 +19,7 @@
db4
device-mapper
e2fsprogs
+e2fsprogs-libs
elfutils-libelf
ethtool
expat
@@ -33,6 +35,7 @@
initscripts
iproute
iputils
+keyutils-libs
krb5-libs
libacl
libattr
@@ -44,6 +47,7 @@
libstdc++
libsysfs
libtermcap
+libuser
libxml2
libxml2-python
mcstrans
@@ -54,6 +58,7 @@
neon
net-tools
openssl
+passwd
pam
pcre
popt
ダメだった点は以下。
- rinse の要求するファイルが、 centos5.packages で実際に存在するファイルが centos-5.packages だった
-> シンボリックリンクで回避できた
- root のパスワードを設定していないのに、ログインできない
-> シングルユーザモードで起動してから pwconv; passwd で。
- なんか色々パッケージが足りなくて、まともに動かない
-> 諦めた
で、Xen 徹底入門に載ってたやり方で yum を使ってパッケージをインストールした。
ここでも gpg のエラーが出たので、gpg のチェックを無効にしたらとりあえず最後まで行った。
その後、yum groupinstall Base しかしてないので色々入ってないけど、ネットワークもつながるし
yum update や yum install も動いているので、問題なく使えそうな状態にできました。
Posted in Debian |
コメントはありません |
Posted by
okkez
Thu, 30 Oct 2008 15:31:00 GMT
nginx と webrick を使用してるりまを公開しているので手順と使っているスクリプトを公開しときます。
nginx の設定は以下。
Debian 風に設定ファイルが分かれているのでそれ以外の人は適当に想像して読み替えてください。
server {
listen 80;
server_name doc.okkez.net;
access_log /var/log/nginx/doc.okkez.net-access.log combined;
root /var/www/doc.okkez.net;
index index.html;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
#proxy_redirect off;
location / {
root /var/www/doc.okkez.net;
index index.html;
}
location /archives {
autoindex on;
}
location /180 {
include maintenance;
proxy_pass http://localhost:8180;
break;
}
# … 180 から 191 までの設定がありますが略
}
以下の点に注意します。
* location /archives は月次リリースのファイル置き場です
* location /180 は Ruby1.8.0 用のパスです
* location は バージョン番号からドットを取り除いたもの
* proxy_pass の最後に指定しているポート番号は 8000 + 上で作成した数値
### webrick 起動スクリプト
書いてあるとおりなんですが、ポイントは以下。
* DB の作成場所などを工夫してパラメタライズしやすくした
* –baseurl オプションを指定すると CGI で作成されるパスがそのパスを起点にしたパスになる
* バインドされる IP アドレスは localhost なので安全
* port は nginx の設定で使用したものを使う
#!/bin/sh
DB_BASE=$HOME/ruby/rubydoc/refm/api
BITCLUST_DIR=$HOME/ruby/bitclust
for v in 180 181 182 183 184 185 186 187 188 191
do
ruby ${BITCLUST_DIR}/standalone.rb \
–baseurl=http://doc.okkez.net/${v} \
–port=8${v} \
–pid-file=${DB_BASE}/pids/standalone-${v}.pid \
–database=${DB_BASE}/db${v}
done
こんな感じです。
### DB を全て再作成するスクリプト
#!/usr/bin/ruby
BITCLUST = ‘/home/xxxx/bin/bitclust’
VERSIONS = %w[
1.8.0 1.8.1 1.8.2 1.8.3 1.8.4 1.8.5 1.8.6 1.8.7 1.8.8
1.9.1
]
REF_BASE=’/home/xxxx/ruby/rubydoc/refm/api’
def setup_db(version)
db = “#{REF_BASE}/db#{version.gsub(/./, ”)}”
`rm -rf #{db}`
`#{BITCLUST} -d #{db} init version=#{version} encoding=euc-jp`
`#{BITCLUST} -d #{db} update –stdlibtree=#{REF_BASE}/src`
puts “#{version} is done”
end
system “svn up -q #{REF_BASE}”
VERSIONS.reverse_each do |version|
setup_db(version)
end
なんとなく Ruby で書いてみた。
### cron に登録してるスクリプト
* このスクリプトが動いている間はメンテナンス中の画面になるようにあらかじめ nginx にも設定しておく
* あとは上で作ったスクリプトの組み合わせ
* メンテ中でも archives 以下はアクセス可能
#!/bin/sh
DOC_BASE=/var/www/doc.okkez.net
mv ${DOC_BASE}/system/maintenance.html.no ${DOC_BASE}/system/maitenance.html
for f in $(find $HOME/ruby/rubydoc/refm/api/pids -name ‘*.pid’ -print)
do
kill $(cat ${f})
done
$HOME/bin/bc-setup-all
$HOME/bin/bc-view-all
mv ${DOC_BASE}/system/maintenance.html ${DOC_BASE}/system/maitenance.html.no
こんな感じです。
まとめ
webrick を 10 個も起動しているのがちょっとダサいところなんですが、まあメモリもたくさん積んでいるのでいいのかな、と。
もっといいやり方があったら教えていただけるとうれしいです。
Posted in Ruby, Debian |
コメントはありません |
Posted by
okkez
Mon, 20 Oct 2008 12:03:00 GMT
Debian sid で nginx + fcgi + php な環境を作ったのでメモ。
インストール
Debian なので全部パッケージで手に入る。
普通に aptitude で入れれば OK
とりあえず php5-cgi を忘れなければ良い。
ついでに fcgi の起動に spawn-fcgi を使用するので lighttpd を入れておく。
ちなみに自動起動の停止は以下のコマンド。ついでに設定ファイルで listen するポートも変更しておくといいかもしれない。
$ sudo update-rc.d -f lighttpd remove
設定
まずは nginx は以下のような感じで設定します。
Debian での Apache と同じように /etc/nginx/sites-enabled と /etc/nginx/sites-available 以下に virtual host ごとの
設定ファイルを置くようになっているのでそのようにする。基本的には /etc/nginx/nginx.conf はいじらない。
注意するのは以下の点。
- SCRIPT_FILENAME がフルパスになるようにする
- 行末のセミコロンを忘れない
- 設定ファイルの書式チェックは sudo nginx -c nginx.conf -t で行う。
- リロードは /etc/init.d/nginx reload で。
server {
listen 80;
server_name xxx.okkez.net;
access_log /var/log/nginx/xxx.okkez.net-access.log combined;
server_name_in_redirect off;
location / {
index index.php index.html;
root /var/www/xxx.okkez.net;
}
location ~ .php$ {
#fastcgi_pass 127.0.0.1:9000;
fastcgi_pass unix:/tmp/php.fastcgi.socket;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/xxx.okkez.net$fastcgi_script_name;
include /etc/nginx/fastcgi_params;
}
location ~ /.ht {
deny all;
}
location ~ /.git {
deny all;
}
}
次に spawn-fcgi を用いて fcgi の起動停止スクリプトを書きます。
私は FreeBSD: Nginx FastCGI PHP Configuration を参考にして
UNIX Socket を使用して fcgi を起動するようにしました。
オリジナルとの違いは以下。
- pcgi_restart で stop -> start の間に sleep を入れた
** 入れないとたまにエラーメッセージを吐くことがあったため
- fcgi の起動方法を socket にした
- コマンドのパスを自分の環境に合わせた
#!/bin/sh
# NGINX FastCGI php5 startup shell script
# Feedback
# http://bash.cyberciti.biz/web-server/fastcgi-php-server-start-stop-script/
# Set ME #
PROVIDES=php-cgi
SPAWN_FCGI=/usr/bin/spawn-fcgi
SERVER_IP=127.0.0.1
SERVER_PORT=9000
SERVER_USER=www-data
SERVER_GROUP=www-data
SOCKET_PATH=/tmp/php.fastcgi.socket
PHP_CGI=/usr/bin/php-cgi
PGREP=/usr/bin/pgrep
KILLALL=/usr/bin/killall
### No editing below ####
cmd=$1
pcgi_start(){
echo “Starting $PROVIDES…”
#$SPAWN_FCGI -a $SERVER_IP -p $SERVER_PORT -u $SERVER_USER -g $SERVER_GROUP -f $PHP_CGI
$SPAWN_FCGI -s $SOCKET_PATH -u $SERVER_USER -g $SERVER_GROUP -f $PHP_CGI
}
pcgi_stop(){
echo “Killing $PROVIDES…”
$KILLALL $PROVIDES
}
pcgi_restart(){
pcgi_stop
sleep 2
pcgi_start
}
pcgi_status(){
$PGREP $PROVIDES > /dev/null
[ $? -eq 0 ] && echo “$PROVIDES running” || echo “$PROVIDES NOT running”
}
pcgi_help(){
echo “Usage: $0 {start|stop|restart|status}”
}
case ${cmd} in
[Ss][Tt][Aa][Rr][Tt]) pcgi_start;;
[Ss][Tt][Oo][Pp]) pcgi_stop;;
[Rr][Ee][Ss][Tt][Aa][Rr][Tt]) pcgi_restart;;
[Ss][Tt][Aa][Tt][Uu][Ss]) pcgi_status ;;
*) pcgi_help ;;
esac
こんな感じです。
ローカルでの体感速度はかなり上がった気がします。(サーバもパワーアップしているので一概には言えませんが。。。)
Posted in Debian |
コメントはありません |
Posted by
okkez
Tue, 14 Oct 2008 03:21:00 GMT
Xen を入れようとして失敗したので延期です。
できれば今週中にやりたいところ。
Posted in 雑記 |
コメントはありません |
Posted by
okkez
Mon, 13 Oct 2008 14:05:00 GMT
行ってきました。
午前中は、通院のため行けなかったので午後から参加。
前回と違ってサイ本を読破していたのでそこそこちゃんと読めた。
以前の部分も復習しておかないとぁ。
1.6.0.2 が終わってからは差分を見ながら変更点の確認。
CHANGELOG を見ながら追っかけてました。
そのときやってた方法は以下のような感じ。
- 読んでる部分の特定のキーワードで CHANGELOG で検索。
その後途中から Yuya さんのアドバイスで読み方変更。
prototype.js は git 上では複数のファイルに分かれているので読んでいる部分に対応するファイルを
見つけてそのファイルのログを見る必要があります。
配布ファイルの差分が追加/変更の場合は git blame で追加/変更部分が blame でも表示されるので
該当するチェンジセットのコミット内容を git show します。
ほぼすべてこれで変更内容を把握することができました。
ただし、 blame は削除部分に関しては何も教えてくれないのでそこは工夫しないといけない。
Posted in Programming |
コメントはありません |
Posted by
okkez
Sun, 12 Oct 2008 00:05:00 GMT
試しに見てみるサーバ。
#!/bin/sh
cd $HOME/ruby/rubydoc/refm/api
ruby $HOME/ruby/bitclust/standalone.rb \
–baseurl=http://localhost:10088 \
–port=10088 \
–database=./db \
–debug
るりまの DB をコンパイルする。
#!/bin/sh
VERSION=${1:-‘1.8.7’}
cd $HOME/ruby/rubydoc/refm/api
rm -rf ./db
bitclust -d ./db init version=$VERSION encoding=euc-jp
bitclust -d ./db update –stdlibtree=src
全てのバージョン。
#!/usr/bin/ruby
BITCLUST = ‘/home/kenji/bin/bitclust’
VERSIONS = %w[
1.8.0 1.8.1 1.8.2 1.8.3 1.8.4 1.8.5 1.8.6 1.8.7
1.9.0
]
REF_BASE=’/home/kenji/ruby/rubydoc/refm/api’
def setup_db(version)
db = “#{REF_BASE}/db#{version}”
`rm -rf #{db}`
`#{BITCLUST} -d #{db} init version=#{version} encoding=euc-jp`
`#{BITCLUST} -d #{db} update –stdlibtree=#{REF_BASE}/src`
puts “#{version} is done”
end
system “svn up -q #{REF_BASE}”
VERSIONS.reverse_each do |version|
setup_db(version)
end
こんな感じです。
Posted in Ruby |
コメントはありません |
Posted by
okkez
Mon, 06 Oct 2008 11:37:00 GMT
今週末の三連休のどこかでサーバをリプレイスします。
たぶん、日中に止めて作業しますので、繋がらなかったら「やってるんだな」と思ってください。
Posted in 雑記 |
コメントはありません |
Posted by
okkez
Sun, 05 Oct 2008 14:39:00 GMT
自作er なので念願の新しいマシンを作りました。自宅鯖にまわす予定。
スペック。
- CPU: Phenom X4 9350e
- Memory: 4GB (DDR2-1066 2GB*2)
- HDD: 320GB
- M/B: GA-MA790GP-DS4H
- 電源 : 425W
- ケース : Centurion 5 Blue
静音、低消費電力をコンセプトに組んでみました。
すごく静かで、家の換気扇の方がうるさいくらいです。たぶん枕元に置いて寝ても平気です。
Posted in 雑記 |
コメントはありません |
Posted by
okkez
Fri, 26 Sep 2008 13:19:00 GMT
コメントが有効になりました のコメントで指摘された件ですが、どうやら Typo のバグのようです。
RAILS_ROOT/config/routes.rb にあるルート定義を行っている方法が古いようです。
たぶん、名前付きのルートの部分を全面的に直さないといけない気がします。
とりあえず、上で指摘されていた部分は先頭(追加場所は未検証)
map.resources :articles
を追加すれば直りました。
本家にバグレポして直してもらう必要があるようです。
Posted in Ruby |
コメントはありません |
Posted by
okkez
Thu, 25 Sep 2008 05:29:00 GMT
るりまで RubyGems のドキュメントを書いてます。
あと 23 ファイルで一通り終わります。
まだ、内容の精査は必要なのだけど、 RubyGems のリファレンスが日本語で読めるのはるりまだけ!(と思いたい)
Posted in Ruby |
2 comments |