我正在 Ubuntu 10.04 LTS 服务器上设置 HTTPS 服务器。
配置完所有内容后,当我尝试启动服务器时,我得到:
root@dns2:/etc/apache2# /etc/init.d/apache2 start
* Starting web server apache2
apache2: Syntax error on line 204 of /etc/apache2/apache2.conf: Could not open configuration file /etc/apache2/mods-enabled/ssl.load: Permission denied
...fail!
apache2.conf 中的相关行 204 是Include /etc/apache2/mods-enabled/*.load
mods-enabled(根据标准,软链接到 mods-available):
root@dns2:/etc/apache2# ls -l mods-enabled
total 0
<stuff>
lrwxrwxrwx 1 root root 26 2011-06-17 16:24 ssl.conf -> ../mods-available/ssl.conf
lrwxrwxrwx 1 root root 26 2011-06-17 16:24 ssl.load -> ../mods-available/ssl.load
<stuff>
可用模组:
-rw-r--r-- 1 root root 2412 2010-11-18 13:18 ssl.conf
-rw-r--r-- 1 root root 58 2010-11-18 13:18 ssl.load
我看不出出现此错误的任何原因。我完全困惑了。有什么想法吗?
编辑:sites-available 和 sites-enabled 目录权限
drwxr-xr-x 2 root root 4096 2011-06-17 16:36 sites-available
drwxr-xr-x 2 root root 4096 2011-06-17 16:28 sites-enabled
EDIT2:我尝试禁用 ssl 模块并启动 apache:
root@dns2:/etc/apache2# a2dismod ssl
Module ssl disabled.
Run '/etc/init.d/apache2 restart' to activate new configuration!
root@dns2:/etc/apache2# /etc/init.d/apache2 start
* Starting web server apache2
apache2: Syntax error on line 236 of /etc/apache2/apache2.conf: Could not open configuration file /etc/apache2/sites-enabled/000-default-ssl: Permission denied
...fail!
000-default-ssl 指向默认的 ssl 虚拟主机配置文件。再次,所有权限都正确。删除 000-default-ssl 后,apache 正常启动。显然,因为现在它恢复为默认配置...
答案1
请记住,不仅要检查文件所在的目录,还要检查到该目录的所有路径。当(例如)/etc/apache2/ 只有 700 时,检查 /etc/apache2/mods-enabled/ 是没有意义的;)
尝试使用 apaches 控制命令以 root 身份启动它。
apache2ctl start
或者
sudo apache2ctl start
作为用户。检查是否收到相同的错误或更多信息。
答案2
我搞清楚了发生了什么。我的 apache2 的 AppArmor 配置文件阻止了对 mod_ssl 的访问。允许 apache2 访问其 AppArmor 配置文件中的上述文件可以解决所有问题。好吧,至少我知道 AppArmor 正在正常工作 =)
我不知道是否应该就此再问一个问题,但 AppArmor 对 Apache 的安全性是否足够好?我真的不想 chroot Apache,而且我听说 chroot 不太安全。