Archive for the ‘capistrano’ Category
nginx 0.6.6 – make install fails
I’m trying to deploy a Rails app to a new server with Deprec and Capistrano Server Extensions (capserverext). The capistrano task fails when compiling nginx, during the `make install` bit. The make errors are something like this:
cp: cannot create regular file `/usr/local/nginx/conf/mime.types.default'
No such file or directory
I tried compiling nginx directly, to eliminate deprec and capserverext, and the problem persisted.
After much head beating, and with disbelief, I concluded that the problem was a bug in nginx. Hubristic, I know. But searching the nginx mailing list immediately turned up a message with a patch from the developer. The ‘@@’s in this patch is munged on the web, so I pastied it for your consumption.
The problem stems from the addition of a new configure option, --sysconfdir. This new option means that capserverext is going to need a change to the compile_nginx task.
Once patched, you can run configure with --sysconfdir=/usr/local/nginx/conf to meet capserverext’s assumptions. But having to patch the source breaks the whole install_nginx task anyway.
What you do, though, is bravely pretend that prepare_host is going to work. When it fails:
- ssh into the server and cd to /usr/local/src/nginx-0.6.6/
- wget http://pastie.caboo.se/84215.txt
- patch -p0 < 84215.txt
- run the configure script with the arguments from capserverext’s nginx recipe plus –sysconfdir=/usr/local/nginx/conf
sudo ./configure --sbin-path=/usr/local/sbin \ --pid-path=/var/run/nginx.pid \ --error-log-path=/var/log/nginx/error.log \ --http-log-path=/var/log/nginx/access.log \ --with-http_ssl_module \ --sysconfdir=/usr/local/nginx/conf - sudo make
- sudo make install
- rm /usr/local/nginx/conf/nginx.conf
Now nginx 0.6.6 should be installed on your server. Back on your dev machine run the following tasks to get back on track:
cap install_nginx_start_scriptcap nginx_postgres_rails_setup( orcap nginx_mysql_rails_setup, if you’re using mysql)
This gets you past the prepare_host task.
Here’s hoping this post becomes obsolete very soon.
Capifying a Merb application
UPDATE: I was embarrassed that I actually get hits on this post, so I’m adding a stripped down example deploy.rb.
Create a directory named config in the Merb root (not inside dist).
Create your deploy.rb file inside the config directory. Here’s a stripped down version of what I have used:
# ./config/deploy.rb
# Do your merb daemon configuration in ./dist/conf/merb.yml
set :application, "awesome_thingummy"
set :scm_name, "thingummy"
set :repository, "svn://thelese.com/merb//trunk"
set :checkout, "checkout"
# =============================================================================
# ROLES
# =============================================================================
role :web, "slice1.automatthew.com"
role :app, "slice1.automatthew.com"
# =============================================================================
# OPTIONAL VARIABLES
# =============================================================================
set :deploy_to, "/var/www/apps/"
set :user, "deployer" # defaults to the currently logged in user
# set :scm, :darcs # defaults to :subversion
set :svn, "/opt/local/bin/svn"
set :merb, "/opt/local/bin/merb --merb-root /current"
task :spinner do
run merb
end
task :restart do
run " -k all"
run merb
end
task :update_code do
run " --quiet "
end
task :after_update_code do
run "ln -s /log /log"
end
desc "Deploy the app"
task :deploy do
transaction do
update_code
symlink
end
restart
end
Comments (3)
Leave a Comment