Pumaの設定ファイルの場所と設定内容の解説

Rails でアプリケーションサーバとして使用する Puma に関して、使用するポート番号を変更したい場合などは設定ファイルを編集します。ここでは Puma の設定ファイルの場所と設定ファイルに記載されている内容について解説します。

(Last modified: )

設定ファイルの場所

Puma に関する設定ファイルは、アプリケーションディレクトリの中の config ディレクトリの中にある puma.rb です。

静的コンテンツの設置場所(1)

puma.rb は Ruby を使って記述されたテキストファイルです。テキストエディタで開いてください。

静的コンテンツの設置場所(2)

Puma に関する設定が記述されています。変更する場合は設定ファイルを直接編集されてください。それでは設定ファイルの内容について、いくつかの項目を簡単に確認していきます。

最大スレッド数と最小スレッド数

次の部分では Puma がリクエストを処理するのに使用する最大スレッド数と最小スレッド数を設定しています。

max_threads_count = ENV.fetch("RAILS_MAX_THREADS") { 5 }
min_threads_count = ENV.fetch("RAILS_MIN_THREADS") { max_threads_count }
threads min_threads_count, max_threads_count

最大スレッド数に環境変数 RAILS_MAX_THREADS の値を設定します。 RAILS_MAX_THREADS が設定されていない場合はデフォルト値として 5 が設定されます。

次に最小スレッド数に環境変数 RAILS_MIN_THREADS の値を設定します。 RAILS_MIN_THREADS が設定されていない場合はデフォルト値として max_threads_count の値が設定されます。

ワーカープロセス数の設定

次の部分では Puma が本番環境で実行されている場合のワーカープロセス数を設定しています。

if ENV["RAILS_ENV"] == "production"
  require "concurrent-ruby"
  worker_count = Integer(ENV.fetch("WEB_CONCURRENCY") { Concurrent.physical_processor_count })
  workers worker_count if worker_count > 1
end

環境変数 RAILS_ENV が "production" の場合にワーカープロセス数の設定を行います。最初に concurrent-ruby ライブラリを読み込み、次に環境変数 WEB_CONCURRENCY の値を取得しワーカープロセス数に設定します。 WEB_CONCURRENCY が設定されていない場合はシステムの物理プロセッサ数を取得し設定します。

※ Concurrent.physical_processor_count は concurrent-ruby ライブラリのメソッドです。

ワーカープロセス数が 1 より大きい場合、実際にワーカープロセス数として設定します。

ワーカータイムアウトの設定

次の部分では Puma のワーカータイムアウトの設定を行っています。

worker_timeout 3600 if ENV.fetch("RAILS_ENV", "development") == "development"

環境変数 RAILS_ENV が "development" の場合、ワーカータイムアウトを 3600 秒に設定しています。 RAILS_ENV が設定されていない場合はデフォルト値として "development" を使用します。開発環境の場合はワーカータイムアウトの数値を長めの 3600 秒( 1 時間)に設定しています。

使用するポート番号

次の部分では Puma が使用するポート番号の設定を行っています。

port ENV.fetch("PORT") { 3000 }

ポート番号として 3000 を使用するように設定しています。 Puma へアクセスするときは http://localhost:3000/ のようにアクセスします。別のポート番号を使用する場合は 3000 から変更してください。

実行環境の設定

次の部分では Puma の実行環境の設定を行っています。

environment ENV.fetch("RAILS_ENV") { "development" }

環境変数 RAILS_ENV の値を実行環境として設定します。 RAILS_ENV が設定されていない場合はデフォルトとして "development" が設定されます。実行環境には development(開発環境) 、 production(本番環境) 、 test(テスト環境) などが主に使われますが、任意の環境を定義することもできます。

PIDの保存場所

次の部分では PID (プロセスID) の保存場所の設定を行っています。

pidfile ENV.fetch("PIDFILE") { "tmp/pids/server.pid" }

環境変数 PIDFILE の値を PID の保存場所として設定します。 PIDFILE が設定されていない場合はデフォルトとして tmp/pids/server.pid が設定されます。

PIDの保存場所(1)

PIDの保存場所(2)

:tmp_restartプラグインを有効にする

次の部分では :tmp_restart プラグインを有効に設定しています。

plugin :tmp_restart

:tmp_restart プラグインが有効になっていると、 Rails アプリケーションの再起動を簡単に行うことができます。具体的には tmp/restart.txt ファイルを更新すると、自動的に Puma が再起動します。

:tmp_restartプラグインを有効にする(1)

※ tmp/restart.txt ファイルは何も記述されていないファイルです。ファイルのタイムスタンプを更新すれば再起動が行われます。

-- --

Puma の設定ファイルの場所と設定ファイルに記載されている内容について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。