Attached is a patch that adds nginx and postgresql recipes. I haven't had a chance to test em within deprec yet (before doing the diff I made a few quick changes, mostly just changing the puts to render_template_to_file) , but worked fine in my own app. I haven't made any changes to the rest of deprec, as I'm not sure how you want to integrate them...
I integrated it the following way, but it may want to be rethought so you could do set :db, :postgresql and set :webserver, :nginx and have it automatically use the right one, or maybe you want to have the deprec config generator prompt the user to what DB and what webserver they want, and generate the relevant config stub for them.
require 'deprec/recipes'
require 'deprec/recipes/cache_svn'
require File.dirname(__FILE__) + '/recipes/nginx'
require File.dirname(__FILE__) + '/recipes/postgresql'
set :user, 'admin'
set :group, 'admin'
set :domain, "domain.com"
set :domain_aliases, %w(www.domain.com)
role :web, domain
role :app, domain
role :db, domain, :primary => true
set :application, "someapp"
set :deploy_to, "/var/www/apps/#{application}"
set :repository_cache, "#{shared_path}/svn_trunk/"
set :repository, "https://mysvn/#{application}/trunk"
set :rails_env, "production"
# =============================================================================
# MONGREL OPTIONS
# =============================================================================
# set :mongrel_servers, 2
# set :mongrel_port, 8000
# set :mongrel_address, "127.0.0.1"
# set :mongrel_environment, "production"
set :mongrel_user, user
set :mongrel_group, group
# =============================================================================
# NGINX OPTIONS
# =============================================================================
set :nginx_server_name, domain
set :nginx_proxy_port, mongrel_port
set :nginx_proxy_address, mongrel_address
set :nginx_proxy_servers, mongrel_servers
set :nginx_doc_root, current_path + "/public"
set :nginx_server_aliases, [domain] + domain_aliases
set :nginx_user, user
set :nginx_group, group
set :nginx_setup_optional_modules, %w(http_flv_module)
# HACK to remove mysql-server from the list of installed apt packages
rails_ubuntu[:base].delete "mysql-server"
rails_ubuntu[:base].delete "libmysql-ruby"
# HACK I think this should be referred to as domain_aliases when we have multiple web servers?
set :apache_server_aliases, domain_aliases
desc "Overrides deprec to install nginx instead"
task :install_rails_stack do
setup_user_perms
enable_universe # we'll need some packages from the 'universe' repository
disable_cdrom_install # we don't want to have to insert cdrom
install_packages_for_rails # install packages that come with distribution
install_rubygems
install_gems
install_nginx
end
desc "Overrides deprec to set up nginx instead of apache (relies on mongrel vars being set)"
task :setup_web, :roles => :web do
configure_nginx
end
desc "Overrides deprec to remove some apache variables (relies on mongrel vars being set)"
task :setup_app, :roles => :app do
install_mongrel_start_script
setup_mongrel_cluster_path
configure_mongrel_cluster
end
desc "Overrides deprec to set up postgresql instead of mysql"
task :setup_db, :roles => :db, :only => { :primary => true } do
setup_postgresql
gem.install "postgres -- --with-pgsql-lib-dir=/usr/lib/postgresql --with-pgsql-include-dir=/usr/include/postgresql"
end