SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

japan.internet.com翻訳記事

Railsの実践:NetBeansによる開発とLinuxへのデプロイ

RailsアプリケーションをLinuxサーバ上で動かす設定方法

  • X ポスト
  • このエントリーをはてなブックマークに追加

Railsアプリケーションのデプロイメントを効率化するテクニック

 Rails Webアプリケーションをデプロイするためには優れた方法が数多くありますが、今回は1つだけ取り上げたいと思います。これはシングルサーバーの場合に適したデプロイメント方法ですが、必要であればサーバーを追加することもできます。この方法ではnginxサーバー、Mongrelサーバー、memcachedシステムを使用します。memcachedシステムは高性能な、分散型のメモリオブジェクトキャッシングシステムであり、データベースリクエストとWebサービスリクエストの両方のキャッシュに使用できます。Railsアプリケーションはスケーリング可能ですが、大半のWebアプリケーションと同様、同時に使用できるユーザーはごくわずかです。Mongrel自体も遅くはないのですが、Mongrelにmemcachedを追加すれば、同時ユーザー数がもっと大きく増えるまで複雑なデプロイメントを先延ばしにすることができます。

 開発用のPCにはRailsアプリケーションの開発環境を設定し、Linuxサーバーには本番環境を設定しなければなりません。これは重要なポイントです。なぜなら、今回はCapistranoを使用していないので、新バージョンのアプリケーションをデプロイする際にサーバー上のデプロイメントディレクトリでそのままsvn updateが行えることを前提としているからです。

 memcachedの使い方は、gemをインストールするのと同じくらい簡単です。

sudo gem install memcache-client

 production.rbファイルに次の2行を追加してください:

config.action_controller.fragment_cache_store = :mem_cache_store
config.action_controller.session_store        = :mem_cache_store

 私は、普段はこの2行をdevelopment.rbファイルに追加していません。

LinuxサーバーにMongrelクラスタをデプロイする

 Ruby、Gem、およびRailsがLinuxサーバーにインストールしてあれば(開発用のPCにインストールしてあるものと同じバージョン番号のものを使います)、サーバー上にMongrelクラスタをデプロイすることができます。例として、私のCookingSpace.comプロジェクトを使ってデモンストレーションしていきます。まず、Railsアプリケーションのものと同じ名前で、特権のないアカウントを新規に作成します。私はよく、Webアプリケーションにちなんだアカウント名をつけます。後でこのnginx Webサーバーを使用して複数の仮想ドメイン名にサービスを提供したくなることがあるかもしれないし、各WebアプリケーションのMongrelクラスタを専用アカウントの下で実行したいからです。

 次に、デプロイメントディレクトリを作成し、アカウントを作成し、デプロイメントディレクトリの所有者を設定します。

sudo mkdir /var/mongrel
sudo mkdir /var/mongrel/cookingspace
sudo /usr/sbin/groupadd cookingspace
sudo /usr/sbin/adduser -r cookingspace -g cookingspace
sudo chown -R cookingspace /var/mongrel/cookingspace
sudo chgrp -R cookingspace /var/mongrel/cookingspace

 ここで、SSHを利用してアカウントcookingspaceを使って自分のサーバーにリモートログインし、subversionサーバーからWebアプリケーションの最新バージョンを取得します。

cd /var/mongrel/cookingspace/
svn co  svn+ssh://MY_ACCOUNT@MY_SERVER.com/home/svn/svn-repos/
cookingspace

 私のWebアプリケーションではMySQLを使用しているので、Linuxサーバー上でデータベースを設定する必要があります。

mysqladmin create cookingspace_production --user=root -p
mysqladmin create cookingspace_development --user=root -p
mysqladmin create cookingspace_test --user=root -p
export RAILS_ENV=production
rake db:migrate

 次に進む前に、単体でMongrelを実行してWebアプリケーションをテストしておくのがよいでしょう。ただし、プロダクションモードで行ってください。

cd /var/mongrel/cookingspace/
script/server --environment=production

 正常に動作したら、次にmongrel_clusters Ruby Gemをインストールします:

sudo gem install mongrel_cluster

 ユーザーcookingspaceでログインしたら、3つのMongrelのコンフィグレーションを行って、クラスタの起動と停止のテストをします。

cd /var/mongrel/cookingspace/
mongrel_rails cluster::configure -e production -p 3001 -n 3
  -a 127.0.0.1 --user cookingspace --group cookingspace
mongrel_rails cluster::start
mongrel_rails cluster::stop

次のページ
nginxプロキシおよびWebサーバーのインストールとコンフィグレーションを行う

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
japan.internet.com翻訳記事連載記事一覧

もっと読む

この記事の著者

japan.internet.com(ジャパンインターネットコム)

japan.internet.com は、1999年9月にオープンした、日本初のネットビジネス専門ニュースサイト。月間2億以上のページビューを誇る米国 Jupitermedia Corporation (Nasdaq: JUPM) のニュースサイト internet.comEarthWeb.com からの最新記事を日本語に翻訳して掲載するとともに、日本独自のネットビジネス関連記事やレポートを配信。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

Mark Watson(Mark Watson)

Javaコンサルタント。Java、人工知能、C++、知的エージェントに関する書籍を14冊執筆している。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/2322 2008/09/05 11:06

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング