最近把自己做的Django项目部署到了Windows服务上,使用的是Apache,中间踩了不少坑。这篇文章就把Apache提示the requested operation has failed的问题集中总结一下(包括我踩的坑和查到的其他资料):
情况一:端口被占用。
解决思路:查找端口的PID,然后禁掉或者给你的端口换一个没占用的。
说说我的实际解决过程:我先用netstat -aon|findstr "80",找到端口80的PID,然后使用任务管理查看PID对应的进程(可以在Windows窗口下方任务栏右击找到)。结果我发现该进程是阿里云的,没法禁用。所以我就给自己的端口直接改成了81 (修改端口即修改httpd.conf配置。我放在了文章最后)。
情况二:httpd.conf配置的语法错误
解决思路:通过httpd -t(要cd到bin文件夹才能使用此命令),查看显示出来的是什么错误,在进行修改。我在实际过程中没有遇到这个问题,遇到这个问题的朋友可以使用这种方法。
情况三:httpd.conf配置文件的解压目录错误
解决思路,在httpd.conf文件中查找Apache24,看他的解压目录是否正确,进行修改。我在实际过程中没有遇到这个问题,遇到这个问题的朋友可以使用这种方法。
情况四:Apache24文件路径跟解压路径不匹配。
这个问题长出现在自己移动了Apache24文件,导致已经写好的注册表跟实际不匹配。所以解决思路就有两种:
一种是把Apache24文件再移动到原来位置,跟Apache24服务路径对应。
二种是把Apache24服务路径更改掉,这种比较麻烦,需要到打开注册表修改注册信息(注册表可以通过:win + R即可调出运行窗口,在运行窗口键入“regedit”打开),然后搜索到Apache24服务的注册表进行路径修改。
情况五:没有安装VC
思路就是安装对应VC,可以去https://www.apachelounge.com/download/中下载对应VC。
说说我的实际解决过程:我把以上四种情况都排除了,并且在本地服务中启动Apache24时还提示了“错误 1053: 服务没有及时响应启动或控制请求“”,顺着这个线索,才知道是缺少VC,下载之后一试,果然成功启动。(有人说如果打开提示缺少dll文件,也应该安装VC,这个我没有遇到过,不过也把它当做一种情况放在这里吧)
如何修改httpd.conf文件
其实只需要修改下面三处即可
Define SRVROOT "C:\Apache24" #Apache24文件的路径,其余不用改。
...
Listen 81 #改成81
...
ServerName localhost:81 #改成localhost:81或者直接81
这种把端口调成81 的方法是能用来本地测试,所以想让其他人从网上搜到,我的经验是得用8000端口。
有人说可以用公网IP放到Listen这里,但我自己测试了一下不行,公网IP只能替换localhost,或者干脆就不写在配置里(就像这样Listen 8000...ServerName 8000)这两种方法都能可以让你的网站被搜到。
个人认为Listen监听的是所有发生在这个端口的所有事件,它的默认IP是地址0.0.0.0,所以只要是端口8000的都能监听到。如果强行给它增加一个公网IP,会导致出错。