ткань, кажется, запускает apache2, но не - PullRequest
24 голосов
/ 17 июня 2011

Я использую матрицу для удаленного запуска сервера micro-aws, установки git и репозитория git, настройки конфигурации apache и перезапуска сервера.

Если в какой-то момент из файла я выдаю либо

sudo('service apache2 restart') или run('sudo service apache2 restart') или остановка и затем запуск, команда, очевидно, выполняется, я получаю ответ, указывающий, что apache запущен, например

[ec2-184-73-1-113.compute-1.amazonaws.com] sudo: service apache2 start
[ec2-184-73-1-113.compute-1.amazonaws.com] out:  * Starting web server apache2
[ec2-184-73-1-113.compute-1.amazonaws.com] out:    ...done.
[ec2-184-73-1-113.compute-1.amazonaws.com] out: 

Однако, если я пытаюсь подключиться, соединение отклоняется, и если я ssh на сервер и запускаю sudo service apache2 status это говорит, что "Apache is NOT running"

Пока сбежал, если бежать sudo service apache start, сервер запущен и я могу подключиться. Кто-нибудь еще испытывал это? Или у кого-нибудь есть какие-либо советы относительно того, где я могу посмотреть, в файлах журналов и т. Д., Чтобы выяснить, что произошло. В apache2/error.log, syslog или auth.log.

ничего нет

Это не так уж важно, я могу обойти это. Мне просто не нравятся такие тихие неудачи.

Ответы [ 6 ]

41 голосов
/ 17 июня 2011

Какую версию фабрики вы используете?

Вы пытались изменить аргумент pty (попробуйте изменить также shell, но это не должно влиять на ситуацию)?

http://docs.fabfile.org/en/1.0.1/api/core/operations.html#fabric.operations.run

Вы можете установить аргумент pty следующим образом:

sudo('service apache2 restart', pty=False)
14 голосов
/ 17 июня 2011

Попробуйте:

sudo('service apache2 restart',pty=False)

Это сработало для меня после столкновения с той же проблемой .Я не уверен, почему это происходит.

4 голосов
/ 10 января 2014

Это экземпляр этой проблемы , и в FAQ есть запись с ответом pty.К сожалению, в CentOS 6 не поддерживаются команды pdo-less sudo, и мне не понравилось решение nohup, поскольку оно убивало вывод.

В последней записи выпуска упоминается sudo('set -m; service servicename start').Это включает Job Control и, следовательно, фоновые процессы помещаются в свою собственную группу процессов.В результате они не прекращаются, когда команда заканчивается.

4 голосов
/ 03 апреля 2013

При подключении к пультам от имени пользователя, которому предоставлены достаточные привилегии (например, root), вы можете управлять системными службами, как показано ниже:

from fabtools import service

service.restart('apache2')

https://fabtools.readthedocs.org/en/0.13.0/api/service.html

P.S. Требуется установка fabtools

pip install fabtools

0 голосов
/ 08 января 2014

использование pty = False все еще не решило это для меня.Решение, которое в итоге заработало для меня, заключается в двойном включении, например:

run.sh

#! /usr/bin/env bash
nohup java -jar myapp.jar 2>&1 &

fabfile.py

...
sudo("nohup ./run.sh &> nohup.out", user=env.user, warn_only=True)
...
0 голосов
/ 21 июля 2011

Пара других способов решения проблемы.

  • Вы можете запустить fab target с опцией --no-pty

    fab --no-pty <task>
    
  • Внутри fabfile, установите глобальную переменную среды always_use_pty в False, прежде чем ваш целевой код выполнится

    env.always_use_pty = False
    
...