Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 在Capistrano配方中,检测是否安装了Apache,然后停止它_Ruby On Rails_Apache_Capistrano - Fatal编程技术网

Ruby on rails 在Capistrano配方中,检测是否安装了Apache,然后停止它

Ruby on rails 在Capistrano配方中,检测是否安装了Apache,然后停止它,ruby-on-rails,apache,capistrano,Ruby On Rails,Apache,Capistrano,使用Rails 3.2、Capistrano 2,我有以下nginx配方: namespace :nginx do desc "Install latest stable release of nginx" task :install, roles: :web do run "#{sudo} add-apt-repository -y ppa:nginx/stable" run "#{sudo} apt-get -y update" run "#{sudo} ap

使用Rails 3.2、Capistrano 2,我有以下nginx配方:

namespace :nginx do
  desc "Install latest stable release of nginx"
  task :install, roles: :web do
    run "#{sudo} add-apt-repository -y ppa:nginx/stable"
    run "#{sudo} apt-get -y update"
    run "#{sudo} apt-get -y install nginx"
    run "#{sudo} /etc/init.d/apache2 stop" # Stop Apache because we are using nginx, only for production
    start
  end
  after "deploy:install", "nginx:install"
end
这是从头开始设置VPS的一部分,您注意到我在启动nginx之前停止了Apache,这样就不会有端口冲突。但这只有在安装了Apache时才起作用,如果其他操作系统没有预装Apache,那么此部署方法将抛出错误,试图停止不存在的Apache


如何改进此脚本?谢谢。

您可以将命令更改为

run "#{sudo} pkill -9 apache"
如果您正在使用任何监视工具,如
monit
god
,则他们可能会再次尝试启动apache。在这种情况下,使用

run "#{sudo} netstat -tulpn | grep ':80 ' && /etc/init.d/apache2 stop"

要检查端口80上是否有任何进程(不仅仅是apache)正在侦听,然后发出stop apache(如果有)

如果您只是想在找不到apache的情况下忽略错误,可以尝试将该命令替换为

run "#{sudo} /etc/init.d/apache2 stop || true"