将rails部署到heroku
作者:gcbeen
日期:2014年03月04日
将rails部署到heroku
ubuntu 12.04 rvm 1.20.12 ruby 1.9.3 rails 3.2.16 unicorn 4.7.0
1.安装heroku toolbelt
wget -qO- https://toolbelt.heroku.com/install-ubuntu.sh | sh
2.登录添加公钥
heroku login heroku keys:add ~/.ssh/id_rsa.pub
3.使用pg数据库
# install pg sudo apt-get install postgresql postgresql-contrib # phpPgAdmin download phpPgAdmin 加压到/var/www/ # Gemfile gem 'pg' bundle
设置database
# config/database.yml development: &default adapter: postgresql encoding: unicode host: localhost database: app_name_development username: username password: 'password' pool: 5 timeout: 5000 # Warning: The database defined as "test" will be erased and # re-generated from your development database when you run "rake". # Do not set this db to the same as development or production. test: <<: *default database: app_name_test production: <<: *default database: app_name_production
4.数据库迁移
rake db:create rake db:migrate
- precompile assets
RAILS_ENV=production rake db:create RAILS_ENV=production bundle exec rake assets:precompile
6.使用unicorn
# Gemfile gem 'unicorn' bundle # Procfile web: bundle exec unicorn -p $PORT -E $RACK_ENV -c ./config/unicorn.rb # config/unicorn.rb # -*- encoding : utf-8 -*- if ENV["RAILS_ENV"] != 'production' # config/unicorn.rb # development working_directory "/project_path" pid "/project_path/tmp/pids/unicorn.pid" stderr_path "/project_path/unicorn/err.log" stdout_path "/project_path/unicorn/out.log" listen "/tmp/unicorn.todo.socket" worker_processes 2 timeout 30 else # config/unicorn.rb worker_processes Integer(ENV["WEB_CONCURRENCY"] || 3) timeout 15 preload_app true before_fork do |server, worker| Signal.trap 'TERM' do puts 'Unicorn master intercepting TERM and sending myself QUIT instead' Process.kill 'QUIT', Process.pid end defined?(ActiveRecord::Base) and ActiveRecord::Base.connection.disconnect! end after_fork do |server, worker| Signal.trap 'TERM' do puts 'Unicorn worker intercepting TERM and doing nothing. Wait for master to send QUIT' end defined?(ActiveRecord::Base) and ActiveRecord::Base.establish_connection end end
7.提交到heroku
heroku create git remote -v git remote add [name] [url] git push [name] master
8.数据库迁移
heroku run rake db:crate heroku run rake db:migrate
blog comments powered by Disqus