Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I get passenger-config restart-app to work?

Rails 4.1 on Ubuntu 14.04 with rbenv and ruby 2.2.1.

Using capistrano with the capistrano-passenger gem, but the restart at the end fails:

INFO [8213c63a] Running /usr/bin/env passenger-config restart-app /home/deployer/my_app --ignore-app-not-running as [email protected]
DEBUG [8213c63a] Command: passenger-config restart-app
DEBUG [8213c63a]    Please pass either an app path prefix or an app group name. See --help for more information.

When I try to run this command at the command line via SSH, I get this:

    deployer@host:~/app/shared/config$ passenger-config restart-app
*** ERROR: You are not authorized to query the status for this

What am I doing wrong here?

I'm using Apache, here's the relevant parts of my /etc/apache2/apache2.conf:

LoadModule passenger_module /home/deployer/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/passenger-5.0.5/buildout/apache2/mod_passenger.so
   <IfModule mod_passenger.c>
     PassengerRoot /home/deployer/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/passenger-5.0.5
     PassengerDefaultRuby /home/deployer/.rbenv/versions/2.2.1/bin/ruby
   </IfModule>

<VirtualHost *:80>
      ServerName mysite.name.com
      # !!! Be sure to point DocumentRoot to 'public'!
      DocumentRoot /home/deployer/myssite/current/public
      <Directory /home/deployer/mysite/current/public>
         # This relaxes Apache security settings.
         AllowOverride all
         # MultiViews must be turned off.
         Options -MultiViews
         # Uncomment this if you're on Apache >= 2.4:
         Require all granted
      </Directory>
   </VirtualHost>
like image 365
croceldon Avatar asked Mar 26 '15 17:03

croceldon


2 Answers

Here's what got me running, I added this to my conifg/deploy.rb:

set :passenger_restart_with_sudo, true

Ref: https://github.com/capistrano/passenger/

To add password-less sudo access for the deployer user, on the server do:

(you might want to be more specific as to the allowed commands)

sudo tee /etc/sudoers.d/deployer > /dev/null <<'EOF'
deployer ALL=(ALL) NOPASSWD:ALL
EOF

...and in your delpoy.rb, have:

set :user, 'deployer' # Deployment user on remote servers

Note: it should be noted that the Passenger authors are working on a method so that sudo will not be required any longer in the future.

like image 142
Karl Wilbur Avatar answered Sep 27 '22 17:09

Karl Wilbur


If you don't want to use sudo for restarting application server, simply add to config/deploy.rb:

namespace :deploy do
  desc 'Restart application'
  task :restart do
    on roles(:app), in: :sequence, wait: 5 do
      execute :touch, release_path.join('tmp/restart.txt')
    end
  end
end

For restarting with sudo (Note that it doesn't have any effect on Passenger < 5):

set :passenger_restart_with_sudo, false

If you want to change restarting options, you might override these:

set :passenger_restart_command, 'passenger-config restart-app'
set :passenger_restart_options, -> { "#{deploy_to} --ignore-app-not-running" }
like image 21
Tombart Avatar answered Sep 27 '22 17:09

Tombart