【问题标题】:Apache did not serve my Django project templates correctlyApache 没有正确地为我的 Django 项目模板提供服务
【发布时间】:2021-05-18 15:17:40
【问题描述】:

这个 index.html 显示了 apache 默认页面。

当我 cd /var/www/html 并 ls 它时,它显示了 index.html,它是 apache 默认索引页面。

我的问题是:我应该怎么做才能将自己的模板更改为页面索引页面,我应该将模板文件夹cp到这个/var/www/html,还是应该在project.conf中做一些事情,或者我应该改变将chown/chmod添加到我的项目中的模板目录中以便我实现它?

这是我的可用站点/project.conf:

<VirtualHost *:80>
ServerAdmin root@localhost
ServerName Server_IP
ServerAlias Server_IP

DocumentRoot /var/www/html #maybe the problem of this line

 Alias /static /home/ME/project/static
        <Directory /home/ME/project/static>
                Require all granted
        </Directory>

        Alias /media /home/ME/project/media
        <Directory /home/ME/project/media>
                Require all granted
        </Directory>


  <Directory /home/ME/project/Project>
                <Files wsgi.py>
                        Require all granted
                </Files>
</Directory>

<Directory />
    Require all granted
</Directory>

ErrorLog ${APACHE_LOG_DIR}/error.log
</VirtualHost>

ps。当我尝试将documentroot 更改为/home/ME/project_1/templates 时,页面显示我没有权限访问该文件的错误。

【问题讨论】:

    标签: python django apache server apache2


    【解决方案1】:

    嗯,首先我很惊讶你从来没有在你的 Apache 配置文件中声明域名,或者你没有使用带有反向代理的 .conf 文件。

    其次,您不应该直接在家中提供静态目录。运行 apache 并提供文件的用户很可能无法访问此目录。因此“没有权限错误”。

    改为包含一个

    python manage.py collecstatic
    

    在您的 CD 脚本中(或每次手动执行),以便 Django 将静态目录中的文件复制到 STATIC_ROOT 设置中(在您的 settings.py 中)。并将这个 STATIC_ROOT 指向类似 var/www/my-project/static 的东西。然后更新您的 apache 配置文件以将此目录用于您的静态文件。确保运行 CD 脚本的用户具有在此目录上写入的适当权限。然后它应该可以工作了。

    这里是doc

    【讨论】:

    • 感谢您的回复,但是我已经收集了静态文件并且我的静态文件已经在项目的目录而不是home(它在home/user/project中)。我的 HTML 模板也不在静态文件夹中,这有关系吗?
    猜你喜欢
    • 1970-01-01
    • 2019-09-03
    • 2016-12-24
    • 2020-09-04
    • 1970-01-01
    • 1970-01-01
    • 2020-08-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多