Django 1.10,Apache 2.4在CentOS7上提供基本应用程序获取403禁止/

时间:2017-01-31 00:22:26

标签: django apache centos

此时扭转,试着让它运转起来。

我收到403 Forbidden: You don't have permission to access / on this server.错误。我一直在关注如何设置Apache以使用CentOS和Django的指南:

https://www.digitalocean.com/community/tutorials/how-to-serve-django-applications-with-apache-and-mod_wsgi-on-centos-7

另外,请阅读有关错误的SO上的几个问题,但没有一个问题解决了这个问题。

新鲜的Django项目安装应该只是在localhost:8000显示静态“它的工作页面”,我想。

/etc/httpd/conf.d/django_test.conf

Alias /static /home/dev/testserver/static
<Directory /home/dev/testserver/static>
  Require all granted
</Directory>

<Directory /home/dev/testserver/testserver>
  <Files wsgi.py>
     Require all granted
  </Files>
</Directory>

WSGIDaemonProcess testserver python-path=/home/dev/testserver:/home/venvs/django/lib/python3.6/site-packages
WSGIProcessGroup testserver
WSGIScriptAlias / /home/dev/testserver/testserver/wsgi.py

在谈到这一点时,我很天真,但除了python manage.py runserver设置之外,我还是不必运行HTTPD吗?或者这仅适用于您是否使用内置的Django服务器在本地开发?

说到这,我可以使用内置的Django服务器访问远程服务器上的页面,但是理解这是非常不受欢迎的。

我确实打开了端口80,可以看到它正在侦听流量。

根据教程,我提供了/home/dev目录chmod 710权限,并将apache添加到与目录所有者相同的用户组。

只是没有看到我做错了什么。

编辑#1

我开始逐行浏览/etc/httpd/conf/httpd.conf以查看是否有任何内容添加。对于group我将其从apache更改为sqladmin,因为我将apache用户添加到该组。此外,请确保明确添加LoadModule wsgi_module modules/mod_wsgi.so。仍然没有运气。

无论如何,我现在正在阅读pip mod_wsgi[Tue Jan 31 16:26:31.961512 2017] [core:error] [pid 4561] (13)Permission denied: [client 192.168.1.39:57651] AH00035: access to / denied (filesystem path '/home/dev/testserver/testserver/wsgi.py') because search permissions are missing on a component of the path [Tue Jan 31 16:26:31.986965 2017] [core:error] [pid 4561] (13)Permission denied: [client 192.168.1.39:57651] AH00035: access to /favicon.ico denied (filesystem path '/home/dev/testserver/testserver/wsgi.py') because search permissions are missing on a component of the path, referer: http://192.168.1.4/ 包,看看这是否可以解决我的问题。

编辑#2

error_log说明如下:

/home/dev

说明了权限错误,但据我所知,它应该只关注/home/venvs/home。所有这些权限都与apache具有相同的权限。用户apache存在,用户sqladminapache组的一部分,该组是所有这些目录和文件的组。我甚至创建了一个sqladmin组,并使drwxr-xr-x. 3 sqladmin sqladmin 24 Jan 31 15:08 dev drwx------. 14 sqladmin sqladmin 4096 Jan 30 21:13 sqladmin drwxr-xr-x. 3 sqladmin sqladmin 20 Jan 31 15:05 venvs 成为其中的一部分。

目录权限列表:

capybara-webkit

2 个答案:

答案 0 :(得分:1)

  

...我或不需要另外运行python manage.py runserver   有HTTPD设置吗?

除了你不需要它之外,你永远不会在生产中使用manage.py runserver。这就是设置apache的重点

接下来让我们来看看:

 WSGIDaemonProcess testserver python-path=/home/dev/testserver:/home/venvs/django/lib/python3.6/site-packages

虽然您已设置主目录的权限。 / home / venvs目录怎么样?这听起来像一个完全不同的用户帐户。那么您是否相应地更改了权限和组?

其次,您需要使apache可以读取te / home / dev / testserver文件夹,也可以执行。用户需要在目录上执行标志才能切换到该目录。通常,当项目传输到服务器时,您会发现权限被意外更改。

答案 1 :(得分:0)

好吧,无论它是否被认为是一个解决方案,因为我从来没有让Apache + mod_wsgi工作,但我确实让它通过PyPi mod_wsgi

安装在virtualenv中,然后按照“使用带有Django的mod_wsgi-express”部分进行操作。