Forum: Ruby on Rails capistrano and Dreamhost issue

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Didier V. (Guest)
on 2006-05-18 19:16
(Received via mailing list)
Hi,

i'm striving to capistranize a foo app on DH.

Everything is hosted on DH to simplify a bit :
  - svn repository (http access)
  - the application
  - the DB

I used the recipe of Jamis B. modified by Geoffrey Grosenbach which
you can find here : http://nubyonrails.com/pages/shovel_dreamhost

I did the least modifications possible. As recommended.

1) When I launch the 'rake deploy' it appears that the reaper and
spawner script are not correctly "chmoded", neither is executable. So I
get an error message "permission denied".

2) Anyway I connect thru ssh and do the work manually :

chmod +x reaper
chmod +x spawner
./reaper --dispatcher=dispatch.fcgi

and the response is :

Couldn't find any process matching: dispatch.fcgi


By the way, the dispatch.* files are not executable but chmoding them
doesn't change the response (it is perhaps obvious)

Any idea ?

Didier
Charles Brian Q. (Guest)
on 2006-05-24 19:10
(Received via mailing list)
On 5/18/06, Didier V. <removed_email_address@domain.invalid> wrote:
>
> 1) When I launch the 'rake deploy' it appears that the reaper and
> spawner script are not correctly "chmoded", neither is executable. So I
> get an error message "permission denied".


One of the few things I do in the after update code tasks are:

desc "Tasks to execute after code update"
task :after_update_code, :roles => [:app, :db] do
  # ..snip...
  sudo "chmod -R +x #{release_path}/script/*"
  sudo "chown -R #{user} #{release_path}/script/*"
  # ..snip..
end

I think you can also get away with just:

  run "chmod 755 #{release_path}/script/process/spawner"
  run "chmod 755 #{release_path}/script/process/reaper"

doing the numeric executable for owning user if you're paranoid.

2) Anyway I connect thru ssh and do the work manually :
>
> chmod +x reaper
> chmod +x spawner
> ./reaper --dispatcher=dispatch.fcgi
>
> and the response is :
>
> Couldn't find any process matching: dispatch.fcgi


This is because you might be launching:

/path/to/app/releases/release_num/public/dispatch.fcgi

but are now trying to reap:

/path/to/app/current/dispatch.fcgi

see which ones are running by using:

ps aux | grep dispatch.fcgi

and compare that to the ones your reaper is trying to reap.

I also have an updated spin task that is not hardcoded to the server,
though
it requires a little unix scripting, see:

http://wiki.rubyonrails.com/rails/pages/LighttpdWi... until
I
finish my writeups.

I'd like to add this to the real Deploying with Capistrano page, as I've
setup quite a few boxen for our customers and clients using capistrano
with
single servers and multi-boxen (web/app and db separate), but I'm
working on
that.

hope that helps,
Didier V. (Guest)
on 2006-06-16 14:35
(Received via mailing list)
Hi,

i'm still experiencing problems ...

though i tested

> desc "Tasks to execute after code update"
> task :after_update_code, :roles => [:app, :db] do
>   # ..snip...
>   sudo "chmod -R +x #{release_path}/script/*"
>   sudo "chown -R #{user} #{release_path}/script/*"
>   # ..snip..
> end

where i changed sudo in run as i'm not a sudoer user
and added the line
   run "chmod -R 755 #{release_path}/public"

the task executes without problem.

But i still get the error when the reaper tries to execute

> Couldn't find any process matching: /path/to/app/current/public/dispatch.fcgi

however dispatch.fcgi exists, is 755 as anything else in public/ and the
symlink 'current' references the correct release


>
> This is because you might be launching:
>
> /path/to/app/releases/release_num/public/dispatch.fcgi
>
> but are now trying to reap:
>
> /path/to/app/current/dispatch.fcgi
>
> [...]
 >
> --
> Charles Brian Q.
> www.seebq.com <http://www.seebq.com>


i'm a bit disappointed !

Didier
Al E. (Guest)
on 2006-06-17 16:43
Didier V. wrote:


> But i still get the error when the reaper tries to execute
>
>> Couldn't find any process matching: /path/to/app/current/public/dispatch.fcgi
>
> however dispatch.fcgi exists, is 755 as anything else in public/ and the
> symlink 'current' references the correct release

I've seen this problem on Dreamhost. What's happening is that because of
a bit of software involved in the hosting setup (I can't remember the
name at the moment), absolute paths don't look the same from a script as
they do from a shell. For example:

server:~ me$ pwd
/home/me
server:~ me$ ruby -e 'puts `pwd`'
/home/.chandra/me
server:~ me$ perl -e 'print `pwd`'
/home/.chandra/me

There are a few other problems with the stock reaper script -- for
example, if you've got two or more applications running, it doesn't
distinguish between them.

I've written a "smart" replacement script. I've got a bit more testing
to do before I release it to the world, but I've been pleased with it so
far. It parses the FCGI crash log to find out which dispatcher processes
are running for a specific app, and adds an "expire" command for
dispatchers that have become unresponsive (which I see a lot on
Dreamhost).

if you'd like to help test, send me an email: anejr at alevans.com. I'll
be happy to send you a copy.

--Al Evans
This topic is locked and can not be replied to.