【问题标题】:How can I fix a 403 forbidden on an apache server using Django?如何使用 Django 修复 apache 服务器上禁止的 403?
【发布时间】:2016-11-08 22:13:06
【问题描述】:

当我尝试访问我的网站时收到以下错误:

Forbidden. You don't have permission to access / on this server.

我的虚拟主机文件如下所示:

<VirtualHost *:80>
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined


        Alias /static ~/myproject/static

        <Directory ~/myproject/static>
                Require all granted
        </Directory>

        <Directory ~/myproject/myprojectapi>
                Order allow,deny
                Require all granted
                <Files wsgi.py>
                        Require all granted
                </Files>
        </Directory>
</VirtualHost>

我的apache2.conf是默认文件。我正在使用Django 1.9 with Python 2.7 on Ubuntu 14.04

我确实尝试了大多数(如果不是全部)网站上找到的解决方案,但由于某种原因,它们都不起作用。我遵循this 教程并授予了这些权限:

chmod 664 ~/myproject/db.sqlite3

sudo chown :www-data ~/myproject/db.sqlite3

sudo chown :www-data ~/myproject

我也是root 用户。

如果您需要任何其他信息,请告诉我;我将非常乐意提供它。任何帮助将不胜感激。

这是 WSGI 行:

 WSGIDaemonProcess goggest python-path=~/myproject:/usr/lib/python2.7/dist-packages
        WSGIProcessGroup goggest
        WSGIScriptAlias / ~/myproject/myprojectapi/wsgi.py

【问题讨论】:

  • 当您尝试./manage.py runserver 时会发生什么?
  • 只有 2 个问题:(1)您可以访问 /static 还是遇到同样的错误? (2) 您能否显示将 / 映射到 ~/myproject/myprojectapi/wsgi.py 或类似的配置部分,因为目前,除了静态文件之外,服务器 URL 和 ~/myproject 之间似乎没有映射。
  • @raphv /static 也无法访问,对于 (2) 你是什么意思?
  • @RaviOjha 是的,工作正常。
  • @JeelShah 当您点击 runserver 提供服务的网址时,您是否能够访问您的网页?

标签: python django apache ubuntu


【解决方案1】:

以下是我解决问题的方法(在很多帮助下)。 此答案假定您具有以下项目结构:

~/myproject
    - myproject
      - ...
      - settings.py
      - wsgi.py
    - myapp
      - ...
      - static
        - myapp
          - ...

题外话

我遇到的问题是我的 apahce error.log 出现错误,说找不到 settings。此问题很可能是由您的 python 路径中的错误引起的。这部分假设您使用的是 daemon 方法(由 docs 推荐)。

  1. 检查您的wsgi.py 文件并确保它在os.environ.setdefault(" ... ", " ... ") 中显示myproject.settings 而不是settings
  2. 检查并仔细检查您的 python 路径,它应该类似于 WSGIDaemonProcess [any-name] python-path=/home/[username]/myproject:/usr/lib/python2.7/site-packages

这应该可以解决问题(至少对我来说是这样)。

修复 403 Forbidden(或至少绕过它)

以下是为我完成这项工作的conf。它是not apache2.conf 并且我的apache2.conf 中没有任何,它仍然是默认的。以下在apache2/sites-available/000-default.conf

<VirtualHost *:80>
        ServerAdmin webmaster@localhost

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

        DocumentRoot /home/[username]/myproject # (1)

        Alias /static path/to/your/static_root    # (2)

        <Directory path/to/your/static_root>
                Require all granted
        </Directory>

        <Directory /home/[username]/myproject/myproject>
            Options Indexes FollowSymLinks Includes ExecCGI
            AllowOverride All
            Order allow,deny
            Allow from all
            Require all granted
        </Directory>

        <Directory /home/[username]/myproject/myproject>
                <Files wsgi.py>
                        Require all granted
                </Files>
        </Directory>

        WSGIDaemonProcess [any-name] python-path=/home/[username]/myproject:/usr/lib/python2.7/site-packages
        WSGIProcessGroup [any-name]
        WSGIScriptAlias / /home/[username]/[myproject]/[myproject]/wsgi.py

        WSGIApplicationGroup %{GLOBAL}

</VirtualHost>

RE:点 (1), (2)

(1)。将文档根目录更改为包含 django 项目文件的目录的头部。在这种情况下,我将其更改为/home/[username]/myproject请勿使用~/ 作为参考。我试过了,它似乎没有成功。

(2)。如果您从同一台服务器提供静态文件,请确保您在 settings.py 文件中设置了 STATIC_ROOTSTATIC_URL。就我而言,我将STATIC_URL 设置为/static/,将STATIC_ROOT 设置为/var/www/[any-name]/static/。当您决定部署时,您必须运行 sudo python manage.py collectstatic

还要注意它应该是Alias /static 而不是Alias /static/(注意尾部斜杠)。文档显示/static/,但这是不正确的,当您尝试提供静态文件时将不起作用(apache 未完成路径)。

就是这样。所有这些步骤都让我的服务器启动并运行。如果您有任何问题,请随时发表评论,我会尽力提供帮助。祝你好运!

【讨论】:

  • 为我添加DocumentRoot /home/[username]/myproject工作
猜你喜欢
  • 2013-11-13
  • 2021-08-23
  • 2014-09-20
  • 2019-08-02
  • 1970-01-01
  • 1970-01-01
  • 2017-05-07
  • 2016-07-18
  • 2013-07-16
相关资源
最近更新 更多