バナー画像

Ruby on RailsはRubyで作られているオープンソースのWebアプリケーションフレームワークですが、Webサーバーの機能も用意されています。そのためこの機能を活用すれば、nginxのようなWebサーバが設定されていない開発環境でも、Webブラウザによるチェックが可能です。

今回はRuby on RailsのWebサーバーを起動するrails serverの使い方を紹介します。

Ruby on RailsのWebサーバー機能


Ruby on RailsにはWebサーバー機能が組み込まれており、nginxやApache httpdに設定したWebサーバーでなくても簡単に開発中のWebシステムをデバックできます。もしLinuxの開発環境でRuby on Railsの開発を始めたのなら、rails newコマンドで新規アプリケーションの環境を作って、さっそくWebサーバーを起動してみましょう。

Webサーバー機能に詳しくない方のために、まずは起動方法とその機能について紹介します。

Webサーバーの基本

今回紹介するRuby on RailsのWebサーバー機能とは、クラウド上にあるWebサーバーの簡易版で、Ruby on Railsに組み込まれているpumaで実現します。

なお、Webサーバーの基本的な機能とは、Webブラウザからのリクエストを受け、それに応じてWebページを構成するHTMLや画像などをWebブラウザ送信します。そしてWebブラウザとの通信手順の規格が決まっており、その規約に従っていればRubyで作ることも可能です。

ただし、pumaは簡易版であり、nginxやApache httpdなどのWebサーバーと同じような機能はありません。開発用など限定的な用途で使えるWebサーバーと考えてください。

RailsのWebサーバーを起動する

Ruby on RailsのWebサーバー機能は、アプリケーションの初期設定さえ実行すれば、railsコマンドで起動できます。まずはターミナルなどでアプリケーションの初期設定を実施してください。

Ruby on Railsのアプリケーションの初期設定コマンドの例

$ rails new app1

そして、そのアプリケーションのディレクトリに移動し、次のコマンドを実行することで、Webサーバーが起動します。

Ruby on RailsのWebサーバーを起動するコマンド

$ rails server

Webブラウザで表示してみる

rails serverによるWebサーバーが正常に起動すると、ターミナルに下記のようなメッセージが表示されます。これでWebブラウザからのリクエストを受け付ける状態です。

$ rails server
=> Booting Puma
=> Rails 6.1.4.1 application starting in development
=> Run `bin/rails server --help` for more startup options
Puma starting in single mode...
* Puma version: 5.5.0 (ruby 3.0.1-p64) ("Zawgyi")
*  Min threads: 5
*  Max threads: 5
*  Environment: development
*          PID: 1805
* Listening on http://127.0.0.1:3000
* Listening on http://[::1]:3000
Use Ctrl-C to stop

上記のメッセージに従い、開発環境のWebブラウザで下記のURLを指定することでRailsのデフォルト情報ページが表示されます。

http://localhost:3000

なお、URLに記載された「:3000」はポート番号で、Webブラウザは指定しなければ80または443を使います。Ruby on RailsのWebサーバーはデフォルトのポート番号ではなく3000版を使うので注意してください。

ターミナルのメッセージをチェック

rails serverを実行し、Webブラウザによるアクセスが成功すると、ターミナルにはメッセージが表示されます。ここにはWebブラウザからのアクセスログの他、Rubyのエラーメッセージなども表示されるので、作成したプログラムの動作チェックにも利用可能です。

なお、rails seeverを実行した直後に表示された「Use Ctrl-C to stop」のメッセージのとおり、このターミナルで「Ctrl-C」を打ち込むと、Ruby on RailsのWebサーバーが停止します。また、ターミナルを消してしまってもWebサーバーが停止してしまうので注意してください。

rails serverをカスタマイズする


先ほどrails serverコマンドによるWebサーバーの起動手順を紹介しましたが、誤ってターミナルを消してしまうとWebサーバーも停止してしまうのは不便です。しかしrails serverコマンドは、オプションでその動作をカスタマイズでき、デーモンのように動作させることもできます。次からそのようなrails serverをカスタマイズする方法を紹介します。

rails serverのオプションを使う

先ほどRuby on RailsのWebサーバーを起動するコマンドを紹介しましたが、この方法で起動したターミナルにはメッセージが表示されるのでデバックにも利用可能です。

ただし、ターミナルを幾つも開いて開発していると、Webサーバーを起動したターミナルを誤って消してしまうこともあります。そこでオプションを指定することでデーモンとしてサーバーを起動できます。また、ポート番号を3000からWebブラウザのデフォルトである80に変更することも可能です。

次にrails serverで使えるオプションを紹介します。

-p, –port=port	サーバを起動するときのポート番号を指定	3000
-b, –binding=ip	バインドするIPアドレスを指定	0.0.0.0
-c, –config=file	rackupファイルを指定	
-d, –daemon	デーモンとしてサーバを起動	
-u, –debugger	デバックモード	
-e, –environment=name	環境(test/development/production)を指定してサーバを起動	development
-P, –pid=pid	PIDファイルを指定	tmp/pids/server.pid
-h, –help	ヘルプを表示

カスタマイズ例:デーモンとして起動する

