hi Lee, 

here is the full /etc/init.d/ script  http://pastebin.com/02G5tpgH


So, i placed a task to stop the app, then deploy & then start the 
service/app. The task have the below commands to check

whoami    ----->   ** [out :: server4] root
ll /var/run/  ---> this shows the xyz.pid file 

So i see the service stops just fine. 

 ** [out :: server1] Stopping

 ** [out :: server1] Ok



And the service also starts just fins


** [out :: server1] Starting xyz...

 ** [out :: server1] Ok



But on checking manually -- "service xyz status", i get this " Process dead 
but pidfile exist". I can stop and start the service just fine manually. 












On Monday, May 18, 2015 at 12:24:50 PM UTC-7, Lee Hambley wrote:
>
> You wrote that the /etc/init.d/xyz is done by "sudo" so the deploy user 
> apparently has access to password-less sudo (at least for some actions), it 
> would appear that the file is not visible to `root`. Which I don't believe 
> or expect.
>
> You included a part of the /etc/init.d/xyz, but didn't include the full 
> thing for some reason, so I can't see what the value of $PIDFILE should 
> be in this case (*please*, adhere to the list guidelines and paste long 
> files in an external service, and link them), nor state where you got the 
> template.
>
> I also don't understand the logic behind setting shell: 'bash' on the 
> run() lines that interface with the init script.
>
> Your task:
>
> task :stop_app, :roles => :web do
>
> run "sudo /etc/init.d/xyz stop", :shell => :bash
>
> end
>
>
> ​I might suggest you extend that (or make a similar one, 
> "debug_initd_stuff") that does something like:
>
> task :debug_initd_stuff, :roles => :web do
>
> run "sudo whoam"
>
> run "sudo ls -l /etc/init.d"
>
> run "sudo ls -l /var/run"
>
> end​
>
>
> ​You might also want to run the init.d script through shellcheck.net, 
> since there are quite a few violations and bad practices already in sight 
> there, shellcheck might help you iron some of them out. (That said, 
> honestly the problem is probably something much simpler.)​
>
>
> Lee Hambley
> http://lee.hambley.name/
> +49 (0) 170 298 5667
>
> On 18 May 2015 at 21:14, niristotle okram <nirish...@gmail.com 
> <javascript:>> wrote:
>
>> Versions:
>>
>>    - Ruby 2.1.1
>>    - Capistrano 2 
>>    - Rake / Rails / etc
>>
>> Platform:
>>
>>    - Working on.... RHEL 6
>>    - Deploying to... RHEL 6
>>
>>
>> A part of the Deploy.rb:
>>
>> #before "deploy", "deploy:stop_app"
>>
>>  #after "deploy", "deploy:start_app"
>>
>>    after "deploy", "deploy:restart_app"
>>
>>    namespace :deploy do
>>
>>     task :update_code, :roles => :web, :except => { :no_release => true } 
>> do
>>
>>       on_rollback { puts "DO NOT WANT TO ROLL BACK?" }
>>
>>       strategy.deploy!
>>
>>       finalize_update
>>
>>     end
>>
>>  
>>
>>     task :stop_app, :roles => :web do
>>
>>       run "sudo /etc/init.d/xyz stop", :shell => :bash
>>
>>     end
>>
>>  
>>
>>     task :start_app, :roles => :web do
>>
>>       run "sudo /etc/init.d/xyz start", :shell => :bash
>>
>>     end
>>
>>  
>>
>>  
>>
>>     task :restart_app, :roles => :web do
>>
>>       run "sudo /etc/init.d/xyz restart", :shell => :bash
>>
>>     end
>>
>>   end
>>
>>
>>
>>
>>
>>
>>
>>
>>
>> I have the parameter in the 'deploy.rb', 
>>
>> *set :user, 'a_user'*
>>
>> Q: Which user performs the task to restart the service (xyz) after the 
>> deployment of app (xyz)? I am getting the errors saying the xyz.pid doesn't 
>> exist, when it actually does. This is a part of the shell script while 
>> stopping the service.  
>>
>>
>> A part of the /etc/init.d/xyz
>>
>> case "$1" in
>> start)
>>         printf "%-50s" "Starting $DAEMON_NAME..."
>>         cd $DIR
>>         [ -d $LOGPATH ] || mkdir $LOGPATH
>>   [ -f $LOGFILE ] || su $DAEMON_USER -c 'touch $LOGFILE'
>>         PID=`$PYTHON $DAEMON $DAEMON_OPTS > $LOGFILE  2>&1 & echo $!`
>>         #echo "Saving PID" $PID " to " $PIDFILE
>>         if [ -z $PID ]; then
>>             printf "%s\n" "Fail"
>>         else
>>             echo $PID > $PIDFILE
>>             printf "%s\n" "Ok"
>>         fi
>> ;;
>> status)
>>         printf "%-50s" "Checking $DAEMON_NAME..."
>>         if [ -f $PIDFILE ]; then
>>             PID=`cat $PIDFILE`
>>             if [ -z "`ps axf | grep ${PID} | grep -v grep`" ]; then
>>                 printf "%s\n" "Process dead but pidfile exists"
>>             else
>>                 echo "Running"
>>             fi
>>         else
>>             printf "%s\n" "Service not running"
>>         fi
>> ;;
>> stop)
>>         printf "%-50s" "Stopping $DAEMONNAME"
>>             PID=`cat $PIDFILE`
>>             cd $DIR
>>         if [ -f $PIDFILE ]; then
>>             kill -HUP $PID
>>             printf "%s\n" "Ok"
>>             rm -f $PIDFILE
>>         else
>>             printf "%s\n" "pidfile not found"
>>         fi
>> ;;
>>
>> restart)
>>         $0 stop
>>         $0 start
>> ;;
>>
>> *)
>>         echo "Usage: $0 {status|start|stop|restart}"
>>         exit 1
>> esac
>>
>>
>>
>> Capistrano log 
>>
>>   * executing `deploy:restart_app'
>>
>>   * executing multiple commands in parallel
>>
>>     -> "else" :: "sudo /etc/init.d/xyz restart"
>>
>>     -> "else" :: "sudo /etc/init.d/xyz restart"
>>
>>     -> "else" :: "sudo /etc/init.d/xyz restart"
>>
>>     -> "else" :: "sudo /etc/init.d/xyz restart"
>>
>>     servers: ["server1", "server2", "server3", "server4"]
>>
>>     [server1] executing command
>>
>>     [server2] executing command
>>
>>     [server3] executing command
>>
>>     [server4] executing command
>>
>>  ** [out :: server1] Stopping
>>
>>  ** [out :: server1] cat: /var/run/xyz.pid: No such file or directory
>>
>>  ** [out :: server1] pidfile not found
>>
>>  ** [out :: server1] Starting xyz...
>>
>>  ** [out :: server2] Stopping
>>
>>  ** [out :: server2] cat: /var/run/xyz.pid: No such file or directory
>>
>>  ** [out :: server2] pidfile not found
>>
>>  ** [out :: server2] Starting xyz...
>>
>>  ** [out :: server2] Ok
>>
>>  ** [out :: server1] Ok
>>
>>  ** [out :: server3] Stopping
>>
>>  ** [out :: server3] cat: /var/run/xyz.pid: No such file or directory
>>
>>  ** [out :: server3] pidfile not found
>>
>>  ** [out :: server4] Stopping
>>
>>  ** [out :: server4] Ok
>>
>>  ** [out :: server3] Starting xyz...
>>
>>  ** [out :: server3] Ok
>>
>>  ** [out :: server4] Starting xyz...
>>
>>  ** [out :: server4] Ok
>>
>>     command finished in 659ms
>>
>> Finished: SUCCESS
>>
>>  
>>
>>
>> I can cat the file as the deploy user just fine. 
>>
>>
>>
>>
>>  -- 
>> You received this message because you are subscribed to the Google Groups 
>> "Capistrano" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to capistrano+...@googlegroups.com <javascript:>.
>> To view this discussion on the web, visit 
>> https://groups.google.com/d/msgid/capistrano/56a2a2dd-fd26-4b14-a2da-0d7af37f8354%40googlegroups.com
>>  
>> <https://groups.google.com/d/msgid/capistrano/56a2a2dd-fd26-4b14-a2da-0d7af37f8354%40googlegroups.com?utm_medium=email&utm_source=footer>
>> .
>> For more options, visit https://groups.google.com/d/optout.
>>
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Capistrano" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to capistrano+unsubscr...@googlegroups.com.
To view this discussion on the web, visit 
https://groups.google.com/d/msgid/capistrano/d47d5020-1915-4194-be85-b72e157b0c23%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to