设置静态根 Django Dreamhost 的正确方法

The Proper Way to Setup Static Roots Django Dreamhost

我已经尝试了数十种方法来找到在我的 dreamhost 主机上提供静态文件的最有用的方法。 到目前为止,只有一种方法对我有用,那就是使 STATIC_URL 成为超级 link。 这可能会奏效,但在某种程度上会成为一个动态障碍,尤其是收集我的静态文件时。我正在使用 passenger_wsgi 来托管我的网站。除了提供静态文件的方式外,其他一切都正常工作。 我怎样才能最有效地提供我的静态文件?请包括我应该在哪里放置我的静态文件,STATIC_URLSTATIC_ROOTurlpatterns答案。 Python 2.7 Django 1.9

我当前的站点结构:

home/user/domain.com/
     /env
     /MyDjangoProject
     /tmp
         restart.txt
     /public
          /static_in_pub
               /static_root
                    /css
                    /js
               /media
     passenger.wsgi.py

我的 settings.py 静态根:

STATIC_URL = 'http://www.domain.com/static_in_pub/static_root/'
STATIC_ROOT = os.path.join(BASE_DIR, 'public/static_in_env/static_root')

MEDIA_URL = 'http://www.domain.com/static_in_pub/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'public/static_in_env/media')

print 'Settings.py STATIC_ROOT: %s' % (STATIC_ROOT)
print 'Settings.py MEDIA_ROOT: %s' % (MEDIA_ROOT)

STATICFILES_DIRS = (
    os.path.join(os.path.dirname(BASE_DIR), 'static_in_pro/our_static'),
    os.path.join(os.path.dirname(BASE_DIR), 'static_in_pro/media'),
    #'/var/www/static/',
)

我在 urls.py 中的静态 urlpatterns:

urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

@Daniel-Roseman 的回答是正确的。您应该像我在问题中那样直接提供静态文件。使用 Apache 文件直接 link: STATIC_URL = 'http://www.domain.com/static_in_env/static_root' 但是根据我自己的经验,我发现最好将静态文件保存在上面的目录中 public 并从那里提供它们。

像这样:

home/user/domain.com/
     /env
     /MyDjangoProject
     /tmp
         restart.txt
          /static_in_env #Static in here instead of in public
               /static_root
     /public
     passenger.wsgi.py