「文殊構築ガイド」の編集履歴(バックアップ)一覧に戻る

文殊構築ガイド - (2008/05/15 (木) 20:41:22) のソース

#image(cover.jpg)

*この文章の目的

 「文殊」は、40以上の藩国、500以上のプレイヤーキャラクターのデータを管理するWebアプリケーションです、この存在は、既にアイドレスの基幹インフラと言っても過言ではありません。
 「文殊」の運用は現状、要求されるスキル及びセキュリティの都合により、黒埼紘@越前藩国が一人で行っています。この体制は属人性が高く、不測の事態を考えた場合、運用面において大きなリスクを抱えています。
 この文章は、文殊管理者の連絡途絶などにより文殊の運用が困難となった事態に備えるため、これを別のサイトで再構築するための手順が記されています。また、文殊開発に携わりたい方、自前でRailsアプリケーションを作る上で参考にしたい方にとっても、多少の参考になるでしょう。


*作業者に必要なもの

・UNIX系コマンド一通りの知識(viでテキスト編集ができる事が望ましい)
・二日間程度の時間
・CGI設置のための知識(できれば)
・月額500円の自腹を切る覚悟


*基礎知識

・文殊はRuby on Rails を利用して開発しています。
・データベースにはPostgreSQLを利用しています。
・文殊の最新のソースコードは ネット上のSubversion リポジトリから取得できます。
(http://wanwan-empire.svnrepository.com/svn/echizen_rnd/idress/branches/)
 リポジトリの読み取り用アカウントはID:guest、パスワード:guest。
・文殊のデータは一日一回バックアップを行い、ネット上に保存してあります。ファイル名は日付を表します。
(http://www.geocities.jp/cw7_mirror/monju_backup/index.html)


*この文書における前提条件

 レンタルサーバーに "CoreServer.jp"を利用します。(RubyとPostgreSQLが使え、それなり安価で、15日間の無料試用期間があるため)
 CoreServerでは公式にはRuby on Rails に対応していませんが、自分のホームディレクトリ上で適切なインストールと設定を行うことで、Rails環境を構築する事ができます。

 &color(red){注意}:CoreServerはアカウント登録後、翌日にならないとSSH接続ができません。
 (接続だけは登録一時間後からできるが、コマンド入力に大幅な制限が課され、翌日まで解除されない。)
 まずは登録だけを済ませ、他の段取りを進めておくとよいでしょう。

*構築手順

 文殊構築は、大雑把に以下の流れをとります。

-PCへのSSHクライアント・FTPクライアントのインストール
-レンタルサーバー"CoreServer.jp"のアカウント登録
-PostgreSQLデータベースの作成と文殊バックアップデータからのレストア
-文殊に必要なソフトウェアのインストール
-文殊のインストール

**メンテナンスに必要なソフトのインストール

あらかじめ、以下のソフトを自分のPCにインストールしておいて下さい。

-SSHクライアント(TeraTerm ないし Poderosa)
-FTPクライアント(FFFTP など )

**CoreServer.jpのアカウント登録

 レンタルサーバー提供サービスであるCoreServer.jpと契約し、アカウントを登録します。

***VALUE-DOMAINへのユーザ登録
 https://www.value-domain.com/signup.php?mode=coresv&location=coresv.php
 サーバを登録する前に、同社の別サービスであるVALUE-DOMAINにユーザ登録を行います。

***サーバの選択とアカウントの登録
 https://www.value-domain.com/coresv.php?action=signupcoresv1

・用意されている一覧からサーバーを選びます(ユーザー数の少ないものが良い)
・希望するユーザ名を入力します。
・連絡用のメールアドレスを入力します。
・「15日間のお試し登録」をクリックします。

 暫くすると、入力したメールアドレス宛に、登録内容確認のメールが届きます。
 これで登録は終了しました。以後の手順を進めるまで、半日~1日程度お待ち下さい。

***PostgreSQLデータベースの作成
 CoreServer.jpのコントロールパネルを開きます。
 http://www.s66.coreserver.jp/jp/admin.cgi

・左の管理メニューから「データベース」をクリックします。
・データベースを作成する。データベース名はデフォルトで用意されている「ユーザ名」と同じもので結構です。
・パスワードは別途指定してください。
・文字コードは"UNICODE"を選択してください。
#厳密にはUTF-8となります。これはRuby on Rails の標準に従うためです。
・作成ボタンをクリックします。
 5~10分後には、データベースが使用可能となります。その間にFTP接続・SSH接続の準備を行いましょう。

***FTP接続許可ホストの登録と接続試験
 CoreServerでは、事前にコントロールパネルから接続元のIPアドレスを登録しない限り、FTP・SSH接続を許可できない仕様となっています。

・左の管理メニューから「ホスト情報登録」をクリックする。
・「FTP登録」ボタンをクリック。
・5~10分待ちます。
・FTP接続を試験します。
 FFFTPなどで、サーバーに接続してください。
 サーバー名、ユーザー、パスワード等は、送られてきたメールに記載されています。

 接続できれば、次の手順に進みます。


***SSH接続許可ホストの登録と接続試験
 先ほどの画面から、今度はSSH接続の登録を行います。
・「SSH登録」ボタンをクリックし、5分ほど待ちます。
・TeraTerm、ないしPoderosaを使い、サーバーへSSH接続を試みます。
 サーバ名、ユーザ名、パスワード等は、FTP接続の際に使ったものと同じです。

 接続できれば、次の手順に進みます。

***文殊データベースの復元
 http://www.geocities.jp/cw7_mirror/monju_backup/index.html
 このページから、最新のバックアップを取得します。ファイル名は日付を表しています。

 ローカルにダウンロードしてからFTPでサーバにアップロードするか、もしくはサーバからwgetコマンドで、サーバ上で直接ダウンロードします。
 例:5月9日のバックアップをサーバ上で取得する

 wget http://www.geocities.jp/cw7_mirror/monju_backup/0509.gz

 このファイルをサーバ上で解凍し、データベースへ入力します。

 gunzip 0509.gz
 psql -d (データベース名) -U (ユーザ名) < 0509

パスワードを聞かれたら、先ほど設定したパスワードを入力します。
#最後の方で一部エラーが出ますが、無視してかまいません。多分。


*サーバーへの文殊のインストール

 ここからは、文殊に関連するソフトウェア(RubyGems、Rails、各種ライブラリ、文殊ソースコード)のインストールに入ります。


**RubyGemsのインストール

 CoreServer.jpでは Rails環境を用意していません。このため、自分のホームディレクトリ配下にRubyGems(Ruby用ライブラリのパッケージ管理ツール)をインストールし、自前でRails環境を構築する必要があります。

**RubyGems用ディレクトリの作成

 ホームディレクトリ配下に、以下のコマンドを用いてディレクトリを作成します。

 mkdir ~/packages
 mkdir ~/packages/bin
 mkdir ~/packages/lib
 mkdir ~/packages/lib/ruby
 mkdir ~/packages/lib/ruby/gem
 mkdir ~/packages/tmp


**環境変数の設定

 ~/.bashrcを作成し、viないしテキストエディタで以下の内容を設定します。

 export PATH=$HOME/packages/bin:$HOME/packages/lib/ruby/gem/bin:$PATH
 export RUBYLIB=$HOME/packages/lib/:$HOME/lib/ruby
 export GEM_HOME=$HOME/packages/lib/ruby/gem

 .bashrcを作成したら、以下のコマンドでその内容を適用してください。
(次回ログイン以降では、ログイン時に自動的に適用されます)

 source ~/.bashrc

**ダウンロード、解凍、インストール

 RubyGemsをダウンロードし、先ほど作成したディレクトリへインストールします。

 cd ~/packages/tmp
 wget http://rubyforge.org/frs/download.php/35283/rubygems-1.1.1.tgz
 tar xvzf rubygems-1.1.1.tgz
 cd rubygems-1.1.1/
 ruby setup.rb --prefix=$HOME/packages

 動作を確認します。以下のコマンドを実行し、バージョン番号が返ってくれば成功です。
 gem -v

**文殊に必要なライブラリのインストール

 RubyGemsを使って、Ruby on Railsと文殊が利用するその他のライブラリをインストールします。

 gem install rails

 動作を確認します。以下のコマンドを実行し、バージョン番号が返ってくれば成功です。
 rails -v 

***注意:ライブラリのインストール時に"Killed"と表示される場合
 CoreServerでは一回のコマンドにかかるCPU負荷・処理時間が一定量を越えると、プロセスが強制停止されてしまいます。
 Rails は多くの他のパッケージに依存するため、これらを一度にインストールしようとすると、この制限にかかる事があるようです。

 この場合は、個々の依存パッケージから先にローカルへダウンロード、その後にローカルからインストールと処理する事で回避できます。以下のようにコマンドを実行してください。

 gem fetch rake
 gem install --local rake
 gem fetch actionmailer
 gem install --local actionmailer
 gem fetch actionpack
 gem install --local actionpack
 gem fetch activerecord
 gem install --local activerecord
 gem fetch activesupport
 gem install --local activesupport
 gem fetch rails
 gem install --local rails


**文殊で利用するライブラリのインストール

 以下のコマンドを実行します。

 gem install postgres
 gem install gettext
 gem install hpricot
 gem install ruby-openid

**動作試験用Railsアプリケーションの作成

 この項はスキップしても構いません。
 どうしても文殊が動かず原因切り分けが必要な時の参考にしてください。

 ほぼ空っぽのRailsアプリケーションを作成し、ディレクトリの権限などを適宜設定します。

 cd
 mkdir testapp
 cd testapp
 rails test
 cd test
 chmod -R o+w log tmp

 Railsアプリの設定ファイルを一部修正し、このRails環境に適応させます。
 $HOME/testapp/test/config/environment.rbを編集し、冒頭に以下の行を追記してください。
 "xxx"はCoreServerのユーザ名になります。

 $LOAD_PATH.push('/virtual/xxx/packages/lib)
 $LOAD_PATH.push('/virtual/xxx/packages/lib/ruby')
 ENV[’GEM_HOME’] ||= ‘/virtual/xxx/packages/lib/ruby/gem’

 public_htmlディレクトリに、このRailsアプリへのシンボリックリンクを作成します。

 cd ~/public_html
 ln -s ~/testapp/test/public rails

 "http://(ユーザー名).(サーバ番号).coreserver.jp/rails/" をブラウザで開きます。
 Railsのロゴを含んだ、英語の画面が出てきたら成功です。

**文殊ソースコードのインストール

 文殊のソースコードを保存するディレクトリを作成し、ここにコードをダウンロードします。

 cd 
 mkdir monju
 cd monju
 svn checkout http://wanwan-empire.svnrepository.com/svn/echizen_rnd/idress/branches/RB-0.30 --username guest

 ダウンロード時にパスワードを要求されたら、'guest'と入力してください。
#なお、このguest アカウントは読み取り権限しか持ちません。

#前掲のURLのうち、"RB-0.30"の部分は、今後バージョンが上がると0.10単位で変更する可能性があります。
#実際のリポジトリの内容を見て、最新のブランチから取得してください。
#これは http://wanwan-empire.svnrepository.com/svn/echizen_rnd/idress/branches をブラウザで開くことで確認できます。5~6月には0.40に上がる予定です。
#ちなみにRB = Release Branch。 ラウンドバックラーではありません。


**データベース設定ファイルの作成

 文殊が利用するデータベース用の設定ファイルを作成します。
 $HOME/monju/RB-0.30/config/database.yml を作成し、以下の内容を編集してください。

 &color(red){注意}:二行目以降の行頭の空白には、タブ文字を利用しないで下さい。(YAMLの仕様です)

 production:
  adapter: postgresql
  database: (データベース名:CoreServerの場合はおそらくユーザ名と同じ)
  host: localhost
  username: (アクセス用ユーザ名:CoreServerの場合はおそらくユーザ名と同じ)
  password: (パスワード:CoreServerのコントロールパネルで設定したもの)


**シンボリックリンクの設定

 文殊の公開に必要なシンボリックリンクを作成します。
#ここではURLを短くするため、public_htmlをまるごと文殊のソースコード内に振り向けています。

 cd ~
 mv public_html public_html.org
 ln -s $HOME/monju/RB-0.30/public public_html


**必要な各種ファイル属性の設定

 実行権限の設定

 cd ~/monju/RB-0.30/public
 chmod +x dispatch.*

 ログ・セッション用ファイルの書き込み権限の設定

 cd ~/monju/RB-0.30
 chmod -R o+w log tmp


**ライブラリパスの設定

 $HOME/monju/RB-0.30/config/environment.rb を編集し、自前のRails環境に適応させます。
 ファイルの冒頭に以下の行を追記してください。

 $LOAD_PATH.push('/virtual/xxx/packages/lib')
 $LOAD_PATH.push('/virtual/xxx/lib/ruby')
 ENV['GEM_HOME'] ||= '/virtual/xxx/packages/lib/ruby/gem'


**動作試験

 いよいよ動作試験です。以下のURLを開いて下さい。

http://(ユーザー名).(サーバ番号).coreserver.jp/nations/

 文殊のトップ画面が表示されれば成功です。

 従前の文殊のドメイン名(maki.wanwan-empire.net)を継続して使うなら、ドメイン管理者(黒埼紘@越前藩国、ないしセントラル越前@越前藩国)に連絡して、DNS登録を変更するよう依頼して下さい。
 ご苦労さまでした。

**もしエラー画面が出てきたら

 以下の項目を参考にして、原因を特定してください。

・デバッグ用CGI出力に切り替える。
 CGIの出力をデバッグ用に切り替えることで、エラーの原因を調べることができます。

+$HOME/monju/RB-0.30/public/.htaccess を開く。
+以下の行を修正してデバッグ出力に切り替える。

 #AddHandler cgi-script .cgi  #こちらをコメントアウトする
 AddHandler cgi-script-debug .cgi #この行を追加する。

・Railsのログを調べる
 文殊の動作は全て、以下のログファイルに記載されています。これも参考になるでしょう。

 $HOME/monju/RB-0.30/log/production.log


*運用に際しての注意

 以上で、文殊を動作させる事ができます。しかし、継続的な運用にはまだやる事が色々あります。

・CoreServer.jpの契約
 15日間の無料お試し期間が過ぎた時点で契約してなければ、アカウントは削除されます。
 動作を確認できたら早急に契約しましょう。

・セッションファイルの定期的削除
 $HOME/monju/RB-0.30/tmp/sessions 配下には、セッション情報が作成されます。このディレクトリには数多くのファイルが作成されていきますが、自動では削除されません。
 cronジョブなどを利用し、定期的に古いものを削除して下さい。

・定期的なバックアップ
 万が一に備え、文殊のデータはバックアップを取るべきです。
 CoreServer.jpでは、コントロールパネル上のボタンを押すだけで、ホームディレクトリにバックアップファイルを作成する機能があります。
(が、手動で行う必要があるため少々面倒ではあります)
 また、吏族チェックの都合上、過去のある時点における文殊のデータが必要となるケースも考えられます。これに対応するためには、毎日、ないし週1のバックアップを世代毎に用意する必要があります。

・ソースコードの更新
 文殊の開発がさらに継続されている場合、ソースコードの反映が必要です。
 カレントディレクトリを$HOME/monju/に移し、'svn up'コマンドで、サーバ上のソースコードをリポジトリの最新に更新する事ができます。

 これらの具体的な手順については、別途「文殊運用マニュアル」を作成する予定です。
記事メニュー
目安箱バナー