我正在尝试将Django部署到apache但无法让它为我的静态管理文件提供服务。它似乎是在/ var / www / static下寻找它们,我似乎无法改变它。
除了样式之外,管理网站似乎正在工作。我得到一个标题和一个登录表单。我的django应用程序也在运行。这是管理员未提供的静态文件。
使用Django 1.4.1。
这些文件位于/usr/local/lib/python2.7/dist-packages/django/contrib/admin/static下,并链接到/ home / dutt / vaccapp / backend / static / admin。
apache错误日志说明了这个
[Sun Sep 30 10:57:20 2012] [error] [client 192.168.1.10] File does not exist: /var/www/home, referer: http://dathui.example.com/vaccapp/admin/
[Sun Sep 30 10:57:20 2012] [error] [client 192.168.1.10] File does not exist: /var/www/home, referer: http://dathui.example.com/vaccapp/admin/
但我不确定如何改变它。
在我的django网站配置中我有
<VirtualHost *:80>
ServerAdmin me@host.com
ServerRoot "/home/dutt/vaccapp"
DocumentRoot "/home/dutt/vaccapp"
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /home/dutt/vaccapp/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
Alias /static/ "/home/dutt/vaccapp/backend/static/"
<Directory "/usr/local/lib/python2.7/dist-packages/django/contrib/admin/static">
Order allow,deny
Options Indexes
Allow from all
IndexOptions FancyIndexing
</Directory>
未在apache2.conf中设置ServerRoot。
来自我的settings.py
STATIC_ROOT = '/home/dutt/vaccapp/backend/'
STATIC_URL = '/static/'
没有添加到STATICFILES_DIRS。
这已添加到我的apache2.conf
WSGIScriptAlias /vaccapp /home/dutt/vaccapp/backend/wsgi.py
WSGIPythonPath /home/dutt/vaccapp
<Directory /home/dutt/vaccapp>
<Files wsgi.py>
Order deny,allow
Allow from all
</Files>
</Directory>
答案 0 :(得分:7)
ADMIN_MEDIA_PREFIX
默认设置为/static/admin/
#在Django 1.4中弃用(现在使用STATIC_URL + 'admin/'
。结果相同。
以下是apache配置的修复:
Alias /static/admin "/usr/local/lib/python2.7/dist-packages/django/contrib/admin/static"
Alias /static "/home/dutt/vaccapp/backend/static"
<Directory "/usr/local/lib/python2.7/dist-packages/django/contrib/admin/static">
Order allow,deny
Options Indexes
Allow from all
IndexOptions FancyIndexing
</Directory>
WsgiScriptAlias必须从主apache配置移动到VirtualHost。
经过长时间的讨论,我们发现问题是Django没有正确安装admin静态......他们彼此符号链接(非常奇怪)。 Django重新安装修复它,它现在工作正常。
答案 1 :(得分:1)
就像Blazor一样,我不得不使用原版的一小部分。我的设置包括使用django admin的graphite-web。我只是张贴它作为参考。
我的apache的虚拟主机:
<VirtualHost *:80>
ServerName graphite.myhost.com
Redirect permanent / https://graphite.myhost.com/
</VirtualHost>
<VirtualHost *:443>
ServerName graphite.myhost.com
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/graphite.cert
SSLCertificateKeyFile /etc/apache2/ssl/ssl_graphite.key
SSLStrictSNIVHostCheck on
WSGIDaemonProcess _graphite processes=5 threads=5 display-name='%{GROUP}' inactivity-timeout=120 user=_graphite group=_graphite
WSGIProcessGroup _graphite
WSGIImportScript /usr/share/graphite-web/graphite.wsgi process-group=_graphite application-group=%{GLOBAL}
WSGIScriptAlias / /usr/share/graphite-web/graphite.wsgi
AliasMatch ^/admin/(.*)static/admin(.*)$ /usr/lib/python2.7/dist-packages/django/contrib/admin/static/admin/$2
<Directory "/usr/lib/python2.7/dist-packages/django/contrib/admin/static/admin/">
Order allow,deny
Allow from all
</Directory>
Alias /content/ /usr/share/graphite-web/static/
<Location "/content/">
SetHandler None
</Location>
<Location "/">
Order allow,deny
allow from all
AuthType Basic
AuthName "Restricted Zone"
AuthBasicProvider wsgi
WSGIAuthUserScript /var/www/django_auth.wsgi
Require valid-user
</Location>
ErrorLog ${APACHE_LOG_DIR}/graphite-web_error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/graphite-web_access.log combined
</VirtualHost>
我还添加了STATIC_URL = 'static/'
,以确保我对正则表达式没有任何问题。
答案 2 :(得分:1)
答案 3 :(得分:0)
我的低声望迫使我写一个完整的答案,为伊戈尔的回答添加一个小细节。
我只是将apache配置部分添加到我的配置中,但这还不够。我不得不改变:
"/usr/local/lib/python2.7/dist-packages/django/contrib/admin/static"
到
"/usr/local/lib/python2.7/dist-packages/django/contrib/admin/static/admin"
在第一个Alias
和<Directory>
指令中。
答案 4 :(得分:0)
在运行Django + Apache时遇到类似的问题,Django管理站点缺少所有样式。这是我解决的方法:
apache conf:httpd-app.conf
Alias /static "/...path/to/your/django.../site-packages/django/contrib/admin/static"
<Directory "/...path/to/your/django.../site-packages/django/contrib/admin/static">
Require all granted
</Directory>
上面的/...path/to/your/django.../
,可以通过pip show django