3

他の人ほど簡単な質問ではありません。少なくとも。単純な1ディレクトリベースの静的ファイルの場所を設定することは問題ではありません。

https://bitbucket.org/sirex/django-starter/src

ここにはとても興味深いプロジェクトがあります。これは、プロジェクト全体と1つのディレクトリにモジュールを含むdjangoを作成するためにdistributeとbuildoutを使用しています。開発モードから本番モードに簡単に移行できます。必要なのは、dirの名前を変更し、「make」と入力するだけです。これで、マニュアルがあります...

Pythonサーバーで動作し、apache mod_wsgiでは動作しない状況:デフォルトの静的ファイルの場所は「var / htdocs/static」です。これは、apps / myapp / myapp /static/などの1つの静的ディレクトリの場所でオーバーライドできます。これはPythonWebサーバーでは機能しますが、wsgi/apacheでは機能しません。wsgiはデフォルトディレクトリ以外は何も表示できません。例:http:// localhost:8000 / static / css / main.cssは機能しますが、apacheでは同じURLは機能しません。このファイルはmyproject/apps / myapp / myapp / static / css / main.cssにありますが、デフォルトの静的ディレクトリはvar / htdocs / static =)です。

私が理解している限り、settings.pyのStaticFilesアプリケーションで行われたこのオーバーライド

STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BUILDOUT_DIR, 'var', 'htdocs', 'static')
STATICFILES_DIRS = (
  os.path.join(BUILDOUT_DIR, 'project', 'static'), # <-- why "project" and not "apps" I don't know X_X
)

多分これは間違っています、私は知りませんが、py-serverでこれは機能します。apache vhostはデフォルトの場所で動作し、「var / htdocs/static」に設定されています。

たぶん問題はwsgiスクリプトにありますか?

#!/usr/local/bin/python2.6

import os,sys
sys.path[0:0] = [
    '/usr/local/lib/python2.6/site-packages/',
    '/www/webapp/visimes/eggs/PIL-1.1.7-py2.6-freebsd-8.1-RELEASE-amd64.egg',
    '/www/webapp/visimes/eggs/South-0.7.3-py2.6.egg',
    '/www/webapp/visimes/eggs/django_annoying-0.7.6-py2.6.egg',
    '/www/webapp/visimes/eggs/coverage-3.4-py2.6-freebsd-8.1-RELEASE-amd64.egg',
    '/www/webapp/visimes/eggs/django_debug_toolbar-0.8.4-py2.6.egg',
    '/www/webapp/visimes/eggs/django_extensions-0.6-py2.6.egg',
    '/www/webapp/visimes/eggs/django_test_utils-0.3-py2.6.egg',
    '/www/webapp/visimes/eggs/ipdb-0.3-py2.6.egg',
    '/www/webapp/visimes/eggs/ipython-0.10.1-py2.6.egg',
    '/www/webapp/visimes/eggs/djangorecipe-0.21-py2.6.egg',
    '/www/webapp/visimes/eggs/zc.recipe.egg-1.3.2-py2.6.egg',
    '/www/webapp/visimes/eggs/zc.buildout-1.5.2-py2.6.egg',
    '/www/webapp/visimes/eggs/BeautifulSoup-3.2.0-py2.6.egg',
    '/www/webapp/visimes/eggs/setuptools-0.6c12dev_r88795-py2.6.egg',
    '/www/webapp/visimes/parts/django',
    '/www/webapp/visimes',
    '/www/webapp/visimes/project', # <-- this one need for monitor.py which i put in there
    '/www/webapp/visimes/apps/portal', # <-- startapp.sh script some how forgot to add this dir, it's my default app dir, which must be generated with startapp.sh and added in here..
    ]

import djangorecipe.wsgi

if __name__ == '__main__':
    djangorecipe.manage.main('project.development')

os.environ['DJANGO_SETTINGS_MODULE'] = 'project.development'

import monitor
monitor.start(interval=1.0)

import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()

最後の4行を自分で追加しました。Apacheを起動できなかったので..djangorecipe.wsgiはstaticFileオーバーライドで他のすべてを処理する必要があると思います..とにかく、LinuxまたはMacを使用している場合は、そのパッケージをチェックして、自分で試してください。それは機能する必要があります

ps。(ところで、bin /django.wsgiなど/apache.confはapacheのvhostとして生成されるため、bin / djangoを複製する必要があります)

誰かがこの「スターター」をwsgiを使用して手動で起動しようとすると、私は本当に夢中になります...そうすれば、すべてを理解できます。=)

編集:WSGIがdjango設定とは別に静的ファイルを検索する必要がある場所をWSGIがどのように理解できるかについての情報は、本当にありがたいです=)

4

3 に答える 3

2

mod_wsgi の公式サイトには、使用方法を理解するためのドキュメントが多数あります。これには、静的メディア ファイルを提供するための設定方法が含まれます。見る:

http://code.google.com/p/modwsgi/wiki/IntegrationWithDjango http://code.google.com/p/modwsgi/wiki/QuickConfigurationGuide http://code.google.com/p/modwsgi/wiki/構成ガイドライン

于 2011-04-07T10:21:48.363 に答える
1

WSGIは、静的ファイルの提供とは何の関係もありません。これはすべてDjangoデプロイメントドキュメントで明確にカバーされています-Torstenがコメントで示唆しているように、おそらくエイリアスを介して静的ファイルにApacheを向ける必要があります。

このプロジェクトは非常に危険に見えますが、私は言わなければなりません。手動で大量の卵を追加することsys.pathは、物事を進めるための正しい方法ではありません-はるかに良い方法は、すべてを管理するvirtualenvのようなものを使用することです。

于 2011-04-07T08:30:52.283 に答える