レンタルサーバーでRuby on Railsを動かす? [デプロイ]
最近、RubyとWebフレームワークであるRuby on Railsを始めました。
参考書は「現場で使える Ruby on Rails 5速習実践ガイド」「プロを目指す人のためのRuby入門」で、合計10.5日で読破しました。
さて、ローカル環境でRailsのプロジェクトは構築できるようになったのですが、双方の参考書では、Webで公開する方法が記載されていません。
デプロイするには「IaaSであるAWS、PaaSのHeroku、VPSのさくら、ConoHa、クラウドVPS(GMO)、WebARENA(VPSクラウド)、KAGOYA CLOUD」などがありますが、今回はレンタルサーバーで試して見ました。
結論
レンタルサーバーでRailsは動作しないと思った方が良い。特殊な方法で動作させてもCGIモードで表示が遅い。処理が重いのでサーバー側でキルされる可能性がある。 |
※ネットで調査した所、2010年頃はFastCGIで動作した模様。
以下、わたしの奮闘記となります。ご参考までに。
XREAのサーバー構成
Railsが初期状態でインストールされています。コアサーバーも恐らく同じ。
Apache/2.4.6 (CentOS) |
ruby 2.3.0p0 (2015-12-25 revision 53290) [x86_64-linux] |
rbenvではなくrvmでrubyを管理 |
RubyGems 2.6.10 |
Bundler version 1.14.5 |
Rails 5.0.1 |
管理者権限でこれらがインストールされているので、厄介です。
rbenvをインストールすると、他のバージョンのRuby/Railsを利用可能です。ただし、「rvm system」でRVMを無効にして「rbenv global 2.5.1」で2.5.1のRubyを有効にできますが、一定の時間が経過すると「bundle install」では管理者権限でインストールされているRVM経由のRubyのgemsの方へ書き込みに行ってしまい。書き込み権限がないというエラーになります。
※初期状態でインストール済みのRailsは使用しない方が良いです。何故ならばレンタルサーバーなのでいつ、バージョンアップされるか不明です。
CGI/FastCGI
Railsで作成されているRedmine(プロジェクト管理ソフトウェア)のソースコードが参考になります。主に「dispatch.fcgi」「.htaccess」。その他は、Railsプロジェクトの公開方法をご教授ください。
ちなみに、rbenvでRuby2.5.1をインストールした時のdispatch.fcgiのShebang(先頭行の#!)は次のようになります。
#! /virtual/ユーザー名/.rbenv/versions/2.5.1/bin/ruby
dispatch.fcgiのコードで使用されているRackではCGI、FastCGI、WEBrick、LSWS、SCGI、Thinが指定可能です。
FastCGIで付け加えると、gem 'fcgi'はインストールできません。
これは解決できません。管理者権限が必要な「ライブラリ」(fcgi開発パッケージ? fcgi-devel? libfcgi-dev?)のインストールが出来ないからです。
CGI系ファイルのパーミッションは「705 or 755」を忘れずに。
Puma
Pumaに関しては「bin/rails s」は「bin/rails: Permission denied」です。なので、cdでbinに移動してから「rails s」でPumaを起動します。但し、30秒ぐらいで見事にキルされます。
どうする?
ConoHaのVPSを学習の為に契約しようと思っています。最初はメモリ1GB(年10,800円)で様子を見て、アクセス数に応じて2GB(年21,000円)、4GB(年41,040円)にスケールアップしようと考えています。
VPSを契約しました。
Nginx/Unicorn/Ruby on Railsの本番環境構築/デプロイ [CentOS]