在Apache上使用Django,Virtualenv和WSGI的多个站点

时间:2016-07-28 04:42:51

标签: django apache virtualenv wsgi

目标是通过WSGI在Apache上以守护进程模式运行Django。我计划在端口8000上运行它以使其与运行在服务器URL的根目录的PHP文件分开(除非有更好的方法来保持我的Web应用程序分离)。它是与Virtualenv一起设置的。

服务器名为server.family.local

简化的文件结构是:

/home
    /wwww
        /django
            /my_project
                /app1
                /app2
                /project
                    wsgi.py
            /env
                /lib
                    /python3.5
                        /site-packages

当我激活Virtualenv并使用manage.py文件时,系统正常运行:

/home/www/django/my_project/manage.py runserver 0.0.0.0:8000

我试图在Apache上设置WSGI,所以我不必每次都手动运行该命令。我的wsgi.py文件由以下内容组成:

import os
import sys

from django.core.wsgi import get_wsgi_application

sys.path.append('/home/www/django/my_project')

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "project.settings")

application = get_wsgi_application()

Apache的VirtualHost文件server_django.conf包含:

<VirtualHost *:8000>

    WSGIScriptAlias / /home/www/django/my_project/project/wsgi.py
    WSGIProcessGroup my_project
    WSGIDaemonProcess my_project python-path=/home/www/django/my_project/vision:/home/www/django/env/lib/python3.5/site-packages

    Alias /static /home/www/django/my_project/project/static
    <Directory /home/www/django/my_project/project/static>
        Require all granted
    </Directory>

    <Directory /home/www/django/my_project/project>
        <Files wsgi.py>
        Require all granted
    </Files>
    </Directory>

</VirtualHost>

我已使用a2ensite启用了该网站。我检查了我只安装了libapache2-mod-wsgi-py3(不是libpache2-mod-python或libpache2-mod-wsgi)。我认为权限是安全的。所有者是我的名字,但组是www,这是Apache使用的。 virtualenv目录具有相同的所有者,组和775权限标记。 Python版本可能是一个问题,但我认为它不应该是。当我在virtualenv中运行python -V时,我得到了Python 3.5.1+。在virtualenv之外,我得到Python 2.7.12。我的理解是,这就是为什么我们使用virtualenv - 来隔离版本。因此,如果Apache虚拟主机和wsgi.py文件配置正确,这不应该是问题(我认为)。

当我尝试在http://server.family.local:8000访问我的网站时,我收到500内部服务器错误,并在Apache错误日志中找到以下语句。

[Wed Jul 27 22:56:05.850055 2016] [wsgi:error] [pid 1003] [remote 192.168.14.185:3382] mod_wsgi (pid=1003): Target WSGI script '/home/www/django/my_project/project/wsgi.py' cannot be loaded as Python module.
[Wed Jul 27 22:56:05.850199 2016] [wsgi:error] [pid 1003] [remote 192.168.14.185:3382] mod_wsgi (pid=1003): Exception occurred processing WSGI script '/home/www/django/my_project/project/wsgi.py'.
[Wed Jul 27 22:56:05.850645 2016] [wsgi:error] [pid 1003] [remote 192.168.14.185:3382] Traceback (most recent call last):
[Wed Jul 27 22:56:05.850721 2016] [wsgi:error] [pid 1003] [remote 192.168.14.185:3382]   File "/home/www/django/my_project/project/wsgi.py", line 13, in <module>
[Wed Jul 27 22:56:05.850735 2016] [wsgi:error] [pid 1003] [remote 192.168.14.185:3382]     from django.core.wsgi import get_wsgi_application
[Wed Jul 27 22:56:05.850787 2016] [wsgi:error] [pid 1003] [remote 192.168.14.185:3382] ImportError: No module named 'django'
[Wed Jul 27 22:56:06.062315 2016] [wsgi:error] [pid 1003] [remote 192.168.14.185:3382] mod_wsgi (pid=1003): Target WSGI script '/home/www/django/my_project/project/wsgi.py' cannot be loaded as Python module.
[Wed Jul 27 22:56:06.062405 2016] [wsgi:error] [pid 1003] [remote 192.168.14.185:3382] mod_wsgi (pid=1003): Exception occurred processing WSGI script '/home/www/django/my_project/project/wsgi.py'.
[Wed Jul 27 22:56:06.062573 2016] [wsgi:error] [pid 1003] [remote 192.168.14.185:3382] Traceback (most recent call last):
[Wed Jul 27 22:56:06.062625 2016] [wsgi:error] [pid 1003] [remote 192.168.14.185:3382]   File "/home/www/django/my_project/project/wsgi.py", line 13, in <module>
[Wed Jul 27 22:56:06.062637 2016] [wsgi:error] [pid 1003] [remote 192.168.14.185:3382]     from django.core.wsgi import get_wsgi_application
[Wed Jul 27 22:56:06.062684 2016] [wsgi:error] [pid 1003] [remote 192.168.14.185:3382] ImportError: No module named 'django'
[Wed Jul 27 22:56:06.467512 2016] [wsgi:error] [pid 1003] [remote 192.168.14.185:3382] mod_wsgi (pid=1003): Target WSGI script '/home/www/django/my_project/project/wsgi.py' cannot be loaded as Python module.
[Wed Jul 27 22:56:06.467594 2016] [wsgi:error] [pid 1003] [remote 192.168.14.185:3382] mod_wsgi (pid=1003): Exception occurred processing WSGI script '/home/www/django/my_project/project/wsgi.py'.
[Wed Jul 27 22:56:06.467757 2016] [wsgi:error] [pid 1003] [remote 192.168.14.185:3382] Traceback (most recent call last):
[Wed Jul 27 22:56:06.467809 2016] [wsgi:error] [pid 1003] [remote 192.168.14.185:3382]   File "/home/www/django/my_project/project/wsgi.py", line 13, in <module>
[Wed Jul 27 22:56:06.467822 2016] [wsgi:error] [pid 1003] [remote 192.168.14.185:3382]     from django.core.wsgi import get_wsgi_application
[Wed Jul 27 22:56:06.467868 2016] [wsgi:error] [pid 1003] [remote 192.168.14.185:3382] ImportError: No module named 'django'
[Wed Jul 27 22:56:06.658228 2016] [wsgi:error] [pid 1003] [remote 192.168.14.185:3382] mod_wsgi (pid=1003): Target WSGI script '/home/www/django/my_project/project/wsgi.py' cannot be loaded as Python module.
[Wed Jul 27 22:56:06.658312 2016] [wsgi:error] [pid 1003] [remote 192.168.14.185:3382] mod_wsgi (pid=1003): Exception occurred processing WSGI script '/home/www/django/my_project/project/wsgi.py'.
[Wed Jul 27 22:56:06.658476 2016] [wsgi:error] [pid 1003] [remote 192.168.14.185:3382] Traceback (most recent call last):
[Wed Jul 27 22:56:06.658527 2016] [wsgi:error] [pid 1003] [remote 192.168.14.185:3382]   File "/home/www/django/my_project/project/wsgi.py", line 13, in <module>
[Wed Jul 27 22:56:06.658540 2016] [wsgi:error] [pid 1003] [remote 192.168.14.185:3382]     from django.core.wsgi import get_wsgi_application
[Wed Jul 27 22:56:06.658587 2016] [wsgi:error] [pid 1003] [remote 192.168.14.185:3382] ImportError: No module named 'django'

我不是专家,但似乎问题始于它无法加载wsgi.py文件但我无法理解为什么会出现问题。任何帮助都会很棒。谢谢。

0 个答案:

没有答案