首页 > 解决方案 > Django 应用程序使用 virtualenv、wsgi 和 apache 在部署到生产时抛出错误

问题描述

试图将我的应用程序投入生产一直很忙。

在我调用该站点后检查 apache 的错误日志时出现语法错误。

我已经完成了在线不同来源中看到的所有内容,但我无法通过错误。主要问题是,当应用程序通常在开发中顺利运行时,我什至不明白为什么 Django 的内部函数会出现语法错误。

我得到的错误如下所示

[Tue Jun 05 08:13:34.179813 2018] [:error] [pid 1390] [remote ::1:0]   File "/var/www/html/app_folder/app/index.wsgi", line 29, in <module>
[Tue Jun 05 08:13:34.179860 2018] [:error] [pid 1390] [remote ::1:0]     import django.core.handlers.wsgi
[Tue Jun 05 08:13:34.179869 2018] [:error] [pid 1390] [remote ::1:0]   File "/home/user/.virtualenvs/app/lib/python3.6/site-packages/django/__init__.py", line 1, in <module>
[Tue Jun 05 08:13:34.179900 2018] [:error] [pid 1390] [remote ::1:0]     from django.utils.version import get_version
[Tue Jun 05 08:13:34.179907 2018] [:error] [pid 1390] [remote ::1:0]   File "/home/user/.virtualenvs/app/lib/python3.6/site-packages/django/utils/version.py", line 2, in <module>
[Tue Jun 05 08:13:34.179954 2018] [:error] [pid 1390] [remote ::1:0]     import functools
[Tue Jun 05 08:13:34.179982 2018] [:error] [pid 1390] [remote ::1:0]   File "/home/user/.virtualenvs/app/lib/python3.6/functools.py", line 254
[Tue Jun 05 08:13:34.179986 2018] [:error] [pid 1390] [remote ::1:0]     cls, func, *args = args
[Tue Jun 05 08:13:34.179988 2018] [:error] [pid 1390] [remote ::1:0]                ^
[Tue Jun 05 08:13:34.179990 2018] [:error] [pid 1390] [remote ::1:0] SyntaxError: invalid syntax

这是我的 wsgi 文件的内容:

import os
import sys
import site
#import django

# Add the site-packages of the chosen virtualenv to work with
site.addsitedir('/home/user/.virtualenvs/app/lib/python3.6/site-packages')

# Add the app's directory to the PYTHONPATH
sys.path.append('/var/www/html/app_folder')
sys.path.append('/var/www/html/app_folder/app')


os.environ['DJANGO_SETTINGS_MODULE'] = 'app.settings'

# Activate your virtual env
activate_env=os.path.expanduser("/home/user/.virtualenvs/app/bin/activate_this.py")
execfile(activate_env, dict(__file__=activate_env))


import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()

Django version 2.0.4
Python version 3.6

阿帕奇配置:

<VirtualHost *:9000>
    ServerAdmin webmaster@server.com
    ServerName test.server.com
    ServerAlias test.server.com

    WSGIDaemonProcess app processes=5 python-path=/var/html/www/app_folder/app:/home/user/.virtualenvs/app/lib/python3.6/site-packages:/home/user/.virtualenvs/app/lib/python3.6/ threads=1
    WSGIProcessGroup app

    WSGIScriptAlias / /var/www/html/app_folder/app/index.wsgi
    Alias /static/ /var/www/html/app_folder/app/static/

    <Location "/static/">
        Options -Indexes
    </Location>

非常感谢您的帮助,因为这是紧急情况。

标签: pythondjangopython-3.xmod-wsgiwsgi

解决方案


推荐阅读