Created
January 22, 2011 17:58
-
-
Save JangoSteve/791304 to your computer and use it in GitHub Desktop.
Capistrano script to install Ruby, RVM, Rails in ubuntu (modified from deploy.rb scripts)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
namespace :ubuntu do | |
desc "Setup Environment" | |
task :setup_env, :roles => :app do | |
update_apt_get | |
install_dev_tools | |
install_git | |
install_subversion | |
install_sqlite3 | |
# Install and setup RVM instead of old Rails stack | |
#install_rails_stack | |
setup_rvm | |
install_apache | |
# This is now done in RVM setup | |
#install_passenger | |
#config_passenger | |
install_imagemagick | |
install_mysql | |
install_mysql_bindings | |
install_postgres | |
install_dos2unix | |
end | |
desc "Setup RVM environment with Rails" | |
task :setup_rvm, :roles => :app do | |
install_rvm | |
install_rvm_ruby | |
install_rvm_passenger | |
install_rvm_rails | |
end | |
# Forces a quiet install for particularly annoying packages requiring complex input | |
def apt_quiet_install(*packages) | |
apt_get = "DEBCONF_TERSE='yes' DEBIAN_PRIORITY='critical' DEBIAN_FRONTEND=noninteractive apt-get" | |
sudo "#{apt_get} -qyu --force-yes install #{packages}" | |
end | |
desc "Update apt-get sources" | |
task :update_apt_get, :roles => :app do | |
sudo "apt-get update" | |
end | |
desc "Install and setup RVM" | |
task :install_rvm, :roles => :app do | |
# https://github.com/wayneeseguin/rvm/raw/master/contrib/install-system-wide | |
sudo "bash < <( curl -L -k http://bit.ly/rvm-install-system-wide )", :shell => false | |
puts <<-EOS | |
Put this at the end of ~/.bashrc: | |
[[ -s "/usr/local/lib/rvm" ]] && . "/usr/local/lib/rvm" # This loads RVM into a shell session. | |
EOS | |
run "source /usr/local/lib/rvm", :shell => false | |
sudo "adduser #{user} rvm" | |
end | |
desc "Install RVM ruby and set as default" | |
task :install_rvm_ruby, :roles => :app do | |
sudo "rvm install 1.8.7" | |
sudo "rvm --default use 1.8.7" | |
end | |
desc "Install and setup RVM Passenger" | |
task :install_rvm_passenger, :roles => :app do | |
set :default_environment, { | |
'PATH' => "/usr/local/rvm/gems/ruby-1.8.7-p302/bin:/usr/local/rvm/gems/ruby-1.8.7-p302@global/bin:/usr/local/rvm/rubies/ruby-1.8.7-p302/bin:/usr/local/rvm/bin:/usr/local/bin:/usr/bin:/bin", | |
'RUBY_VERSION' => 'ruby 1.8.7', | |
'GEM_HOME' => '/usr/local/rvm/gems/ruby-1.8.7-p302', | |
'GEM_PATH' => '/usr/local/rvm/gems/ruby-1.8.7-p302'#, | |
#'BUNDLE_PATH' => '/home/deploy/.rvm/gems/ruby-1.8.7-p302@leadnuke' # If you are using bundler. | |
} | |
run "rvm 1.8.7 --passenger" | |
run "rvm 1.8.7" | |
run "rvmsudo gem install passenger -v=2.2.15 --no-ri --no-rdoc" do |ch, stream, out| | |
print out | |
ch.send_data "#{user_passphrase}\n" if out =~ /password for #{user}:/ | |
end | |
input = '' | |
run "rvmsudo passenger-install-apache2-module" do |ch,stream,out| | |
next if out.chomp == input.chomp || out.chomp == '' | |
print out | |
ch.send_data(input = $stdin.gets) if out =~ /(Enter|ENTER)/ | |
end | |
puts <<-EOS | |
replace PassengerRuby in passenger conf with: | |
PassengerRuby /usr/local/rvm/bin/passenger_ruby | |
EOS | |
end | |
desc "Install RVM Rails" | |
task :install_rvm_rails, :roles => :app do | |
#require 'rvm/capistrano' | |
#set :rvm_ruby_string, 'some-ruby' # Defaults to 'default' | |
run "gem install -v=2.3.9 rails" | |
end | |
desc "Install Development Tools" | |
task :install_dev_tools, :roles => :app do | |
sudo "apt-get install build-essential -y" | |
end | |
desc "Install Git" | |
task :install_git, :roles => :app do | |
sudo "apt-get install git-core git-svn -y" | |
end | |
desc "Install Subversion" | |
task :install_subversion, :roles => :app do | |
sudo "apt-get install subversion -y" | |
end | |
desc "Install MySQL" | |
task :install_mysql, :roles => :app do | |
apt_quiet_install('mysql-server libmysql-ruby') | |
#sudo "apt-get install mysql-server libmysql-ruby -y" | |
end | |
desc "Install PostgreSQL" | |
task :install_postgres, :roles => :app do | |
sudo "apt-get install postgresql libpgsql-ruby -y" | |
end | |
desc "Install SQLite3" | |
task :install_sqlite3, :roles => :app do | |
sudo "apt-get install sqlite3 libsqlite3-ruby -y" | |
end | |
desc "Install Ruby, Gems, and Rails" | |
task :install_rails_stack, :roles => :app do | |
[ "sudo apt-get install ruby ruby1.8-dev irb ri rdoc libopenssl-ruby1.8 -y", | |
"mkdir -p src", | |
"cd src", | |
"wget http://rubyforge.org/frs/download.php/45905/rubygems-1.3.1.tgz", | |
"tar xzvf rubygems-1.3.1.tgz", | |
"cd rubygems-1.3.1/ && sudo ruby setup.rb", | |
"sudo ln -s /usr/bin/gem1.8 /usr/bin/gem", | |
"sudo gem update --system", | |
"sudo gem install rails --no-ri --no-rdoc" | |
].each {|cmd| run cmd} | |
end | |
desc "Install MySQL Rails Bindings" | |
task :install_mysql_bindings, :roles => :app do | |
apt_quiet_install('libmysql-ruby1.8 libmysqlclient15-dev') | |
#sudo "aptitude install libmysql-ruby1.8 libmysqlclient15-dev -y" | |
end | |
desc "Install ImageMagick" | |
task :install_imagemagick, :roles => :app do | |
sudo "apt-get install libxml2-dev libmagick9-dev imagemagick -y" | |
#sudo "gem install rmagick" | |
end | |
desc "Install Apache" | |
task :install_apache, :roles => :app do | |
sudo "apt-get install apache2 apache2.2-common apache2-mpm-prefork | |
apache2-utils libexpat1 apache2-prefork-dev libapr1-dev -y" | |
sudo "chown :sudo /var/www" | |
sudo "chmod g+w /var/www" | |
end | |
desc "Install Passenger" | |
task :install_passenger, :roles => :app do | |
run "sudo gem install passenger --no-ri --no-rdoc" | |
input = '' | |
run "sudo passenger-install-apache2-module" do |ch,stream,out| | |
next if out.chomp == input.chomp || out.chomp == '' | |
print out | |
ch.send_data(input = $stdin.gets) if out =~ /(Enter|ENTER)/ | |
end | |
end | |
desc "Configure Passenger" | |
task :config_passenger, :roles => :app do | |
passenger_config =<<-EOF | |
LoadModule passenger_module /usr/lib/ruby/gems/1.8/gems/passenger-2.2.4/ext/apache2/mod_passenger.so | |
PassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger-2.2.4 | |
PassengerRuby /usr/bin/ruby1.8 | |
EOF | |
put passenger_config, "src/passenger" | |
sudo "mv src/passenger /etc/apache2/conf.d/passenger" | |
end | |
desc "Install dos2unix" | |
task :install_dos2unix, :roles => :app do | |
sudo "aptitude install tofrodos" | |
end | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Thanks for sharing.
Might need
default_run_options[:pty] = true
at the beginning to prevent the "no tty present and no askpass program specified" error.