Python Apache2主机,url未与mod_wsgi一起提供
刚刚声明要用Django主持一个网站,问题是这样的 我将一个html文件放在Python Apache2主机,url未与mod_wsgi一起提供,python,django,apache,ubuntu,mod-wsgi,Python,Django,Apache,Ubuntu,Mod Wsgi,刚刚声明要用Django主持一个网站,问题是这样的 我将一个html文件放在/usr/local/django/virenv/Personal/mysite.com/下进行测试,它也是000 default.conf中的文档根目录,可以通过mysite.com访问该页面 然后我启动了一个django项目和一个应用程序,在app/view.py中 from django.shortcuts import render from django.http import HttpResponse
/usr/local/django/virenv/Personal/mysite.com/
下进行测试,它也是000 default.conf
中的文档根目录,可以通过mysite.com访问该页面
然后我启动了一个django项目和一个应用程序,在app/view.py中
from django.shortcuts import render
from django.http import HttpResponse
def index(request):
return HttpResponse("Hello, a django view.")
在app/url.py中,我将
from django.conf.urls import url
from . import views
urlpatterns = [
url(r'^index$', views.index, name = 'index'),
]
将以下内容添加到project/url.py
urlpattrens = [
url(r'^home/', include('app.urls')),
# below is admin url created with startproject
url(r'^admin/', admin.site.urls)),
]
最后,我在project/settings.py中将defesth=False,并将ip添加到允许的_主机
python manage.py运行服务器ip:8080之后,ip:8080/home/index和ip:8080/admin都可用
接下来,我尝试重新启动apache2,转到mysite.com/admin和mysite.com/home/index
都得到
404
Not Found The requested URL /admin was not found on this server.
我猜mod_wsgi不起作用了
httpd.conf看起来像
LoadModule wsgi_module modules/mod_wsgi.so
WSGIScriptAlias / /usr/local/django/virenv/Personal/mysite.com/project/wsgi.py process-group=mysite.com
WSGIPythonHome /usr/local/django/virenv
WSGIDaemonProcess mysite.com python-home=/usr/local/django/virenv python-path=/usr/local/django/virenv/Personal/mysite.com
WSGIProcessGroup mysite.com
WSGIApplicationGroup %{GLOBAL}
<Directory /usr/local/django/virenv/Personal/mysite.com/project>
<Files wsgi.py>
Order allow,deny
Allow from all
Require all granted
</Files>
</Directory>
<Directory /usr/local/django/virenv/Personal/mysite.com/>
Order allow,deny
Allow from all
Require all granted
Options -Indexes +FollowSymLinks -Includes
</Directory>
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /usr/local/django/virenv/Personal/mysite.com
<Directory /usr/local/django/virenv/Personal/mysite.com>
AllowOverride All
Options +FollowSymLinks
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
设置为chmod a+x
和chmod a+r
有什么猜测或解决办法吗
编辑:顺便说一下,在wsgi.py中
import os
import sys # added from other stack overflow answers
import django.core.handlers.wsgi as WSGIhand # added from other posts
os.environ.["DJANGO_SETTINGS_MODULE"] = "project.settings"
application = WSGIhand.WSGIHandler()
您不应将
DocumentRoot
设置为应用程序代码所在的位置。如果你在Apache配置中塞满了一些东西,这意味着人们可以下载你的源代码,包括Django设置文件中的敏感信息?除了LoadModule
,它应该在VirtualHost
定义中。另外,由于使用了守护程序模式,所以不再严格需要WSGIPythonHome了。而且您的wsgi.py文件不是Django在启动项目时为您生成的,为什么要更改它?看起来是基于什么将用于更旧的Django版本。
import os
import sys # added from other stack overflow answers
import django.core.handlers.wsgi as WSGIhand # added from other posts
os.environ.["DJANGO_SETTINGS_MODULE"] = "project.settings"
application = WSGIhand.WSGIHandler()