2010-10-16 66 views
0

我的生產箱上有django和django的管理員設置。這意味着所有文件上傳都存儲在生產箱中,所有媒體都存儲在那裏。如何將我的文件從生產服務器上傳到靜態服務器?

我現在有一個單獨的服務器文件(不同的盒子,IP)。我想在那裏上傳我的文件。這些方法的優點和缺點是我想過的,有沒有更好的方法可以建議?

  1. 設置腳本在文件上傳到靜態服務器後在生產框上執行rsync
  2. 設置一個永久安裝在生產中,通過使用關於靜態媒體盒文件服務器例如NFS /桑巴/ SSH-FS,然後使用安裝的位置,因爲在生產框中upload_to路徑

信息:兩臺服務器都運行debian。

編輯:普羅米修斯從#django建議http://docs.djangoproject.com/en/dev/howto/custom-file-storage/

+0

嘿!你最終做了什麼?只是好奇。去面料的方式或... – 2010-10-17 07:41:10

回答

2

我用Fabric。尤其對你感興趣的是fabric.contrib.project.rsync_project()

套用 -

面料是一個Python庫和 爲精簡 使用SSH爲應用程序部署 或系統管理任務的命令行工具。

首先使用fabric.contrib.project.upload_project()上傳整個項目目錄。從此,銀行就使用fabric.contrib.project.rsync_project。將項目與本地版本進行同步。另外特別感興趣的是,這使用unix rsync下面的&使用安全scp來傳輸.tar.gz數據。

我想這會照顧你的需求。可能不需要建立永久性安裝等。

+0

雖然我只需要靜態媒體,我沒有實際部署?還是我誤解了,這些東西仍然適用? – 2010-10-16 05:12:48

+0

哦,但你仍然可以使用我建議的方法來保持靜態數據同步。它不需要只是一個Django項目。 – 2010-10-16 05:19:16

+0

也不是「生產箱上的永久安裝」是一個安全問題?數據如何從一臺服務器移動到另一臺服務器?它是否被加密?相反,因爲你的任務是同步兩臺機器,rsync是爲這種工作而構建的。安全和高度優化。請參閱http://en.wikipedia.org/wiki/Rsync – 2010-10-16 05:22:17

1

如果您的靜態介質是從您的開發過程中派生的,那麼Fabric就是要走的路。它可以從任何地方到任何地方自動部署和複製任何東西 - 數據,應用程序文件,甚至靜態數據庫轉儲。

如果你的靜態媒體來源於你的應用服務器的操作 - 生成的PDF和圖像,從你的用戶上傳,編譯後的二進制文件(我有一個客戶想要的,一個Django應用程序,將採取原始的x86彙編並返回一個編譯和鏈接的二進制文件) - 然後你想使用Django Storages,這個應用程序抽象了任何ImageField或FileField的內容的實際存儲(或者任何帶有類似Python文件的界面的內容)。它支持將它們存儲到數據庫,Amazon S3,通過FTP和其他一些軟件。