无法在 Ubuntu 上通过 Apache mod WSGI 部署 Django

1 投票
2 回答
559 浏览
提问于 2025-04-17 21:25

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

然后我做了以下操作:

  1. a2ensite firstweb.conf(启用我的网站配置)
  2. cd /var/www/(进入网站文件夹)
  3. django-admin.py startproject firstweb(创建一个新的Django项目)
  4. apachectl restart(重启Apache服务器)
  5. vi /etc/hosts(编辑hosts文件)

并添加以下内容(192.168.0.123是我的无线网络IP):

192.168.0.123 firstweb.com

我使用MySQL创建了一个数据库,并修改了settings.pysyncdb也运行得很好。

但是,当我在浏览器中输入www.firstweb.com时,出现的是Apache的默认页面(说明它是正常工作的……)

而Django的默认页面却没有出现!!

我的配置哪里出错了?

谢谢。

2 个回答

0

你在 WSGIScriptAlias 指令中提到的路径,并不在你通过 Directory 指令指定的 Apache 允许提供文件或脚本的目录里。此外,Apache 的用户通常也无法访问用户主目录下的文件。这两个问题都会导致不同的禁止访问的 HTTP 响应。所以,即使你解决了 ServerName/ServerAlias 和主机的问题,你可能还是会遇到这些问题。确保去阅读 Django 网站上官方的 mod_wsgi 部署文档。

1

你的虚拟服务器只在 firstweb.com 上工作,而不在 www.firstweb.com 上。你需要为 www 版本添加一个 ServerAlias 指令。

撰写回答