Назад | Перейти на главную страницу

ошибка при развертывании приложения с Владом при выполнении команды sudo на сервере Ubuntu

Я новичок, когда дело доходит до ssh, sudo и других вещей unix ... так что терпите меня, здесь.

У меня уже есть сайт rails, настроенный и развертываемый с vlad через ssh. это отлично работает. теперь мне нужно, чтобы мой процесс развертывания запускал команду sudo для перезапуска monit.

Я просто хочу запустить sudo monit reload и sudo monit start my_job_name. но когда я запускаю эти команды, я получаю ошибки с сервера ubuntu:

sudo: no tty present and no askpass program specified

Я провел несколько поисков в Google, и большинство ответов, которые я нашел, связаны с изменением /etc/sudoers чтобы не требовать пароль для команд, которые я хочу. Честно говоря, мне не нравится этот вариант. это похоже на взлом / обходной путь, когда я смогу настроить свой сервер так, чтобы он правильно запрашивал пароль и чтобы vlad предоставлял пароль (в конце концов, vlad поддерживает ssh_password настройка, которую я заполнил).

Может ли кто-нибудь указать мне правильное направление для настройки моего сценария vlad и моего сервера ubuntu 10.10, чтобы правильно запустить мою команду sudo?

Вы можете изменить /etc/sudoers и удалить requiretty вариант, чтобы sudo работал, когда tty недоступен (например, из заданий cron, демонов и т. д.). Вам не обязательно разрешать sudo без пароля, просто удалите эту опцию.

Попробуй это:

set :sudo_flags, sudo_flags << '-S'
set :run_as_sudo, [sudo_cmd, sudo_flags].flatten.compact.join(' ')

Для ваших команд выполните:

run "#{run_as_sudo} cmd"

Он должен запросить ваш пароль во время выполнения.