在Apache服务器上设置Django项目

时间:2014-01-14 12:33:25

标签: python django apache

我已经启动了一个项目,我打算在运行Ubuntu的Apache2服务器上进行设置。我在本地创建了Django项目的骨架并将其推送到bitbucket上的repo。提供服务器的朋友告诉我,数字海洋教程可能是一个好的开始,所以我一直在使用this来设置wsgi。我略微偏离了本教程的措辞和步骤,所以我将完成我的工作方式。

  1. 我在路径~/public_html/clupus.com创建了一个目录并更改为该目录。

  2. 我已经有了一个先前的骨架,所以我将它克隆到当前目录中。该路径现在看起来像~/public_html/clupus.com/clupus,其中clupus是包含项目文件的目录(manage.py等)。

  3. 我在/etc/apache2/sites-available/clupus.com创建了一个新的虚拟主机文件,其中包含以下定义:

    <VirtualHost *:80>
        ServerName clupus.com
        ServerAlias www.clupus.com
        WSGIScriptAlias / /home/ubuntu/public_html/clupus.com/clupus.wsgi
    </VirtualHost>
    
  4. 然后我在~/public_html/clupus.com/clupus.wsgi创建了实际的wsgi文件,其中包含以下配置:

    import os
    import sys
    sys.path.append('~/public_html/clupus.com')
    os.environ['DJANGO_SETTINGS_MODULE'] = 'clupus.clupus.settings'
    import django.core.handlers.wsgi 
    application = django.core.handlers.wsgi.WSGIHandler()
    
  5. 最后我做了sudo a2ensite clupus.com,然后是sudo service apache2 reload。当我去访问服务器所在的URL时,我遇到了默认的欢迎页面。假设我不得不取消激活默认页面,我做了sudo a2dissite 000-default,然后重新加载,现在可以理解,这给了我一个500错误。

  6. 我的问题是我用来访问Django项目的URL是什么?我觉得我已经正确设置了一切,而且我没有指向正确的网址。

    此外,在os.environ['DJANGO_SETTINGS_MODULE'] = 'clupus.clupus.settings'clupus.clupus.settingsclupus.settings,如果层次结构为~/public_html/clupus.com/clupus/clupus/settings.py

2 个答案:

答案 0 :(得分:1)

根据您发布的目录列表和您的评论:

ubuntu@ip-10-137-27-87:~/public_html/clupus.com$ ls ~/public_html/clupus.com/ -la
total 16
drwxrwxr-x 3 ubuntu ubuntu 4096 Jan 14 11:13 .
drwxrwxr-x 3 ubuntu ubuntu 4096 Jan 14 10:38 ..
drwxr-xr-x 7 ubuntu ubuntu 4096 Jan 14 10:43 clupus
-rw-rw-r-- 1 ubuntu ubuntu  219 Jan 14 14:09 clupus.wsgi
ubuntu@ip-10-137-27-87:~/public_html/clupus.com$ 

您应该在此处更改完整路径(您可以使用os.path.expanduser~(代字号)转换为主路径):

#sys.path.append('~/public_html/clupus.com'
sys.path.append('/home/ubuntu/public_html/clupus.com/clupus')

修复此ImportError: Could not import settings 'clupus.settings'检查var DJANGO_SETTINGS_MODULE。更改sys.path后,路径'clupus.settings'应该有效(假设位于settings.py目录中的/home/ubuntu/public_html/clupus.com/clupus/clupus):

#os.environ['DJANGO_SETTINGS_MODULE'] = 'clupus.clupus.settings'
os.environ['DJANGO_SETTINGS_MODULE'] = 'clupus.settings'

答案 1 :(得分:0)

你确定apache用户有权使用〜/ public_html / clupus.com吗?

你可以吗

ls ~/public_html -la
ls ~/public_html/clupus.com -la