2015-01-02 35 views
0

我已經在webfaction上配置了我的django應用程序,並且它現在工作正常。我想知道如何在apache上提供我的靜態和媒體文件。 Django有一個服務於這些文件的開發服務器。我最初在我的本地環境中設置了apache,並添加了許多腳本來通過apache提供靜態和媒體文件。Django和apache

但是,在webfaction上做同樣的事情時,根據webfaction文檔,我不必做太多工作,這讓我想到可能需要更多的步驟來通過apache提供這些文件。

因此,我想確認,我的靜態和媒體文件是從apache運行還是不運行?恐怕這裏也是這樣,因爲我還沒有配置apache來提供這些文件,因爲在開發環境中,django服務靜態,並且媒體文件由django自己提供。

+1

Webfaction使用單獨的靜態服務器來爲您的文件提供服務。 –

+0

所以你的意思是我不需要做任何事情,只要我創建另一個靜態和媒體應用程序?我將不得不運行收集靜態相同 – Uma

+0

我實際上創建了2個靜態應用程序在webfaction上,並將它們分配爲靜態和媒體目錄和url。我想這意味着這兩個文件夾將由不同的服務器提供服務。那是對的嗎?我運行collectstatic將所有文件傳輸到靜態文件夾。 – Uma

回答

3

在WebFaction典型的Django部署涉及至少兩個應用實例:

  • 一個Django應用程序實例您正在運行
  • 的符號鏈接到一個靜態的,唯一的應用程序實例
  • Django的版本

只有靜態應用程序的符號鏈接期望您輸入符號鏈接源的絕對路徑。這應該指向STATIC_ROOT指定的目錄。

考慮的項目結構:

/my-project/ 
    /my-project/ 
     settings.py 
     ... 

    /static_assets/ (used for local development. Not typically deployed.) 
    /static/ (used for production) 

這將轉化爲一個目錄結構在WebFaction像:

/home/ 
    /your-account-name/ 
     /webapps/ 
      /your-django-app-name/ 
       /apache2 
       /bin 
       /your-django-app-name (synonymous with "my-project" above) 
        /static/ (this is what your 'static' symlink path) 
       /lib 
        /pythonx.y (modules go here. Django lives here) 

當您創建「網站」的實例,你會指定你的Django應用程序實例在/上運行,並在由STATIC_URL指定的路徑(通常爲/static)指定的路徑上創建符號鏈接應用程序實例。

你應該WebFaction,這反過來又導致django.contrib.staticfiles服務,它們位於STATICFILES_DIRS任何文件與DEBUG = False運行。

希望能幫助你。

+0

所以這意味着不需要對apache進行更改,而只有靜態的應用程序實例在不同的服務器上運行?我是新手,所以只是想確保:)。 – Uma

+1

您的靜態應用程序實例和Django實例位於同一臺服務器上。 – Brandon

+0

好吧,那麼我需要更改apache conf文件來告訴它提供這些文件嗎? – Uma