【问题标题】:Apache Server returning html file in var/www/html but not returning my websiteApache 服务器在 var/www/html 中返回 html 文件但不返回我的网站
【发布时间】:2019-11-11 19:23:33
【问题描述】:

我有一个 Linux 服务器 (Ubuntu) 并且正在尝试设置 apache,但该服务器没有运行我的实际 Django 服务器,而是在 var/www/html 中运行一个 html 文件。 运行

sudo systemctl reload apache2

工作正常,所以我认为问题涉及 /etc/apache2/sites-available/ 中名为 infosum.conf 的 .conf 文件。

这适用于新的 Linux 服务器 (Ubuntu)。该项目正在运行带有 mod-wsgi 的 python3 Django 2.2 和 apache 2.4。运行时

python manage.py runserver 0.0.0.0:8000

,服务器工作正常,但是在 apache 服务器上它只返回那个 HTML 文件。

/etc/apache2/sites-available/infosum.conf(infosum是项目名称)

Alias /static/ /home/username/infosum/staticfiles
<Directory /home/username/infosum/staticfiles>
    Require all granted
</Directory>
Alias /media/ /home/username/infosum/media/
<Directory /home/username/infosum/media>
    Require all granted
</Directory>
<Directory /home/username/infosum/infosum>
     <Files wsgi.py>
           Require all granted
      </Files>
</Directory>
WSGIScriptAlias / /home/username/infosum/infosum/wsgi.py
WSGIDaemonProcess django_app python-path=/home/username/infosum python-home=/home/username/infosum/venv
        WSGIProcessGroup django_app

/home/用户名/infosum/infosum/wsgi.py

import os
import sys
sys.path.append('/home/username/infosum/infosum')

# add the virtualenv site-packages path to the sys.path
sys.path.append('/home/username/infosum/venv/Lib/site-packages')
from django.core.wsgi import get_wsgi_application

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'infosum.settings')

application = get_wsgi_application()

更新: 我刚刚跑了

sudo a2ensite infosum

我认为,它可以使网站正常运行。一个问题,运行时出现500服务器错误

sudo tail -f /var/log/apache2/error.log

我明白了

ImportError: No module named django.core.wsgi

【问题讨论】:

  • 很可能是与 SELinux 和/或权限相关的问题,无论如何都不是问题。您真的不希望 Web 服务器能够读取用户主目录的文件。我很确定,在 Ubuntu 中,就像在任何其他合理的 Linux 发行版中一样,有一个默认位置来放置您的内容。阅读相应的文档。
  • 提示:为了规避我在地平线上看到的一些(安全)问题,请使用 Docker。它在不损害系统安全性的同时消除了您的痛点(诚然,这受到了一些人的质疑)。请参阅 caktusgroup.com/blog/2017/03/14/… 了解快速入门。
  • @Markus 所以你建议我把项目放到另一个文件夹中(不是在主目录中)?您能否提供提到的文档的链接?
  • 嗯...我从字面上看不知道 Ubuntu 如何处理这类东西,但通常它类似于/var/www/html/[yourVirtualHostIfYouHappenToHaveOne]。不过,您应该能够挖掘相应的文档。一个快速的谷歌搜索给了我a decent configuration primer
  • 您是否将该 conf 文件符号链接到已启用站点?还是运行 a2ensite?

标签: python django apache ubuntu django-deployment


【解决方案1】:

好的,我明白了。首先我跑了

a2ensite /etc/apache2/sitesavailable/infosum

并从

更新了 wsgi.py 文件
sys.path.append('/home/username/infosum/venv/Lib/site-packages')

sys.path.append('/home/username/infosum/venv/lib/python3.7/site-packages')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-03-29
    • 1970-01-01
    • 1970-01-01
    • 2020-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多