Movatterモバイル変換


[0]ホーム

URL:


酒と泪とRubyとRailsと

Railsへのunicornのインストール


Railsへのunicorn(Webサーバ)の導入手順です。Rails標準のWebサーバpumaはマルチスレッドなのでスレッドセーフな実装が必要です。一方でunicornはマルチプロセスなのでスレッドを意識せずに実装ができます。既存アプリケーションを運用する際にスレッドセーフ出ない場合は、unicornを選択するとよいと思います。

🐝インストール

Gemfileに以下を追加してbundle installを実行。

# Web Server
gem'unicorn'

🎂設定

config/unicorn.rbにunicornの設定を記述。

# プロジェクトのルート
rails_root = ENV['RAILS_ROOT']|| File.expand_path('../../', __FILE__)

if ENV['RAILS_ENV'] =='development'# for pry
worker_processes1
else
worker_processes ENV['UNICORN_WORKER_PROCESSES'].to_i >0 ? ENV['UNICORN_WORKER_PROCESSES'].to_i :2
preload_apptrue# Unicornの再起動時にダウンタイムなしで再起動

stderr_path"#{rails_root}/log/unicorn_stderr.log"
stdout_path"#{rails_root}/log/unicorn_stdout.log"
pid"#{rails_root}/tmp/pids/unicorn.pid"
end

working_directory rails_root

timeout300

listen3000
listen"#{rails_root}/tmp/sockets/unicorn.sock"

before_forkdo|server, worker|
ApplicationRecord.connection.disconnect!ifdefined?(ApplicationRecord) && ApplicationRecord.connected?

old_pid ="#{server.config[:pid]}.oldbin"
if old_pid != server.pid
begin
# USR2シグナルを受けると古いプロセスを止める
sig = (worker.nr +1) >= server.worker_processes ?:QUIT ::TTOU
Process.kill(sig, File.read(old_pid).to_i)
rescue Errno::ENOENT, Errno::ESRCH
end
end
end

after_forkdo|_server, _worker|
ApplicationRecord.establish_connectionifdefined?(ApplicationRecord)
end

👽サーバの起動

次のコマンドでサーバを起動。

bundleexec unicorn_rails -c config/unicorn.rb

😎参考リンク

🖥 VULTRおすすめ

VULTR」はVPSサーバのサービスです。日本にリージョンがあり、最安は512MBで2.5ドル/月($0.004/時間)で借りることができます。4GBメモリでも月20ドルです。 最近はVULTRのヘビーユーザーになので、「ここ」から会員登録してもらえるとサービス開発が捗ります!

📚 おすすめの書籍

Rails/Modelバリデーションコールバック変更前後の値の確認値の保存・更新アソシエーション削除メソッドSQLの実行日付カラムの設定便利なDB関連設定読込み専用(Read Only)Concern(共通処理)クエリTipsRails/Controllerrenderレシピ集HTTPステータスシンボルIPの取得についてStrong ParametersControllerのTipsRails/ViewHAMLチートシート画像アップロードフォームS3への画像アップロードForm Objectフォームヘルパー検索可能なselectタグenum - selectタグシンプルな検索ボックス別ウィンドウ・フォームRailsいろいろi18nについてRails.cacheメール送信ロギングCapistrano3でデプロイセッション管理環境ごとのYAML設定読込xx分前の時間表記Tipsいろいろ便利ライブラリ簡単Webmock:VCRN+1対策:bullet環境変数の管理: dotenvi18nサポート: i18n-tasksLDAP:net-ldapヘッダ:secureheadersrack-mini-profileractiverecord-precountカバレッジ計測パンくずリスト+MetadataRSpecの記法自動修正アプリランキング取得Unicorn導入手順unicorn-worker-killerRSpecController SpecCapybaraとヘッドレスChromeRequest SpecAPI認証 Spec便利Tipsデザインパターン概要アブストラクトファクトリビルダファクトリメソッドアダプタコンポジットデコレータプロキシコマンドインタプリタイテレータオブザーバストラテジテンプレートメソッドRuby基礎文字列/String配列/Arrayハッシュ/Hash構造体/StructSpawn(コマンド実行)BundlerについてTipsRails 5.1へのアップデートRails 5へのアップデートrbenvバージョンアップpumaをsystemdで動かすURI.encodeとCGI.escapeURLのパラメータを変更処理時間を計測画像JPEG/PNG/GIF判定トラブルシュートNo route matches assets

[8]ページ先頭

©2009-2025 Movatter.jp