系统操作&设置
- 有时设置完重启Apache仍无法显示设置后的结果,则可能是浏览器缓存了页面,此时可以用
ctrl+F5
刷新当前页面及缓存。 - Apache启动方式有下列几种
启动方式 | 弹出错误/警报 | 解决方法 |
---|---|---|
通过托盘Monitor启动 | “The requested operation has failed” | 一般是端口占用 |
以管理员身份通过命令行 在安装目录的bin下启动 httpd -k start或stop或restart | “[warning]… 127.0.0.1 for ServerName” | 不建议修复该警报 如果在 httpd.conf 中添加ServerName 127.0.0.1 ,则报警消失,但会导致Apache无法启动,表现为: 运行 httpd -k start 后无命令行反馈,而后运行 httpd -k stop 提示Apache未曾启动。 |
通过服务面板启动 (不是任务管理器中的"服务") | “服务器无法启动,发生服务特定错误1” | 可能原因 (1)端口被占用 (2)在 <VirtualHost> 下如果添加了"ErrorLog xxx",则会导致该错。 |
- 主要有三个程序会占用80端口:迅雷、SQL和IIS。(建议卸载迅雷以免影响测试)如果发现有程序占用80端口,可以稍等一会程序可能会自动停止而释放80端口。
- 查询哪个应用程序占用了80端口:在命令行输入
netstat -aon|findstr "80"
,而后根据所得的PID在任务管理器中找到进程,如果是"System,PID=4",则应该考虑是否是IIS或SQL占用,前者通过在“程序与软件”中停用(就是取消勾选相应的IIS组件),后者需手动在“服务”中设置启动类型为“手动”。
- 查询哪个应用程序占用了80端口:在命令行输入
配置文件设置
- 四个关键的设置项:
NameVirtualHost
、Listen
、<VirtualHost>
和hosts文件。 - 如果需要为localhost单独配置一个页面,需配置
<VirtualHost _default_:80>
。其中80端口是必须的,这样可以限制该虚拟主机只使用80端口而不使用其他端口,否则,无法访问其他ip地址为127.0.0.1的“基于端口”的虚拟主机(因为被_default_
截住了)。 - 只有“基于域名”的虚拟主机需要配置
NameVirtualHost
和hosts文件,“基于端口”的虚拟主机不需要配置上述两个参数,但需要配置Listen 80
,监听80端口。(因为Apache默认配置了Listen 80
,所以“基于域名”的虚拟主机不用再配置Listen 80
了) - hosts文件是用于配置域名解析服务(DNS)的,而域名解析与端口无关。
- 如果需要配置“基于端口”的虚拟主机,如果在公网上没有属于自己的IP地址和域名备案(也就是说需要配置host文件指定IP和域名的对应关系),那么在配置
<VirtualHost ____:___>
时端口必须是80,否则会由于hosts文件无法传递端口信息而自动跳转到localhost:80
对应的主机下的网站。这个问题的关键在于Apache并不是根据输入的域名去寻找主机,而是拿hosts返回的ip地址去找,而hosts返回的ip不带有端口信息,则Apahce会自动加上80端口,但是80端口配置的主机下并不存在我们所输入域名对应的网站,所以会出现无法访问“端口≠80的基于域名的虚拟主机”的问题。