概要
Passenger と Sinatra を連携させてみました
Sinatra アプリに来る前段で何か管理や処理をしたいことがある場合に使えるテクニックかなと思います
環境
- macOS 10.15.6
- Ruby 2.7.1p83
- passenger 6.0.6
- sinatra 2.0.8.1
Sinatra アプリの準備
bundle init
vim Gemfile
gem "sinatra"
bundle install
vim app.rb
require 'sinatra/base'
class MyApp < Sinatra::Base
get '/' do
'ok'
end
end
vim config.ru
require './app'
run MyApp
bundle exec rackup config.ru
これで localhost:9292
で Webrick が動作してアプリにアクセスできます
Passenger 上で動作させる
厳密に言うと Passenger 上で動作させるわけではなく Passenger 経由で Webrick のアプリにアクセスするようになります
vim Gemfile
gem "passenger"
bundle install
vim config.ru
require './app'
require "phusion_passenger/rack_handler"
run MyApp
bundle exec passenger start
と実行すると localhost:3000
が起動してこれを経由して localhost:9292
にアクセスするようになります
Passenger を経由することで pid ファイルや log ファイルがカレントディレクトリに生成されるようになります
ちなみにログファイルの名前は --log-file
オプションでポート番号は --port
で変更できます
Passenger のカスタマイズ
Passenger をカスタマイズするには Passengerfile.json
というファイルを作成しそこに設定を記載することでカスタマイズできます
vim Passengerfile.json
{
"port": 4000,
"log_file": "awesome.log",
"environment": "staging"
}
例えば上記の場合だとログファイル名が awesome.log
になり Passenger の動作ポートが 4000 番になります
すべての設定は先程紹介したようにオプションでも設定できます
他にも多くの設定があります
すべての設定は公式の Configuration reference
が参考になります
最後に
Sinatra と Passenger を連携させてみました
所謂 Web サーバやリバースプロキシ的な役割になるので Web アプリの前段で何か処理をさせたい場合などに使えると思います
またリクエストのロギングなどを更に詳細にしたい場合などにも使えると思います
Passenger 自体にはローリングアップデートやスロットリングの機能もあるのでそういったことをアプリでしないで Passenger に任すこともできると思います
0 件のコメント:
コメントを投稿