我正在寻找一种简化从PyCharm直接部署django应用程序的远程部署方式。
即使使用远程主机和上传自身文件进行部署工作正常,但我无法找到一种在服务器端运行其他命令(如manage.py syncdb)的方法。
我正在寻找一个完全自动化的解决方案,可以在单击(或命令)下工作。
即使使用远程主机和上传自身文件进行部署工作正常,但我无法找到一种在服务器端运行其他命令(如manage.py syncdb)的方法。
我正在寻找一个完全自动化的解决方案,可以在单击(或命令)下工作。
我对PyCharm不是很了解,所以也许你可以从IDE中做一些事情,但我认为你可能想看一下fabric项目(http://docs.fabfile.org/en/1.0.1/index.html)。
它是一个Python部署自动化工具,非常棒。
这里是我的一个fabric脚本文件。请注意,我有很多假设(这是我自己使用的),完全取决于您如何设置您的项目,例如我使用virtualenv、pip和south,以及我个人喜好的部署方式和部署位置。
您可能需要重新设计或简化它以满足您的需求。
您可以使用 文件 > 设置 > 工具 > 外部工具 运行任意外部可执行文件。您可以编写一个小命令,通过 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>
nohup python run.py&
这样的东西。 - venuktan