先ほど紹介したrails serverのオプションの「-d」または「-–daemon」を指定することで、Webサーバーをデーモンとして起動できます。これにより、ターミナルを誤って消してしまってもWebサーバーがデーモンとして残るので、Webブラウザによるデバックに利用可能です。

デーモンとして起動する例

$ rails server --daemon

なお上記のコマンドでWebサーバーを起動すると、その実行ログはコマンドを起動したディレクトリのlogの下にあるdevelopment.logに出力されます。動作をチェックしたい場合は、このファイルをチェックしてください。

またWebサーバーの起動の有無をチェックする場合は、psコマンドなどで「puma」というプログラムをチェックしてください。

デーモンで起動したWebサーバーの有無をチェックするコマンドの例

$ ps -ef | grep puma
user      3347       1  0 15:47 ?        00:00:00 puma 5.5.0 (tcp://localhost:3000) [/]

カスタマイズ例:ポート番号を変更する

複数のWebサーバーを使っている場合など、デフォルトのポート番号を変更したいケースがあります。そのような場合は、「–port」オプションでポート番号を指定します。

ポート番号を指定してWebサーバーを起動した例

$ rails server --port=3001

なお、今使われているポート番号をチェックするには、lsofコマンドなどを利用してください。

lsofコマンドの使用例

$ lsof -i
COMMAND  PID   USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
ruby    3347 h-ueno   13u  IPv4  55082      0t0  TCP localhost:3000 (LISTEN)
ruby    3347 h-ueno   14u  IPv6  55083      0t0  TCP ip6-localhost:3000 (LISTEN)

上記の例では、localhost:3000がリクエスト受け入れ状態です。

サーバーが起動しない場合


Ruby on Rilasのデバックを再開するためrails serverコマンドを実行したら、エラーで停止してしまうことがあります。そして大抵の場合、このようなエラーの原因は簡単な理由です。コマンド実行時のメッセージをよくチェックして対策してください。

次からサーバーが起動しない場合の対応手順について紹介します。

既にWebサーバーが起動している

rails serverコマンドでWebサーバー起動すると、デフォルトではポート番号3000を使い、Webブラウザからのリクエストに応答します。しかし、ポート番号は1つのプログラムにしか割り当てできません。そのため、既にポート番号を使用しているプログラムが動いていると、Webサーバーが起動できずにエラーが発生します。

次のようなメッセージが表示されたら、先ほど紹介したコマンドでポート番号の利用状況をチェックしてみてください。

既にWebサーバーが起動している場合のメッセージの例

A server is already running. Check /home/www/rails/app1/tmp/pids/server.pid.
Exiting

ロックファイルを削除する

先ほどのように3000番ポートを使用しているデーモンが無いのに、既にそのポートが使われている、と表示されることがあります。これは、Webサーバーが正常に正常に終了しなかったことで、ロックファイルが残っているのが原因です。

通常、開発環境を正常にシャットダウンすると、OSが停止する前にロックファイルが削除されます。しかし、突然電源が切れたなど、正常にシャットダウンできなかった場合、ロックファイルは削除されません。このような場合は、ロックファイルを削除してしまえば、Webサーバーを起動させることが可能です。

なおロックファイルは、Ruby on Railsのアプリケーションを構成するディレクトリのうち、tmp/pidsの下にserver.pidというファイルがあるのでチェックしてみてください。

ロックファイルを削除する例

$ ls tmp/pids
server.pid
$ rm tmp/pids/server.pid

まとめ


これまで紹介したようにrails serverコマンドを使うことで、手軽にWebサーバーを起動でき、開発中のWebシステムのテストに利用できます。なおオプション無しでも起動できますが、デーモンとして起動できたり、ポート番号を変更できるなどのカスタマイズも可能です。Ruby on Railsを利用する際には、ぜひ、活用してください。

エンジニアになりたい人に選ばれるプログラミングスクール「ポテパンキャンプ 」

ポテパンキャンプは卒業生の多くがWebエンジニアとして活躍している実践型プログラミングスクールです。 1000名以上が受講しており、その多くが上場企業、ベンチャー企業のWebエンジニアとして活躍しています。

基礎的な学習だけで満足せず、実際にプログラミングを覚えて実践で使えるレベルまで学習したいという方に人気です。 プログラミングを学習し実践で使うには様々な要素が必要です。

それがマルっと詰まっているポテパンキャンプでプログラミングを学習してみませんか?

卒業生の多くがWebエンジニアとして活躍

卒業生の多くがWeb企業で活躍しております。
実践的なカリキュラムをこなしているからこそ現場でも戦力となっております。
活躍する卒業生のインタビューもございますので是非御覧ください。

経験豊富なエンジニア陣が直接指導

実践的なカリキュラムと経験豊富なエンジニアが直接指導にあたります。
有名企業のエンジニアも多数在籍し品質高いWebアプリケーションを作れるようサポートします。

満足度高くコスパの高いプログラミングスクール「ポテパンキャンプ」

運営する株式会社ポテパンは10,000人以上のエンジニアのキャリアサポートを行ってきております。
そのノウハウを活かして実践的なカリキュラムを随時アップデートしております。

代表の宮崎もプログラミングを覚えサイトを作りポテパンを創業しました。
本気でプログラミングを身につけたいという方にコスパ良く受講していただきたいと思っておりますので、気になる方はぜひスクール詳細をのぞいてくださいませ。