我最近错过了 VPS 的付款,当我重新激活它时,Apache 服务器无法正常工作。
我已建立了多个网站,并通过子域名(cloud.mydomain.com、wiki.mydomain.com 等)进行分隔,当然还有一个 mydomain.com 首页。
重新激活后,我的所有子域名都指向运行 nextcloud 的 cloud.mydomain.com。我觉得很奇怪,它至少没有指向我常用的首页。
启动 apache 产生以下结果:
$sudo service apache2 stop
$sudo service apache2 start
$sudo service apache2 status
Jan 03 16:34:22 vmi120100.contaboserver.net apache2[4414]: (98)Address already in use: AH00072: make_sock: could not bind to address [::]:80
Jan 03 16:34:22 vmi120100.contaboserver.net apache2[4414]: (98)Address already in use: AH00072: make_sock: could not bind to address 0.0.0.0:80
Jan 03 16:34:22 vmi120100.contaboserver.net apache2[4414]: no listening sockets available, shutting down
Jan 03 16:34:22 vmi120100.contaboserver.net apache2[4414]: AH00015: Unable to open logs
Jan 03 16:34:22 vmi120100.contaboserver.net apache2[4414]: Action 'start' failed.
Jan 03 16:34:22 vmi120100.contaboserver.net apache2[4414]: The Apache error log may have more information.
Jan 03 16:34:22 vmi120100.contaboserver.net apache2[4414]: *
Jan 03 16:34:22 vmi120100.contaboserver.net apache2[4430]: * Stopping Apache httpd web server apache2
Jan 03 16:34:22 vmi120100.contaboserver.net apache2[4430]: *
Jan 03 16:34:22 vmi120100.contaboserver.net systemd[1]: Started LSB: Apache2 web server.
netstat 的输出是:
$sudo service apache2 stop
$sudo netstat -tulpn | grep :80
tcp6 0 0 :::80 :::* LISTEN 3979/httpd
终止该进程会产生以下结果:
$sudo netstat -tulpn | grep :80
tcp6 0 0 :::80 :::* LISTEN 3979/httpd
$sudo kill 3979
$sudo netstat -tulpn | grep :80
$ sudo netstat -tulpn | grep :80
tcp6 0 0 :::80 :::* LISTEN 5152/httpd
在付款失败导致公司关闭服务器之前,一切都运行正常。
编辑:回应 panther 的评论:我已经尝试重新启动,但结果还是一样。
自重新激活以来,日志中没有任何新内容......最后一条条目是在服务器关闭之前。
编辑2:
ps aux 的输出:
$ps aux | grep httpd
root 4995 0.0 0.0 4512 1708 ? Ss 16:38 0:00 /bin/sh /snap/nextcloud/4371/bin/run-httpd -k start -DFOREGROUND
root 5129 0.0 0.0 4512 1668 ? S 16:38 0:00 /bin/sh /snap/nextcloud/4371/bin/httpd-wrapper -k start -DFOREGROUND
root 5152 0.0 0.0 50712 4544 ? S 16:38 0:00 httpd -d /snap/nextcloud/4371 -k start -DFOREGROUND
root 5153 0.0 0.0 413920 6324 ? Sl 16:38 0:00 httpd -d /snap/nextcloud/4371 -k start -DFOREGROUND
root 5154 0.0 0.0 348352 6028 ? Sl 16:38 0:00 httpd -d /snap/nextcloud/4371 -k start -DFOREGROUND
root 5155 0.0 0.0 348304 6028 ? Sl 16:38 0:00 httpd -d /snap/nextcloud/4371 -k start -DFOREGROUND
这可能是因为 nextcloud 配置错误?
答案1
注意到问题
我注意到我的 Apache 服务器没有按预期工作。
$sudo service apache2 status
Jan 03 16:34:22 vmi120100.contaboserver.net apache2[4414]: (98)Address already in use: AH00072: make_sock: could not bind to address [::]:80
Jan 03 16:34:22 vmi120100.contaboserver.net apache2[4414]: (98)Address already in use: AH00072: make_sock: could not bind to address 0.0.0.0:80
Jan 03 16:34:22 vmi120100.contaboserver.net apache2[4414]: no listening sockets available, shutting down
Jan 03 16:34:22 vmi120100.contaboserver.net apache2[4414]: AH00015: Unable to open logs
Jan 03 16:34:22 vmi120100.contaboserver.net apache2[4414]: Action 'start' failed.
Jan 03 16:34:22 vmi120100.contaboserver.net apache2[4414]: The Apache error log may have more information.
Jan 03 16:34:22 vmi120100.contaboserver.net apache2[4414]: *
Jan 03 16:34:22 vmi120100.contaboserver.net apache2[4430]: * Stopping Apache httpd web server apache2
Jan 03 16:34:22 vmi120100.contaboserver.net apache2[4430]: *
Jan 03 16:34:22 vmi120100.contaboserver.net systemd[1]: Started LSB: Apache2 web server.
“无法绑定到地址 [::]:80”这一行表明另一个程序正在使用端口 80。
调查问题
为了弄清楚哪个程序使用了端口 80,我运行了 netstat。
$sudo netstat -tulpn | grep :80
tcp6 0 0 :::80 :::* LISTEN 3979/httpd
输出告诉我,名称为 httpd 的进程 ID 为 3979,正在使用端口 80。
为了找出运行 httpd 的程序,我使用了 ps aux
$ps aux | grep httpd
root 4995 0.0 0.0 4512 1708 ? Ss 16:38 0:00 /bin/sh /snap/nextcloud/4371/bin/run-httpd -k start -DFOREGROUND
root 5129 0.0 0.0 4512 1668 ? S 16:38 0:00 /bin/sh /snap/nextcloud/4371/bin/httpd-wrapper -k start -DFOREGROUND
root 5152 0.0 0.0 50712 4544 ? S 16:38 0:00 httpd -d /snap/nextcloud/4371 -k start -DFOREGROUND
root 5153 0.0 0.0 413920 6324 ? Sl 16:38 0:00 httpd -d /snap/nextcloud/4371 -k start -DFOREGROUND
root 5154 0.0 0.0 348352 6028 ? Sl 16:38 0:00 httpd -d /snap/nextcloud/4371 -k start -DFOREGROUND
root 5155 0.0 0.0 348304 6028 ? Sl 16:38 0:00 httpd -d /snap/nextcloud/4371 -k start -DFOREGROUND
我看到它是从 /snap/nextcloud 运行的,这意味着我的 nextcloud 就是那个乱搞的人。
使固定
进一步调查显示,我有一个 snap 和一个常规的 nextcloud 安装。我所要做的就是删除 snap,一切就都正常了。
如果有人遇到类似问题,请记住评估如何解决问题。卸载可能不适合您。