Как запустить команду развертывания на удаленном хосте из PyCharm? - PullRequest
3 голосов
/ 19 июня 2011

Я ищу способ упростить удаленное развертывание приложения django непосредственно из PyCharm.

Даже если само развертывание файлов работает только с файлом с удаленного хоста и загрузкой, я не смог найти способ запуска дополнительных команд на сайте сервера (например, manage.py syncdb).

Я ищу полностью автоматизированное решение, которое бы работало одним щелчком мыши (или командой).

Ответы [ 2 ]

1 голос
/ 19 июня 2011

Я не знаю много о PyCharm, поэтому, возможно, вы могли бы что-то сделать из IDE, но я думаю, что вы, вероятно, захотите взглянуть на проект Fabric (http://docs.fabfile.org/en/1.0.1/index.html)

Это отличный инструмент для автоматизации развертывания Python.

Вот один из моих файлов сценариев фабрики. Обратите внимание, что я делаю много предположений (это мое собственное, которое я использую), которые полностью зависят от того, как вы хотите настроить свой проект, например, я использую virtualenv, pip и south, а также мои личные предпочтения о том, как развернуть и где развернуть.

Вы, вероятно, захотите переработать или упростить его для удовлетворения ваших потребностей.

0 голосов
/ 19 июня 2016

Вы можете использовать Файл> Настройки> Инструменты> Внешние инструменты для запуска произвольных внешних исполняемых файлов.Вы можете написать небольшую команду, которая подключается через SSH и запускает команду [set of].Тогда настроенный инструмент будет исполняемым

Например, в моем проекте, основанном на tornado , я запускаю экземпляры, используя supervisord , что, согласно ответу здесь , не может перезапуститься после изменения кода.

В итоге я написал небольшой инструмент для paramiko , который подключается через ssh и запускает supervisorctl restart.Код ниже:

import paramiko
from optparse import OptionParser


parser = OptionParser()
parser.add_option("-s",
                  action="store",
                  dest="server",
                  help="server where to execute the command")
parser.add_option("-u",
                  action="store",
                  dest="username")
parser.add_option("-p",
                  action="store",
                  dest="password")

(options, args) = parser.parse_args()

client = paramiko.SSHClient()
client.load_system_host_keys()
client.connect(hostname=options.server, port=22, username=options.username, password=options.password)
command = "supervisorctl reload"
(stdin, stdout, stderr) = client.exec_command(command)
for line in stdout.readlines():
        print line
client.close()

Конфигурация внешнего инструмента в Pycharm:

  • Программа: <PYTHON_INTERPRETER>
  • Параметры: <PATH_TO_SCRIPT> -s <SERVERNAME> -u <USERNAME> -p <PASSWORD>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...