当前位置: 首页 > 知识库问答 >
问题:

奇葩的故障,debian12+apache2-2.4.57.2 无法修改apache2的根目录?

白驰
2023-06-22

我们都知道,apache服务器的默认目录是 /var/www/html,但是你可以任意修改这个目录。
debian11+apache2-2.4.56版本下的情况:
系统信息

cat /proc/version
Linux version 5.10.0-18-amd64 (debian-kernel@lists.debian.org) (gcc-10 (Debian 10.2.1-6) 10.2.1 20210110, GNU ld (GNU Binutils for Debian) 2.35.2) #1 SMP Debian 5.10.140-1 (2022-09-02)

sudo dpkg -l apache2
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name           Version          Architecture Description
+++-==============-================-============-==============================>
ii  apache2        2.4.56-1~deb11u2 amd64        Apache HTTP Server
lines 1-6/6 (END)

我写一个/var/www/html/index.html.

vim /var/www/html/index.html
<p>welcome</p>

浏览器中输入 127.0.0.1/index.html ,显示 welcome.

现在,我更换根目录了

    vim  /etc/apache2/sites-enabled/000-default.conf
    <VirtualHost *:80>
     ServerName localhost
     DocumentRoot /home/debian/mydoc/mydoc/build/html
     <Directory /home/debian/mydoc/mydoc/build/html>
         Options Indexes FollowSymLinks
         AllowOverride None
         Require all granted
     </Directory>
    </VirtualHost>

重新启动

sudo systemctl restart apache2

写一个index.html

vim  /home/debian/mydoc/mydoc/build/html/index.html
<p>
welcome in  /home/debian/mydoc/mydoc/build/html
</p>

浏览器验证

127.0.0.1/index.html
welcome in  /home/debian/mydoc/mydoc/build/html

都看见了哈,没有问题,可以任意修改根目录位置。
我现在装了一个新系统,请看:

cat /proc/version
Linux version 6.1.0-9-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian 6.1.27-1 (2023-05-08)

sudo dpkg -l apache2
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name           Version      Architecture Description
+++-==============-============-============-=================================
ii  apache2        2.4.57-2     amd64        Apache HTTP Server

debian12 + apache2-2.4.57-2.
我修改根目录的位置

    cat  /etc/apache2/sites-enabled/000-default.conf
    <VirtualHost *:80>
     ServerName localhost
     DocumentRoot /home/debian/mydoc/mydoc/build/html
     <Directory /home/debian/mydoc/mydoc/build/html>
         Options Indexes FollowSymLinks
         AllowOverride None
         Require all granted
     </Directory>
    </VirtualHost>

重启服务器

sudo systemctl restart apache2

写一个测试文件

vim  /home/debian/mydoc/mydoc/build/html/index.html
<p>
welcome in  /home/debian/mydoc/mydoc/build/html in new version
</p>

浏览器中测试

Forbidden
You don't have permission to access this resource.

Apache/2.4.57 (Debian) Server at 127.0.0.1 Port 80

设置一下文件权限与拥有者

sudo chmod -R 755 /home/debian/mydoc/mydoc/build/html/*
sudo chown -R www-data:www-data /home/debian/mydoc/mydoc/build/html

浏览器中测试,还是不行 (sudo chmod -R 644 /home/debian/mydoc/mydoc/build/html/* 也不行)。
新版本的apache2有bug吧!?

共有1个答案

奚无尘
2023-06-22

应该不是bug,根据现象,我猜这个问题应该是apparmor策略导致的,apparmor策略限制了apache2能访问的目录。

你可以看看apparmor中apache2的策略是什么,是不是启用状态的。syslog中应该也有相关的日志记录。

这个apparmor就相当于是redhat系上的selinux,不过感觉相比selinux要更容易点。

 类似资料:
  • 我确实有以下问题。我已经将一些具有相同层次结构和网站结构的网站迁移到了一个使用Apache 2.4.7的新服务器上。旧服务器有2.2.22。我已经将默认的DocumentRoot更改为/var/www 为了进行测试,我在那里创建了一个索引.html文件,其中有一个点作为内容。现在我在 /sites-enabled/ 中确实有一个包含以下内容的文件: 这是我以前的2.2.22 Apache上的一个有

  • Apache2::ASP 提供了在Apache服务器上使用ASP编写网页的功能。该模块采用Perl开发,具有高性能和快速开发的特点。

  • Apache2::ModProxyPerlHtml 是一个 Apache 的 mod_perl2 模块的替换产品。用来为反向代理重写 HTML/JavaScript 链接,支持 Refresh meta 标签中的链接重写。

  • 直到昨天,我的阿帕奇一切都很好。但当我现在开始的时候,会发现错误: 名为的Apache服务报告了以下错误: httpd.exe:C:/xampp/apache/conf/httpd.conf第520行语法错误: C:/xampp/apache/conf/额外/httpd-xampp.conf第17行语法错误: 无法加载C:/xampp/php/php7ts.dll进入服务器:找不到指定的模块。.

  • Apache2 XSLT filter 是一个 Apache 的模块,用来处理XSLT的转换,它使用LibXML2+LibXSLT作为XSLT的转换引擎。 Apache2 XSLT filter 作为Apache的输出过滤器,与 mod_perl 、CGI以及PHP程序兼容。 详细的配置方法在该项目的首页中。

  • 我想在macos上使用apache2从PHP文件执行Python脚本。我能够执行简单的python脚本,如: 从PHP: 巨蟒 输出是: 但当我尝试导入以下包时: 我得到: 我的问题是,有人知道: 1–我如何使这些(以及任何其他)软件包工作? 2–shell_exec当前正在执行python2。如何添加Python 3?(如果我编写python3而不是python将无法工作)