【问题标题】:Don't have permission to access / on this server (apache2) in docker在 docker 中无权访问此服务器 (apache2) 上的 /
【发布时间】:2023-03-10 01:21:01
【问题描述】:

我正在尝试使用 apache2 服务器在 Docker 中托管 Django 项目。我正在手动启动 apache 服务器并能够访问默认站点。但是,当我配置 000-default.config 文件时,我收到错误您没有权限访问此服务器上的 /。

这是我的 000-default.config 文件

<VirtualHost *:8000>
    DocumentRoot /code/demo
    WSGIScriptAlias / /code/demo/app/wsgi.py
    <Directory "/code/demo/backup">
            Require all granted
    </Directory>
    CustomLog ${APACHE_LOG_DIR}/access.log combined
    ErrorLog ${APACHE_LOG_DIR}/error.log
</VirtualHost>

这是我的 Dockerfile

FROM ubuntu
MAINTAINER kketan@somemail.com
RUN apt-get update && apt-get -y --force-yes install build-essential
RUN apt-get -y --force-yes install python python-pip python-dev
RUN apt-get -y --force-yes install libffi-dev libssl-dev
RUN apt-get install -y --force-yes libmysqlclient-dev
RUN mkdir /code
ADD evn_packages.txt /code
ADD python_packages.txt /code
RUN apt-get install -y apache2
RUN apt-get install -y mariadb-server
RUN pip install --upgrade pip
RUN pip install -r python_packages.txt
RUN apt-get install -y vim
ADD django /code
EXPOSE 8000
RUN apt-get install -y libapache2-mod-wsgi

我正在从上面显示的同一目录中导入 Django 项目。即使使用默认的 Django 服务器也能够运行项目,但无法在浏览器中访问它。我还将端口监听更改为 8000,因为它在默认端口 80 上不起作用。

我是 docker 新手,我是否在 Dockerfile 中遗漏并授予权限?您还可以分享一些如何在 Docker 中使用 apache2 托管 Django 项目的链接,因为我无法在网上找到好的内容。

【问题讨论】:

    标签: django apache docker mod-wsgi dockerfile


    【解决方案1】:

    首先:

    <Directory "/code/ilab/backup">
    

    应该是:

    <Directory "/code/demo/app">
    

    一般来说,尝试自己从头开始构建 Docker 映像是一个坏主意,因为要以正确的方式做事需要学习很多东西。例如,您正在做的另一个问题是将日志发送到容器中的文件时,它们应该被发送到 stdout/stderr 以便 Docker 可以捕获它们。

    您可能想尝试找到预先构建的映像,这些映像可以为您正确设置所有内容,并使部署应用程序变得相对容易。作为一个例子,看看事情是如何完成的:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-10-18
      • 2013-02-24
      • 2013-06-30
      • 2019-02-22
      • 2017-10-31
      相关资源
      最近更新 更多