SHOEISHA iD

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

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

japan.internet.com翻訳記事

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

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

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

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

 自分のサーバーに最新の安定バージョンのnginxをダウンロードし、インストールします。

cd nginx-0.5.35
./configure
make
sudo make install

 これで、nginxが/usr/local/nginxにインストールされます。ファイル/usr/local/nginx/conf/nginx.confを以下のように編集してください。

worker_processes  3;

error_log  logs/error.log notice;
error_log logs/warning.log warning;

pid        logs/nginx.pid;

events {
    worker_connections  1024;
}

http {
    include       conf/mime.types;
    default_type  application/octet-stream;

    tcp_nopush     on;
    keepalive_timeout  65;
    tcp_nodelay        on;

    upstream mongrel {
        server 127.0.0.1:3001;
        server 127.0.0.1:3002;
        server 127.0.0.1:3003;

    }

    gzip on;
    gzip_min_length  1100;
    gzip_buffers     4 8k;
    gzip_types       text/plain;

    server {
        listen       80;
        server_name  cookingspace.com;
        root /var/mongrel/cookingspace/public;

        access_log  off;
        rewrite_log on;

        location / {
            proxy_pass  http://mongrel;
            proxy_redirect     off;
            proxy_set_header   Host             $host;
            proxy_set_header   X-Real-IP        $remote_addr;
            proxy_set_header   X-Forwarded-For  
                                    $proxy_add_x_forwarded_for;
        }

    }
}

 テストをするには、Mongrelクラスタが起動していることを確認してから、手動でnginxを実行してください。

cd /usr/local/nginx/
sbin/nginx -c conf/nginx.conf

Mongrelクラスタとnginxを自動で起動する

 この節を書くには少々苦労しました。というのは、起動プロセスを管理するツールはLinuxディストリビューションの種類によって微妙に異なるからです。とは言っても、多少「昔かたぎ」な方法ではありますが、大半のLinuxディストリビューション(FreeBSDなども含む)は/etc/rc.localにstartupコマンドを用意しているはずなので、ここではそれを利用することにします。実際にテストしたLinuxサーバーは1つだけです。

# I made sure that /usr/local installs are visible:        
export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
export PATH=$PATH:/usr/local/bin

# start memcached using a non-privileged account:
/usr/local/bin/memcached -d -m 16384 -l 127.0.0.1 -p 11211
 -u cookingspace >
 /home/cookingspace/memcached.log  &

# start the mongrel cluster and nginx using non-privileged accounts:
(cd /var/mongrel/cookingspace/ ; su cookingspace -m -c "nohup
  /usr/local/bin/mongrel_rails cluster::restart > 
/home/cookingspace/mongrel_rails.log  &" )
(cd /usr/local/nginx/ ; sbin/nginx -c conf/nginx.conf)
# note: nginx spawns worker processes using a non-privileged account.

 少し単純化しすぎたかもしれませんが、この方法にはおそらく大半のシステムで動作するという利点があります。

時間節約ツール

 私はサーバーサイドJavaの仕事を10年以上続けてきましたが、Railsアプリケーションを書くことは非常におもしろいと思います。Railsアプリケーションの特徴は、プロジェクト完成までにあまり時間がかからないことです。実際の問題の解決により多くの時間を割くことができ、インフラストラクチャソフトウェアにかける時間は少なくて済みます。もっとも、スケーリングと大規模な開発チームが必要なプロジェクトについては引き続きサーバーサイドJavaを使うつもりです。Java開発に時間がかかる原因として挙げられるJavaの特徴(静的な型指定、冗長だが読みやすいコード)は、大規模な開発チームにとっては逆にメリットにもなります。とは言え、大半のプロジェクトは数人の開発者で簡単に書けるほど小さいものであり、このような中小規模のプロジェクトにはRubyおよびRailsが非常に適しています(ユーザー負荷の増大に応じてサーバーを追加する際のアドバイスについては「補足説明2:スケーリングの際に必要なもの」を参照)。

 Railsアプリケーションをサーバーにデプロイするのは簡単な作業ではないと一般に言われています。Linuxシステムの管理に不慣れな場合は、おそらくその通りでしょう。この記事が、皆さんがデプロイメントを行う際の作業時間とストレスの削減に役立てば幸いです。

補足説明2:スケーリングの際に必要なもの
 ユーザー数が増えて複数のサーバーにスケーリングする必要が出てきた場合は、比較的簡単に実行できる次の方法を検討してください。
  • 他のサーバーにデータベースを移し、メモリ割り当てを増やす
  • 複数のサーバーでMongrelクラスタを実行する
上記の方法でうまくいかない場合は、もっとメモリ容量が大きくて速いサーバーを購入してください。

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

  • 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」など、さまざまなカンファレンスを企画・運営しています。

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

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

メールバックナンバー

アクセスランキング

アクセスランキング