我花了一整天的时间。我无法提供我的静态文件。我的Django应用程序运行正常。我正在使用:Python 3.4,Django 1.8.13,mod_wsgi 4.5.2。我已经使用SO中的其他问题解决了我的httpd.conf中的大多数错误。还需要做更多工作。
的httpd.conf
ServerRoot "/home/rajkumar2014/webapps/allure/apache2"
LoadModule authz_core_module modules/mod_authz_core.so
LoadModule dir_module modules/mod_dir.so
LoadModule env_module modules/mod_env.so
LoadModule log_config_module modules/mod_log_config.so
LoadModule mime_module modules/mod_mime.so
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule setenvif_module modules/mod_setenvif.so
LoadModule wsgi_module modules/mod_wsgi.so
LoadModule unixd_module modules/mod_unixd.so
LoadModule alias_module modules/mod_alias.so
LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
CustomLog /home/rajkumar2014/logs/user/access_allure.log combined
ErrorLog /home/rajkumar2014/logs/user/error_allure.log
Listen 21188
KeepAlive Off
SetEnvIf X-Forwarded-SSL on HTTPS=1
ServerLimit 1
StartServers 1
MaxRequestWorkers 5
MinSpareThreads 1
MaxSpareThreads 3
ThreadsPerChild 5
WSGIRestrictEmbedded On
WSGILazyInitialization On
<VirtualHost *:21188>
Alias /media "/home/webapps/allure_media"
Alias /static "/home/webapps/allure_static"
<Directory /home/rajkumar2014/webapps/allure_media>
Require all granted
</Directory>
<Directory /home/rajkumar2014/webapps/allure_static>
Require all granted
</Directory>
WSGIDaemonProcess allure processes=2 threads=12 python-path=/home/rajkumar2014/webapps/allure/allure:/home/rajkumar2014/webapps/allure/lib/python3.4/site-packages:/home/rajkumar2014/webapps/allure/lib/python3.4
WSGIProcessGroup allure
WSGIScriptAlias / /home/rajkumar2014/webapps/allure/allure/allure/wsgi.py
<Directory /home/rajkumar2014/webapps/allure/apache2>
Require all granted
</Directory>
</VirtualHost>
settings.py
STATIC_URL = '/static/'
STATIC_ROOT = '/home/rajkumar2014/webapps/allure_static/'
STATICFILES_DIRS = (os.path.join(BASE_DIR, "static"),)
# Media files (All user uploaded content)
MEDIA_ROOT = '/home/rajkumar2014/webapps/allure_media/'
MEDIA_URL = '/media/'
请帮助。
答案 0 :(得分:1)
我自己是djano / python的新手,上个月为我的第一款django应用打了这场战斗......我不是服务器管理员所以我无法说出你做错了什么但似乎你的语法与我所做的有点不同,我喜欢
Alias /static/ /home/ksjdsd3/public_html/mysite/static/
<Directory /home/ksjdsd3/public_html/mysite/static>
Require all granted
</Directory>
最值得注意的是,静态之后有一个/
目录的路径不在引号中
答案 1 :(得分:0)
我曾经在使用Webfaction服务静态文件时遇到问题,这取决于我安装Django的方式(使用webfaction安装程序,你可以设置一个完整的django应用程序或只是一个apache / mod_wsgi应用程序,你可以部署你的django版本) 。
Webfaction在根级别运行了一个额外的nginx进程,用于提供静态文件。因此,您应该检查访问控制列表 - ACLs。
对我来说,这个ACL曾经是问题, nginx用户对静态文件夹没有读取权限。
所以也许你可以在webfaction上登录UNIX终端并运行getfacl
(你应该得到类似于这个输出的东西):
[rajkumar2014@webXXX ~]$getfacl /home/rajkumar2014/webapps/allure_static/
# file: home/rajkumar2014/webapps/allure_static/
# owner: rajkumar2014
# group: rajkumar2014
user::rwx
user:apache:r-x
user:nginx:r-x
group::rwx
mask::rwx
other::r-x
[rajkumar2014@webXXX ~]$ getfacl /home/rajkumar2014/webapps/allure/allure/allure/wsgi.py
getfacl: Removing leading '/' from absolute path names
# file: home/rajkumar2014/webapps/allure/allure/allure/wsgi.py
# owner: rajkumar2014
# group: rajkumar2014
user:apache:r-x
user:nginx:r-x
group::rw-
mask::rwx
other::--
这就是apache用户和nginx用户应该对你的静态文件夹以及wsgi.py(如果它是从外部源 - 你的笔记本电脑上传)的读取权限。
还要检查日志中的静态文件夹的错误和引用:
前端日志,nginx进程服务静态;位置:
/home/rajkumar2014/logs/frontend/
用户日志,用户安装的应用程序(如 Django )
/home/rajkumar2014/logs/user/
我很想知道:
frontend
日志中找到对静态文件夹的引用吗?