Top of my head...

Check permissions on the parent folder too

Also check for a sticky bit?



-----Original Message-----
From: [email protected] [mailto:[EMAIL PROTECTED] On
Behalf Of Jamis Buck
Sent: Sunday, February 25, 2007 2:44 PM
To: [email protected]
Subject: [Capistrano] Re: Troubles deploying first rails application

The following is the error that is causing the deploy to fail:

  ** [out :: 192.168.1.4] ln: creating symbolic link `/var/www/
faresearch/releases/20070225214903/public/system' to `/var/www/
faresearch/shared/system': No such file or directory

But I have no idea _why_ it is causing it to fail. I worked with  
another person, who was getting this error when deploying to RHEL,  
and he verified that the directories in question all exist. Has  
anyone else dealt with this, and come up with a solution? I'm at a loss.

- Jamis

On Feb 25, 2007, at 2:54 PM, Nick wrote:

>
> Dear all,
>
> I'm having troubles deploying my first raisl application from my
> MacBook to my Ubuntu 6.10 linux box.
>
> Here is the error message I get when doing cap cold_deploy:
>
> cap setup
>   * executing task setup
>   * executing "umask 02 &&\n    mkdir -p /var/www/faresearch /var/www/
> faresearch/releases /var/www/faresearch/shared /var/www/faresearch/
> shared/system &&\n    mkdir -p /var/www/faresearch/shared/log &&\n
> mkdir -p /var/www/faresearch/shared/pids"
>     servers: ["192.168.1.4"]
> Password:
>     [192.168.1.4] executing command
>     command finished
> nicolas-hinzes-computer:~/Documents/Mezzoo.com/faresearch Nick$ cap
> cold_deploy
>   * executing task cold_deploy
>   * executing task update
>  ** transaction: start
>   * executing task update_code
>   * querying latest revision...
>   * executing "if [[ ! -d /var/www/faresearch/releases/
> 20070225214903 ]]; then\n              svn co --no-auth-cache   -q -r1
> http://192.168.1.4/svn/faresearch/trunk /var/www/faresearch/releases/
> 20070225214903 &&\n              (test -e /var/www/faresearch/
> revisions.log || (touch /var/www/faresearch/revisions.log && chmod
> 666 /var/www/faresearch/revisions.log)) && echo `date +\"%Y-%m-%d %H:
> %M:%S\"` $USER 1 20070225214903 >> /var/www/faresearch/revisions.log;
> \n            fi"
>     servers: ["192.168.1.4"]
> Password:
>     [192.168.1.4] executing command
>     command finished
>   * executing task set_permissions
>   * executing "chmod -R g+w /var/www/faresearch/releases/
> 20070225214903"
>     servers: ["192.168.1.4"]
>     [192.168.1.4] executing command
>     command finished
>   * executing "rm -rf /var/www/faresearch/releases/20070225214903/ 
> log /
> var/www/faresearch/releases/20070225214903/public/system &&\n    ln -
> nfs /var/www/faresearch/shared/log /var/www/faresearch/releases/
> 20070225214903/log &&\n    ln -nfs /var/www/faresearch/shared/system /
> var/www/faresearch/releases/20070225214903/public/system"
>     servers: ["192.168.1.4"]
>     [192.168.1.4] executing command
>  ** [out :: 192.168.1.4] ln: creating symbolic link `/var/www/
> faresearch/releases/20070225214903/public/system' to `/var/www/
> faresearch/shared/system': No such file or directory
>     command finished
> *** [set_permissions] transaction: rollback
>   * [set_permissions] rolling back
>   * [update_code] rolling back
>   * executing "rm -rf /var/www/faresearch/releases/20070225214903"
>     servers: ["192.168.1.4"]
>     [192.168.1.4] executing command
>     command finished
> command "rm -rf /var/www/faresearch/releases/20070225214903/log /var/
> www/faresearch/releases/20070225214903/public/system &&\\\n    ln -
> nfs /var/www/faresearch/shared/log /var/www/faresearch/releases/
> 20070225214903/log &&\\\n    ln -nfs /var/www/faresearch/shared/
> system /var/www/faresearch/releases/20070225214903/public/system"
> failed on 192.168.1.4
>
> Here is my deploy.rb:
>
> require 'mongrel_cluster/recipes'
>
> # This defines a deployment "recipe" that you can feed to capistrano
> # (http://manuals.rubyonrails.com/read/book/17). It allows you to
> automate
> # (among other things) the deployment of your application.
>
> #
> ====================================================================== 
> =======
> # REQUIRED VARIABLES
> #
> ====================================================================== 
> =======
> # You must always specify the application and repository for every
> recipe. The
> # repository must be the URL of the repository you want this recipe to
> # correspond to. The deploy_to path must be the path on each machine
> that will
> # form the root of the application path.
>
> set :application, "faresearch"
> set :repository, "http://192.168.1.4/svn/#{application}/trunk";
>
> #
> ====================================================================== 
> =======
> # ROLES
> #
> ====================================================================== 
> =======
> # You can define any number of roles, each of which contains any
> number of
> # machines. Roles might include such things as :web, or :app, or :db,
> defining
> # what the purpose of each machine is. You can also specify options
> that can
> # be used to single out a specific subset of boxes in a particular
> role, like
> # :primary => true.
>
> role :web, "192.168.1.4"
> role :app, "192.168.1.4"
> role :db,  "192.168.1.4", :primary => true
>
> #
> ====================================================================== 
> =======
> # OPTIONAL VARIABLES
> #
> ====================================================================== 
> =======
> set :deploy_to, "/var/www/faresearch" # defaults to "/u/apps/
> #{application}"
> set :mongrel_conf, "#{current_path}/config/mongrel_cluster.yml"
> set :user, "root"            # defaults to the currently logged in
> user
> # set :scm, :darcs               # defaults to :subversion
> # set :svn, "/path/to/svn"       # defaults to searching the PATH
> # set :darcs, "/path/to/darcs"   # defaults to searching the PATH
> # set :cvs, "/path/to/cvs"       # defaults to searching the PATH
> # set :gateway, "gate.host.com"  # default to no gateway
>
> #
> ====================================================================== 
> =======
> # SSH OPTIONS
> #
> ====================================================================== 
> =======
> # ssh_options[:keys] = %w(/path/to/my/key /path/to/another/key)
> # ssh_options[:port] = 25
>
> #
> ====================================================================== 
> =======
> # TASKS
> #
> ====================================================================== 
> =======
> # Define tasks that run on all (or only some) of the machines. You can
> specify
> # a role (or set of roles) that each task should be executed on. You
> can also
> # narrow the set of servers to a subset of a role by specifying
> options, which
> # must match the options given for the servers to select
> (like :primary => true)
>
> desc <<DESC
> An imaginary backup task. (Execute the 'show_tasks' task to display
> all
> available tasks.)
> DESC
> task :backup, :roles => :db, :only => { :primary => true } do
>   # the on_rollback handler is only executed if this task is executed
> within
>   # a transaction (see below), AND it or a subsequent task fails.
>   on_rollback { delete "/tmp/dump.sql" }
>
>   run "mysqldump -u theuser -p thedatabase > /tmp/dump.sql" do |ch,
> stream, out|
>     ch.send_data "thepassword\n" if out =~ /^Enter password:/
>   end
> end
>
> # Tasks may take advantage of several different helper methods to
> interact
> # with the remote server(s). These are:
> #
> # * run(command, options={}, &block): execute the given command on all
> servers
> #   associated with the current task, in parallel. The block, if
> given, should
> #   accept three parameters: the communication channel, a symbol
> identifying the
> #   type of stream (:err or :out), and the data. The block is invoked
> for all
> #   output from the command, allowing you to inspect output and act
> #   accordingly.
> # * sudo(command, options={}, &block): same as run, but it executes
> the command
> #   via sudo.
> # * delete(path, options={}): deletes the given file or directory from
> all
> #   associated servers. If :recursive => true is given in the options,
> the
> #   delete uses "rm -rf" instead of "rm -f".
> # * put(buffer, path, options={}): creates or overwrites a file at
> "path" on
> #   all associated servers, populating it with the contents of
> "buffer". You
> #   can specify :mode as an integer value, which will be used to set
> the mode
> #   on the file.
> # * render(template, options={}) or render(options={}): renders the
> given
> #   template and returns a string. Alternatively, if the :template key
> is given,
> #   it will be treated as the contents of the template to render. Any
> other keys
> #   are treated as local variables, which are made available to the
> (ERb)
> #   template.
>
> desc "Demonstrates the various helper methods available to recipes."
> task :helper_demo do
>   # "setup" is a standard task which sets up the directory structure
> on the
>   # remote servers. It is a good idea to run the "setup" task at least
> once
>   # at the beginning of your app's lifetime (it is non-destructive).
>   setup
>
>   buffer = render("maintenance.rhtml", :deadline => ENV['UNTIL'])
>   put buffer, "#{shared_path}/system/maintenance.html", :mode => 0644
>   sudo "killall -USR1 dispatch.fcgi"
>   run "#{release_path}/script/spin"
>   delete "#{shared_path}/system/maintenance.html"
> end
>
> # You can use "transaction" to indicate that if any of the tasks
> within it fail,
> # all should be rolled back (for each task that specifies an
> on_rollback
> # handler).
>
> desc "A task demonstrating the use of transactions."
> task :long_deploy do
>   transaction do
>     update_code
>     disable_web
>     symlink
>     migrate
>   end
>
>   restart
>   enable_web
> end
>
> Here is my mongrel_cluster.yml:
>
> ---
> cwd: /var/www/faresearch/current
> port: "8000"
> environment: production
> pid_file: log/mongrel.pid
> servers: 2
>
> ---
>
> Any help would be greatly appreciated.
>
> Thanks
>
>
> >




--~--~---------~--~----~------------~-------~--~----~
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/capistrano
-~----------~----~----~----~------~----~------~--~---

Reply via email to