2013-10-10 88 views
0

我目前正在開發一個Django應用程序供內部使用,它在本地網絡中的一臺服務器(服務器1)上運行,但需要對另一臺服務器(服務器2)數據保存到數據庫時。Django和Apache:在網絡中的另一臺服務器上創建文件夾

保存新記錄時,Django會在外部服務器(服務器2)上使用適當的文件夾名稱創建一個新目錄。這在Django測試服務器上運行良好,似乎可以訪問整個本地網絡。

我現在已經成功部署我的Django應用程序與Apache和mod_wsgi但文件夾創建過程似乎不再工作。我嘗試了一些東西,但似乎無法迅速修復它。有任何想法嗎?這可以用Django和Apache實現嗎?

def create_folder(self,request,obj,form, change, serverfolder, templatefolder): 

    try: 
     source_dir = templatefolder # Replace with path to project folder template 
     if not os.path.exists(destination_dir): 
      dir_util.copy_tree(source_dir,destination_dir) 
      obj.projectfolder = destination_dir 
      messages.success(request,"Project folder created on %s" % (serverfolder)) 
      obj.create_folder = False 
      obj.has_folder = True 
     else: 
      messages.warning(request,"No new project folder created on %s server" % (obj.office.abbreviation)) 
    except Exception,e: 
     messages.warning(request,str(e) + " Error during project folder creation on %s server!" % (obj.office.abbreviation)) 



def save_model(self, request, obj, form, change): 
     serverfolder = r'\\C-s-002\Projects' #C-s-002 is the external server in the same local network as the server on which Django is running 
     templatefolder = r'\\C-s-002\Projects\XXX Project Template' 
     self.create_folder(request,obj,form, change, serverfolder, templatefolder) 
+0

我看不到與其他服務器(服務器2)的連接。 'serverfolder'包含什麼? – alexvassel

+0

連接不是在代碼本身中進行的。 Django項目位於C-s-001上。運行時,它會引發一個錯誤,說明\\ C-s-002 \\ Projects不是一個有效的文件夾 – brunostuyts

+0

您確實需要編寫一些代碼才能連接到另一臺服務器(例如通過ssh)並在那裏執行shell命令。 – alexvassel

回答

0

有,你可以在這裏採取不同的方法,所以我不會試圖窮盡所有可能性:

選項1:Call an external command with Python。這不是特定於Django或Apache。

選項2:在服務器2上建立一個Web服務,您可以通過API調用來處理服務器1所需的文件/目錄創建。這可以使用Django實現。

+0

用Django和Apache調用外部命令似乎會產生其他問題http://stackoverflow.com/questions/8309465/popen-does-not-work-anymore-with-apache-wsgi-and-python-2-7-2看起來我必須去第二個選項 – brunostuyts

相關問題