【问题标题】:Capistrano to restart Apache serverCapistrano 重启 Apache 服务器
【发布时间】:2013-12-04 20:35:20
【问题描述】:

我遇到了 Capistrano 和我的 rails 应用程序的问题。我的部署有一个简单的 rake 任务:

 task :restart do
    on roles(:app), in: :sequence, wait: 5 do
      execute "cd #{current_path}; rake assets:precompile"
      execute "sudo service httpd restart"
    end
  end

如您所见,上传所有代码后,我预编译了我的资产并尝试重新启动我的服务器。出于某种原因,这曾经可以正常工作,但现在给了我错误:

DEBUG [e2f1f3dc] Command: sudo service httpd restart
DEBUG [e2f1f3dc]    sudo
DEBUG [e2f1f3dc]    : 
DEBUG [e2f1f3dc]    sorry, you must have a tty to run sudo

有什么办法可以解决这个问题吗?

编辑:以防万一您想知道,capistrano 以“ec2-user”身份登录的用户具有亚马逊为其分配的所有默认值。

【问题讨论】:

  • 你使用的是什么操作系统?

标签: ruby-on-rails apache unix amazon-ec2 capistrano


【解决方案1】:

ssh 到服务器,然后发出这个命令:

visudo

然后注释掉下面一行:

#Default requiretty

如果多个用户登录系统(坏主意,部署系统应该由程序管理),更好的解决方案是为特定用户禁用 TTY,如下所示:

Defaults requiretty
Defaults:%build !requiretty
Defaults:build !requiretty

第一行规定每个人都必须使用 TTY。第二行和第三行分别将构建组和用户排除在此要求之外。

【讨论】:

  • 我在 google 搜索时读到过,但这是否存在安全风险?
  • 如果有多个人连接到该系统,那么可以。在这种情况下,您希望默认行为是要求 TTY 存在并从要求中排除特定的用户或组。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-11
  • 2015-12-29
  • 2012-08-17
  • 2016-07-19
  • 2012-03-22
  • 1970-01-01
相关资源
最近更新 更多