3

我正在寻找一种方法来直接从 PyCharm 简化 django 应用程序的远程部署。

即使部署文件本身仅适用于远程主机的文件并上传,我也无法找到在服务器站点上运行其他命令的方法(如 manage.py syncdb)。

我正在寻找一种完全自动化的解决方案,只需单击(或命令)即可工作。

4

2 回答 2

1

我对 PyCharm 了解不多,所以也许你可以从 IDE 做点什么,但我想你可能想看看 fabric 项目(http://docs.fabfile.org/en/1.0.1 /index.html)

这是一个非常棒的python部署自动化工具。

这是我的织物脚本文件之一。请注意,我做了很多假设(这是我自己使用的),这完全取决于您希望如何设置项目,例如我使用 virtualenv、pip 和 south 以及我个人对如何设置的偏好部署和部署到哪里。

您可能希望对其进行返工或简化以满足您的需求。

于 2011-06-19T09:45:47.517 回答
0

您可以使用文件 > 设置 > 工具 > 外部工具来运行任意外部可执行文件。您可以编写一个通过 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>
于 2016-06-19T02:48:13.160 回答