我安装了 Debian 9(Bitnami 设备),其中有 Moodle 学习系统和 Lambda 主题。我们启用了 https。我尝试根据最佳实践保护 Apache 服务器,最后我更改的两件事是在某些配置文件中添加“FileETag None”,并安装了 apachetop 来监控 Web 服务器。我猜是 apachetop 安装导致了这个问题。当我在浏览器中输入 IP 时,我得到了 Apache Web 服务器的初始屏幕,但网页不起作用。
当我尝试启动 apache 时,出现以下信息:
root@debian:/etc# sudo /opt/bitnami/ctlscript.sh start apache
Syntax OK
(98)Address already in use: AH00073: make_sock: unable to listen for
connections on address [::]:80
(98)Address already in use: AH00073: make_sock: unable to listen for
connections on address 0.0.0.0:80
no listening sockets available, shutting down
AH00015: Unable to open logs
/opt/bitnami/apache2/scripts/ctl.sh : httpd could not be started
Monitored apache
我尝试在网上搜索解决方案,但没有找到完全相同的错误消息。大多数关于绑定的类似问题的答案都是关于杀死第二个 apache 进程,但我发现只有一个 apache2 在监听。我试过这个:
root@debian:/etc/apache2/sites-enabled# sudo netstat -ltnp | grep ':80'
tcp6 0 0 :::80 :::* LISTEN
475/apache2
root@debian:/etc/apache2/sites-enabled# netstat -tulpn | grep apache2
tcp6 0 0 :::80 :::* LISTEN
475/apache2
root@debian:/etc/apache2/sites-enabled# sudo netstat -ltnp | grep ':443'
root@debian:/etc/apache2/sites-enabled#
我还将日志的所有权更改为 www-data,但没有任何变化。当我用此停止 apache 时
root@debian:/# /opt/bitnami/ctlscript.sh status apache
apache not running
root@debian:/# netstat -tulpn | grep apache2
tcp6 0 0 :::80 :::* LISTEN
475/apache2
我在浏览器中输入 ip 仍然可以访问“Apache2 Debian 默认页面”。这正常吗?
嗯,现在开始起作用了,
root@debian:/home/bitnami# ps aux | grep apache
root 462 0.0 0.4 75612 4268 ? Ss 09:04 0:00 /usr/sbin/apache2 -k start
www-data 463 0.0 0.3 364772 4036 ? Sl 09:04 0:00 /usr/sbin/apache2 -k start
www-data 464 0.0 0.3 364772 4036 ? Sl 09:04 0:00 /usr/sbin/apache2 -k start
root 1179 0.0 0.0 12784 960 pts/0 S+ 09:05 0:00 grep apache
root@debian:/home/bitnami# kill 462
root@debian:/home/bitnami# kill 463
bash: kill: (463) - No such process
root@debian:/home/bitnami# kill 464
bash: kill: (464) - No such process
root@debian:/home/bitnami# kill 1179
bash: kill: (1179) - No such process
root@debian:/home/bitnami# /opt/bitnami/ctlscript.sh start apache
Syntax OK
/opt/bitnami/apache2/scripts/ctl.sh : httpd started at port 80
Monitored apache
我认为杀死第一个进程可以使其工作,但是在服务器重启后我收到相同的错误消息,并且需要杀死该进程并启动 apache :(
答案1
这是一个线索。
(98)地址已被使用:
这证实了线索所暗示的内容。
tcp6 0 0 :::80 :::* 侦听 475/apache2
Apache 已在监听端口 80,这就是启动命令失败的原因。
只是一个想法......在启动新的 apache 之前,最好先停止当前正在运行的 apache。
答案2
我首先会尝试定期停止 Apache
root@debian:/etc# sudo /opt/bitnami/ctlscript.sh 停止 apache
之后,它会智能地查看 Apache 是否真的关闭
ps 辅助 |删除 Apache
如果你看到 apache 的进程 ID,请尝试首先发送 kill 信号
杀进程 ID
再次列出进程附言命令,如果你看到 apache,用 SIGKILL 杀死它
杀死-9进程 ID
现在,您将看到 apache 仍在运行 -> 这意味着正在重新启动它,您需要找出原因。否则您将看不到任何进程。如果是这种情况,请重新启动 apache。
root@debian:/etc# sudo /opt/bitnami/ctlscript.sh 启动 apache
如果再次出现错误,则意味着 apache 已启动两次。因此启动脚本可能存在问题/opt/bitnami/ctlscript.sh但我对此深表怀疑。
一旦您确定问题是否是因为 apache 在您终止它时自动重新启动或启动两次,您应该能够更深入地研究问题,但我怀疑是否可以通过像这样的 QA 站点进行正确的调试,而是建议由经验丰富的管理员进行。