さて、ひと通り出来上がったのでテストしてもらうために、動作環境であるレンタルサーバーにRuby on Railsが動作する環境を構築しました。
事前に動作するというのは確認できていたので、いろんなサイトを参考にしながら試行錯誤で環境を構築しました。
この時点で、レスポンスが遅いというのは情報として知ってました。
でも、本当に遅いのかというのがわからなかったのと、FCGIだと速いという情報もあったので大丈夫だろうと思ってました。
構築手順
かなり日にちが経っててよく覚えてませんが、当時のメモをそのまま載せておきます。ものすごく適当です。
お遊びで構築したい人向けです。間違っても本番運用しないで下さい。泣くのは開発者であるあなたです。
1.wwwディレクトリと同階層にappディレクトリを作成する
2.appディレクトリにRailsプロジェクトを配置する
3.Rails/publicに.htaccessを作成する
RewriteEngine On
RewriteRule ^$ index.html [QSA]
RewriteRule ^([^.]+)$ $1.html [QSA]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ dispatch.cgi [QSA,L]
ErrorDocument 500"Application errorRails application failed to start properly"
4.Rails/publicにdispatch.cgiを作成し、権限を755にする
#!/home/user/local/rbenv/versions/2.2.3/bin/rubyENV["RAILS_ENV"] = "production"ENV["SECRET_KEY_BASE"] = "7cd8a5e38cfeddd0d0a4b45ad4bf75fd2cffe124f43388c34e6f29cf2c2e78f7d9cc1b2003f913be65c54f6ec61c7032609d3c9d88d6b3dc5226925a825b8379"ENV["RAILS_SERVE_STATIC_FILES"] = "true"requireFile.dirname(__FILE__) + '/../config/environment'classRack::PathInfoRewriterdefinitialize(app)
@app = app
enddefcall(env)
env.delete('SCRIPT_NAME')
parts = env['REQUEST_URI'].split('?')
env['PATH_INFO'] = parts[0]
env['QUERY_STRING'] = parts[1].to_s
env['PATH_INFO'] = env['PATH_INFO'].gsub(/\A#{ENV['RAILS_RELATIVE_URL_ROOT']}(.*)\Z/, '\1')
env['SCRIPT_NAME'] = ENV['RAILS_RELATIVE_URL_ROOT']
@app.call(env)
endendRack::Handler::CGI.run Rack::PathInfoRewriter.new(Hoge::Application)
5.Rails/config/boot.rbに以下を追記する
ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__)
require'bundler/setup'ifFile.exist?(ENV['BUNDLE_GEMFILE'])
$LOAD_PATH.push('/home/user/local/rbenv/versions/2.2.3/lib/ruby/2.2.0')
$LOAD_PATH.push('/home/user/local/rbenv/versions/2.2.3/lib/ruby/site_ruby/2.2.0')
$LOAD_PATH.push('/home/user/local/rbenv/versions/2.2.3/lib/ruby/gems/2.2.0')
$LOAD_PATH.push('/home/user/local/rbenv/versions/2.2.3/lib/ruby')
$LOAD_PATH.push('/home/user/local/rbenv/versions/2.2.3/lib')
ENV['PATH'] += ':/home/user/local/bin'ENV['GEM_HOME'] ||= '/home/user/local/rbenv/versions/2.2.3/lib/ruby/gems/2.2.0'ENV['RAILS_RELATIVE_URL_ROOT'] = '/hoge'
6.静的ファイルをプレコンパイルする
rake assets:precompile RAILS_ENV=production
7.node.jsを編集する
/local/src/node-v0.10.38/deps/v8/tools/gyp/v8.gyp
['OS=="freebsd"', {'include_dirs+':['/home/user/local/include'],
'link_settings': {'libraries': ['-L/usr/local/lib -L${HOME}/local/lib -lexecinfo',
]},
'sources': ['../../src/platform-freebsd.cc',
'../../src/platform-posix.cc'],
}],
$ cd ~/local/src
$ wget http://www.fastcgi.com/dist/fcgi.tar.gz
$ tar xvzf fcgi.tar.gz
$ cd fcgi-2.4.1-SNAP-0311112127
$ ./configure --prefix=$HOME/localCFLAGS="-g -O2 -Wall -fPIC"CXXFLAGS="-g -O2 -Wall -fPIC"
$ make
$ make install
$ cd ~/appdir
$ bundle exec gem install fcgi -- --with-fcgi-include=$HOME/local/include --with-fcgi-lib=$HOME/local/lib
$ vi Gemfile
追記 gem 'fcgi'
$ bundle update