2011-06-18 100 views
3

我正在尋找一種方法來簡化直接從PyCharm遠程部署Django應用程序。如何從PyCharm在遠程主機上運行部署命令?

即使部署文件本身只適用於遠程主機的文件並上傳,但我無法找到在服務器站點上運行附加命令的方式(如manage.py syncdb)。

我正在尋找一個完全自動化的解決方案,一個可以在單擊(或命令)下工作的解決方案。

+1

你有沒有找到一個解決方案? –

+0

嘿,你有沒有找到這個解決方案?我的意思是有沒有辦法在遠程主機上運行/重新運行進程?有些東西像'nohup python run.py&' – venuktan

回答

1

我對PyCharm的瞭解不多,所以也許你可以從IDE做些什麼,但我想你可能會想看一下Fabric項目(http://docs.fabfile.org/en /1.0.1/index.html)

這是一個非常棒的python部署自動化工具。

這是我的結構腳本文件之一。請注意,我做了很多假設(這是我自己使用的),完全取決於您想要如何設置您的項目,比如我使用virtualenv,pip和south以及我自己的個人偏好來指導如何部署和部署到的位置。

您可能希望重做或簡化它以滿足您的需求。

0

您可以使用文件>設置>工具>外部工具來運行任意的外部可執行文件。您可以編寫一個通過SSH連接的小命令併發出[set]命令。然後配置的工具將是可執行的

例如,在我的項目基於tornado,我運行的實例使用supervisord,根據answer here,代碼更改時無法重新啓動。

我最終在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>
相關問題