我们都知道,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吧!?
应该不是bug,根据现象,我猜这个问题应该是apparmor策略导致的,apparmor策略限制了apache2能访问的目录。
你可以看看apparmor中apache2的策略是什么,是不是启用状态的。syslog中应该也有相关的日志记录。
这个apparmor就相当于是redhat系上的selinux,不过感觉相比selinux要更容易点。