我已经广泛地寻找解决我的问题的方法;然而,由于没有成功,我决定发布一个问题。
简而言之:我创建了一个OpenShift基于此 repo 的 app/build(与 DIY 0.1 墨盒结合):
https://github.com/ehazlett/openshift-diy-py27-django
我遇到的(显然很常见的)问题是我无法访问静态文件;我试过很多。
这些是我迄今为止尝试过的一些事情(我假设此构建的 wsgi 是 /app/ (?)):
- 静态根
- 我尝试将它设置为我的仓库中几乎所有可能的位置,同时放置一个静止的包含相应静态文件的文件夹,例如
- /静止的
- /应用程序/静态
- /应用程序/应用程序/静态
- ETC。
- 我尝试将它设置为我的仓库中几乎所有可能的位置,同时放置一个静止的包含相应静态文件的文件夹,例如
- 静态网址
- 我将其设置为'/静止的/'如果我没记错的话,这只是 URL 前缀
- 静态文件目录
- 将其设置为文件系统上的绝对路径,这样应该不会出现太多错误。
- .htaccess 也尝试了一些使用 .htaccess 重写的方法,但由于我不太清楚 Django 和 Apache 之间的通信流程如何运作/Django 如何将静态请求传递给 Apache,以及 Apache 的根目录在文件系统/repo 中的什么位置(?),所以尝试了一些不太成功的方法。
如果需要的话我可以提供更多信息,但到目前为止这些是至关重要的。
需要注意的是,这似乎是此版本的独特情况,因为当我基于完全支持的版本创建应用程序时,我没有遇到问题Python26/Django 墨盒。
如有任何建议,我们将不胜感激..!
干杯〜
答案1
本文“在 OpenShift 上提供 Django 静态资产”似乎提出了一个解决方案。
答案2
静态文件应由 Apache 直接提供,而不是由 Django 提供。流程如下(假设您的代码库是/srv/code/project
):
- 将您的静态文件放在
/srv/code/project/app/static/
(在app
中列出INSTALLED_APPS
) - 如果您需要与应用程序无关的静态文件(或许多应用程序通用的静态文件),请在
STATICFILES_DIRS
(通常在您的代码库中,例如/srv/code/project/static/
)定义一个目录并将文件放在那里。 STATIC_ROOT
在代码库之外定义一个,例如/srv/www/example.com/static/
。这将充当所有静态文件的缓存。- 每当部署项目的新版本时,运行
python manage.py collectstatic
。这将遍历所有静态目录并将文件复制到STATIC_ROOT
。 - 配置 Apache 来为
/static/
来自下的所有请求提供服务STATIC_ROOT
。