他の人ほど簡単な質問ではありません。少なくとも。単純な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がどのように理解できるかについての情報は、本当にありがたいです=)