我从 RHEL 7 (Amazon ec2) 启动 Apache 服务器时遇到一些问题。我更大的目标是使用 Anaconda 环境从 ec2 实例托管 Flask 应用程序,但现在我只关心如何正确启动 httpd 服务。
我发现有很多类似的问题这里,这里,这里等等,但似乎都没有解决我遇到的确切问题。
我正在跟进本教程直到最后一个>
字符,但是命令
sudo apachectl restart
和
sudo service httpd restart
两者都会导致错误并引导我检查systemctl status httpd.service
更多信息。该文件的输出如下:
httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
Active: failed (Result: exit-code) since Fri 2018-04-06 21:00:42 UTC; 4s ago
Docs: man:httpd(8)
man:apachectl(8)
Process: 32166 ExecStop=/bin/kill -WINCH ${MAINPID} (code=exited, status=1/FAILURE)
Process: 32165 ExecStart=/usr/sbin/httpd $OPTIONS -DFOREGROUND (code=exited, status=0/SUCCESS)
Main PID: 32165 (code=exited, status=0/SUCCESS)
[long ec2 ip address] systemd[1]: Starting The Apache HTTP Server...
[long ec2 ip address] httpd[32165]: httpd (pid 28220) already running
[long ec2 ip address] kill[32166]: kill: cannot find process ""
[long ec2 ip address] systemd[1]: httpd.service: control process exited, code=exited status=1
[long ec2 ip address] systemd[1]: Failed to start The Apache HTTP Server.
[long ec2 ip address] systemd[1]: Unit httpd.service entered failed state.
[long ec2 ip address] systemd[1]: httpd.service failed.
返回的输出journalctl -xe
相同。
我已经双重甚至三重检查这发帖确认我的 ec2 安全组配置正确,确实如此。
有关我的系统的一些信息(不知道这些信息是否有帮助,但我认为最好包含它):
Apache Version: Apache/2.4.6 (Red Hat Enterprise Linux) configured
$ /usr/bin/python -V
Python 2.7.5
$ sudo yum install mod_wsgi
Package mod_wsgi-3.4-12.el7_0.x86_64 already installed and latest version
$ service httpd configtest
Syntax OK
$ sudo chkconfig --levels 235 httpd on
Note: Forwarding request to 'systemctl enable httpd.service'
命令sudo netstat -lnp | grep :80
返回tcp 0 0 :::0 :::* LISTEN 28220/httpd
我现在注意到该文件/etc/init.d/httpd
不存在。这有关系吗?
通常,我会尽力查看错误日志并自己找出问题的原因,但我可以在任何地方识别的唯一错误是在 中/var/log/httpd/error_log
,其中内容如下:
AH01276: Cannot serve directory /var/www/html/: No matching DirectoryIndex (index.html) found, and server-generated directory index forbidden by Options directive
如果以前有人问过这个问题,请指导我。我已经到处寻找,到目前为止还没有运气。
干杯。
答案1
解决方案:感谢@GracefulRestart,我能够确定问题:
我认为我的错误在于对多个 ec2 实例使用相同的安全组(每个实例我现在都已停用)。不管怎样,我跑了pgrep httpd
,看到返回了一个包含 7 个数字的列表。然后运行ps -aux
查看我正在运行的进程的完整列表。该列表的底部是返回的所有 httpd 进程pgrep httpd
(大多数都有apache
as user
,但不是全部)。我用以下方法杀死了他们每个人:
sudo kill -9 [PID]
然后跑了sudo apachectl restart
,果然成功了。