升级到Yosemite后,我无法再使用我的网络服务器了。它被设置为接受端口443上的SSL连接,但现在netstat -a -n
表示它甚至没有监听该端口。我查看/etc/apache2
并注意到extra/
已移至original/extra
,所以我将其移回。 httpd.conf
中还有original/
的副本,但时间戳和大小未更改,差异显示它与我原来的httpd.conf
相同。 /etc/apache2
中唯一具有新时间戳的其他文件是users/
,但该目录中的任何内容都没有更改。
ssl/
中的所有证书文件仍具有正确的权限。我在/var/log/apache2/error_log
中没有看到任何内容(除了正常的启动消息)。事实上,即使我尝试访问端口80上的Web服务器,我也无法在error_log
或access_log
中获得任何内容,即使我在我尝试访问的每个页面上意外地获得403 Forbidden
。 / p>
我已经阅读过Yosemite将Apache从2.2升级到2.4的问题,但是我的Web服务器似乎无法正常修复由此引起的任何错误。在任何情况下,我都尝试了解决方案here,但我的httpd.conf文件不包含任何Order
或Allow
行(extra
/中也没有任何文件)所以我不能尝试那里建议的答案。
答案 0 :(得分:5)
好的,这是一个古老的话题,但这是一个答案。
我相信你必须在httpd.conf中取消注释几行。
执行命令
sudo vi /etc/apache2/httpd.conf
取消注释以下行:
#LoadModule ssl_module libexec/apache2/mod_ssl.so
#Include /private/etc/apache2/extra/httpd-ssl.conf
一个简单的技巧是使用VIM搜索配置文件,以从中找到与SSL相关的行并进行调试。
在VIM中,以下内容将查找ssl的所有实例...按n转到下一个找到的实例:
?ssl
进行更改后,请使用以下方法测试配置:
sudo apachectl configtest
如果一切顺利,请运行:
sudo apachectl restart
如果您收到以下错误:
SSLCertificateFile:file' /private/etc/apache2/server.crt'不存在或是空的
创建默认的自签名SSL证书:
cd /private/etc/apache2
openssl req -new -x509 -days 365 -nodes -out server.crt -keyout server.key
询问您的公共名称时输入localhost。
然后运行configtest,如果一切正常,请重启。