Django - Apache2内部服务器错误

时间:2018-06-14 08:23:46

标签: django python-2.7 ubuntu apache2 mod-wsgi

我在名为/home/toto/Desktop的{​​{1}}下创建了一个django项目,我想用Apache2和mod_wsgi为我的Django应用程序提供服务。

我使用此命令dash_test安装了Apache Web服务器,mod_wsgi和pip。我在名为sudo apt-get install python-pip apache2 libapache2-mod-wsgi的项目目录中创建了一个python虚拟环境。

developer中的allowed_hosts如下所示:

settings.py

我添加了static_url和static_root:

ALLOWED_HOSTS = ['xxx.xxx.xxx.xxx', 'localhost', '127.0.0.1']`

我确实运行了STATIC_URL = '/static/' STATIC_ROOT = os.path.join(BASE_DIR, 'static/')

我通过编辑collectstatic

来配置apache
000-default.conf

当我尝试访问localhost时出现此错误:

  

内部服务器错误     服务器遇到内部错误或配置错误,无法完成您的请求。     请通过[无地址]联系服务器管理员,告知他们此错误发生的时间以及您在此错误发生之前执行的操作。     服务器错误日志中可能提供了有关此错误的更多信息。   Apache / 2.4.18(Ubuntu)服务器在localhost端口80

以下是apache2 <VirtualHost *:80> Alias /static /home/toto/Desktop/dash_test/static <Directory /home/toto/Desktop/dash_test/static> Require all granted </Directory> <Directory /home/toto/Desktop/dash_test/dash_test> <Files wsgi.py> Require all granted </Files> </Directory> WSGIDaemonProcess dash_test python-home=/home/toto/Desktop/dash_test/developer python-path=/home/toto/Desktop/dash_test WSGIProcessGroup dash_test WSGIScriptAlias / /home/toto/Desktop/dash_test/dash_test/wsgi.py </VirtualHost> 的内容:

error.log

我正在使用MySQL和phpMyAdmin而不是db.sqlite3

非常感谢。

2 个答案:

答案 0 :(得分:1)

而不是:

<Directory /home/toto/Desktop/dash_test/dash_test>
    <Files wsgi.py>
        Require all granted
    </Files>
</Directory>

使用:

<Directory /home/toto/Desktop/dash_test>
    <Files wsgi.py>
        Require all granted
    </Files>
</Directory>

你使用了错误的目录。

那个或你有:

WSGIScriptAlias / /home/toto/Desktop/dash_test/wsgi.py

错误,它应该是:

WSGIScriptAlias / /home/toto/Desktop/dash_test/dash_test/wsgi.py

如果这是一个Django应用程序,wsgi.py的位置实际上看起来并不正确。

wsgi.py文件的实际路径是什么。

上面的目录参数应该是它所在的目录。

答案 1 :(得分:0)

我使用 Django 3.x 和 Apache 2.4 将我的项目上传到本地主机,确实我要测试我的项目和 Apache,但我遇到了同样的问题,当我检查我的 Apache error.log 时,它是:“ModuleNotFoundError:没有名为 'django' 的模块"

并且配置文件似乎没问题,当我使用:"sudo apache2ctl configtest"进行检查时

但是我用这两个命令来解决问题

  sudo a2dissite 000-default
  sudo a2ensite 000-default

和 须藤 systemctl 重新加载 apache2