Dom0 Debian and DomU CentOS5

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 | コメントはありません |

nginx + webrick でるりまを公開する方法

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 , | コメントはありません |

nginx + fcgi + php on 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 | コメントはありません |

サーバ更新延期

Posted by okkez Tue, 14 Oct 2008 03:21:00 GMT

Xen を入れようとして失敗したので延期です。

できれば今週中にやりたいところ。

Posted in | コメントはありません |

Kanasan.JS prototype.js CodeReading#6

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 | コメントはありません |

るりまを書くのに工夫していること

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 | コメントはありません |

サーバメンテナンスの予定

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 | コメントはありません |

Typo のバグ

Posted by okkez Fri, 26 Sep 2008 13:19:00 GMT

コメントが有効になりました のコメントで指摘された件ですが、どうやら Typo のバグのようです。

RAILS_ROOT/config/routes.rb にあるルート定義を行っている方法が古いようです。

たぶん、名前付きのルートの部分を全面的に直さないといけない気がします。 とりあえず、上で指摘されていた部分は先頭(追加場所は未検証)

map.resources :articles

を追加すれば直りました。

本家にバグレポして直してもらう必要があるようです。

Posted in | コメントはありません |

るりま進捗 @ RubyGems

Posted by okkez Thu, 25 Sep 2008 05:29:00 GMT

るりまで RubyGems のドキュメントを書いてます。

あと 23 ファイルで一通り終わります。 まだ、内容の精査は必要なのだけど、 RubyGems のリファレンスが日本語で読めるのはるりまだけ!(と思いたい)

Posted in | 2 comments |

Older posts: 1 2 3 ... 9