Ce n'est pas si facile que d'autres questions .. au moins. ce n'est pas un problème de configuration simple emplacement des fichiers statiques à base d'un dir-..Django StaticFiles APP et Wsgi
https://bitbucket.org/sirex/django-starter/src
Il y a un tel projet intéressant ici .. celui-ci utilise la distribution et buildout pour faire ensemble du projet et django avec des modules dans un dir. vous pouvez migrer du mode dev au mode production facile et etc .. tout ce dont vous avez besoin est juste de renommer dir, et tapez "make" dedans, et c'est tout = 0 il y a manuel là-dedans ...
Situation qui fonctionne avec serveur python, et ne fonctionne pas avec apache mod_wsgi: L'emplacement des fichiers statiques par défaut est: "var/htdocs/static". Cela peut être remplacé par un emplacement de répertoire statique, par exemple apps/myapp/myapp/static /. Cela fonctionne avec python webserver mais ne fonctionne pas avec wsgi/apache. wsgi ne peut pas voir quelque chose à part répertoire par défaut .. par exemple: http://localhost:8000/static/css/main.css fonctionne mais avec Apache même URL ne fonctionne pas. et ce fichier se trouve dans myproject/apps/monapp/myapp/static/css/main.css bien que le répertoire statique par défaut soit var/htdocs/static =)
Dans la mesure où je comprends ce remplacement effectué avec l'application StaticFiles dans les paramètres. py
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
)
peut-être celui-ci est incorrect, je ne sais pas, mais avec py-server cela fonctionne. Apache vhost fonctionne avec l'emplacement par défaut .. et est configuré sur "var/htdocs/static".
Peut-être que le problème est dans le script 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()
J'ai ajouté les 4 dernières lignes par moi-même. parce que je ne pouvais pas démarrer Apache .. Je devine que djangorecipe.wsgi devrait gérer tout le reste avec staticFile override .. de toute façon s'il vous plaît, consultez ce paquet, si vous sur Linux ou mac, et l'essayer par vous-même. il doit fonctionner
ps. (btw bin/django besoin de dubliquer comme bin/django.wsgi et etc/apache.conf est généré vhost pour apache)
Je serais vraiment apriciated si quelqu'un essayait de lancer ce "Starter" manuellement avec wsgi .. . alors vous comprendriez tout =)
Edit:. Toute information sur la façon dont peuvent WSGI comprendre où il doit rechercher des fichiers statiques en dehors emplacement par défaut de paramètres de django, est vraiment apprécié =)
Vous avez fait un alias de votre configuration apache au serveur de fichiers statiques dans/votre/chemin/vers/statique/? –
qu'en est-il de celui-ci? http://docs.djangoproject.com/en/dev/ref/contrib/staticfiles/#django-admin-collectstatic comment cette chose fonctionne? il peut collecter des fichiers statiques à partir de plusieurs endroits? – holms
Encore une fois, Apache (ou tout autre serveur Web) ne peuvent servir des fichiers statiques si vous ajoutez un alias à la configuration d'Apache qui pointe vers l'emplacement qui héberge vos fichiers statiques. Et oui, vous devez utiliser la commande collectstatic pour recueillir tous vos fichiers statiques en un seul endroit (pour des raisons pratiques ou bcs. Vous ne voulez pas définir de nombreux Alias à différents endroits). L'application staticfiles est principalement là pour vous aider à développer sur le serveur de développement local sans faire quelque chose comme collectstatic ou en ajoutant un alias à votre configuration de serveur. En production, la seule utilisation est d'avoir STATIC_URL dans vos templates. –