无法在 Ubuntu 上通过 Apache mod WSGI 部署 Django
我在使用Ubuntu 12.04,做了以下操作:
首先,我用命令安装了Python的MySQL库:
sudo apt-get install python-mysql
然后,我安装了Django 1.6.2:
sudo python setup.py install
接着,我安装了MySQL服务器:
sudo apt-get install mysql-server-...
然后,我安装了Apache2:
sudo apt-get install apache2
最后,我安装了Apache的WSGI模块:
sudo apt-get install libapache2-mod-wsgi
这是我的配置文件:
/home/firstweb.wsgi:
import os
import sys
sys.path = ['/var/www/firstweb'] + sys.path
os.environ['DJANGO_SETTINGS_MODULE'] = 'firstweb.settings'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
/etc/apache/sites-availables/firstweb.conf:
<VirtualHost *:80>
WSGIScriptAlias / /home/adel/firstweb.wsgi
ServerName firstweb.com
Alias /static /var/www/firstweb/static/
<Directory /var/www/firstweb/>
order allow,deny
Allow from all
</Directory>
</VirtualHost>
然后我做了以下操作:
a2ensite firstweb.conf
(启用我的网站配置)cd /var/www/
(进入网站文件夹)django-admin.py startproject firstweb
(创建一个新的Django项目)apachectl restart
(重启Apache服务器)vi /etc/hosts
(编辑hosts文件)
并添加以下内容(192.168.0.123
是我的无线网络IP):
192.168.0.123 firstweb.com
我使用MySQL创建了一个数据库,并修改了settings.py
,syncdb
也运行得很好。
但是,当我在浏览器中输入www.firstweb.com时,出现的是Apache的默认页面(说明它是正常工作的……)
而Django的默认页面却没有出现!!
我的配置哪里出错了?
谢谢。
2 个回答
你在 WSGIScriptAlias 指令中提到的路径,并不在你通过 Directory 指令指定的 Apache 允许提供文件或脚本的目录里。此外,Apache 的用户通常也无法访问用户主目录下的文件。这两个问题都会导致不同的禁止访问的 HTTP 响应。所以,即使你解决了 ServerName/ServerAlias 和主机的问题,你可能还是会遇到这些问题。确保去阅读 Django 网站上官方的 mod_wsgi 部署文档。
你的虚拟服务器只在 firstweb.com 上工作,而不在 www.firstweb.com 上。你需要为 www 版本添加一个 ServerAlias 指令。