Подтвердить что ты не робот

Ткань, похоже, запускает apache2, но не

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

Если в любой точке из файла fabfile выдается либо

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 ничего нет.

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

4b9b3361

Ответ 1

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

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

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

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

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

Ответ 2

Попробуйте следующее:

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

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

Ответ 3

При подключении к пульту дистанционного управления от имени пользователя, которому предоставляются достаточные привилегии (например, 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

Ответ 4

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

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

Ответ 5

Несколько способов устранить проблему.

  • Вы можете запустить целевую программу fab с опцией -no-pty

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

    env.always_use_pty = False
    

Ответ 6

используя pty = False, до сих пор не решил его для меня. Решение, которое закончило работать для меня, делает double-nohup, например:

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)
...