如何在PyCharm中远程主机上运行部署命令?

3
我正在寻找一种简化从PyCharm直接部署django应用程序的远程部署方式。
即使使用远程主机和上传自身文件进行部署工作正常,但我无法找到一种在服务器端运行其他命令(如manage.py syncdb)的方法。
我正在寻找一个完全自动化的解决方案,可以在单击(或命令)下工作。

嘿,你找到解决方案了吗?我的意思是有没有办法在远程主机上运行/重新运行该进程?类似于 nohup python run.py& 这样的东西。 - venuktan
2个回答

1

我对PyCharm不是很了解,所以也许你可以从IDE中做一些事情,但我认为你可能想看一下fabric项目(http://docs.fabfile.org/en/1.0.1/index.html)。

它是一个Python部署自动化工具,非常棒。

这里是我的一个fabric脚本文件。请注意,我有很多假设(这是我自己使用的),完全取决于您如何设置您的项目,例如我使用virtualenv、pip和south,以及我个人喜好的部署方式和部署位置。

您可能需要重新设计或简化它以满足您的需求。


0

您可以使用 文件 > 设置 > 工具 > 外部工具 运行任意外部可执行文件。您可以编写一个小命令,通过 SSH 连接并发出一组命令。然后配置的工具将可执行。

例如,在我基于 tornado 的项目中,我使用 supervisord 运行实例,但根据 此处的答案,它无法在代码更改时重新启动。

最终,我编写了一个小工具,使用 paramiko 进行连接并运行 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>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接