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

时间:2016-01-30 18:07:42

标签: python django static hosting django-urls

我已经尝试了几种方法来找到最有用的方法来使用dreamhost在我的主机上提供静态文件。 到目前为止,只有一种方法对我有用,那就是使STATIC_URL成为超链接。这可能会成为一种动态障碍,特别是在收集我的静态文件时。我正在使用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 Roots:

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中的静态urlpatter:

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

1 个答案:

答案 0 :(得分:0)

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

像这样:

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