【问题标题】:Static Files not served via Apache for Django Application未通过 Apache 为 Django 应用程序提供静态文件
【发布时间】:2016-06-26 17:44:38
【问题描述】:

我花了一整天的时间在这上面。我无法获得我的静态文件。我的 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/'

请帮忙。

【问题讨论】:

    标签: django httpd.conf webfaction


    【解决方案1】:

    我自己是 djano/python 的新手,上个月为我的第一个 django 应用程序打了这场仗……我不是服务器管理员,所以我不能说你到底做错了什么,但看起来你的语法是和我做的有点不同,我喜欢它

     Alias /static/ /home/ksjdsd3/public_html/mysite/static/
    <Directory /home/ksjdsd3/public_html/mysite/static>
      Require all granted
    </Directory>
    

    最值得注意的是在静态之后有一个/,并且目录的路径不在引号中

    【讨论】:

      【解决方案2】:

      我曾经在使用 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/

      我很想知道:

      • 您是否使用了 Webfaction Django 安装程序?
      • 您是否创建了webfaction app to serve static assets
      • 您能否在 frontend 日志中找到对您的静态文件夹的引用?
      • 您有旧的(Centos 6.5、Apache 2.2)还是新的(Centos 7、Apache 2.4)Webfaction 计划?

      更多信息请关注Webfaction Docs

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-12-23
        • 2014-07-19
        • 2011-01-27
        • 1970-01-01
        • 2017-06-08
        • 1970-01-01
        • 2014-11-24
        相关资源
        最近更新 更多