Ткань, похоже, запускает 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
ничего нет.
Это не такая уж большая сделка, я могу ее обойти. Мне просто не нравятся такие бесшумные неудачи.
Ответы
Ответ 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)
...