今天准备利用kali搭建网站的时候,出现了apache服务器不能正常运行的情况,经过耐心的理解错误代码和百度终于解决了问题。
1.错误问题:
启动apache2的时候,出现了如下的错误。刚开始以为不是root的原因,但切换到root还是报错。
root@kali:/root# service apache2 start
Job for apache2.service failed because the control process exited with error code.
See "systemctl status apache2.service" and "journalctl -xe" for details.
当时觉得kali好久不用,是软件包太旧,于是先更新了一下。
root@kali:~# apt-get update
但还是报出相同错误,于是通过apache2 --help命令来查看错误信息。
apache2 --help
[Mon Apr 13 23:45:17.772837 2020] [core:warn] [pid 24587] AH00111: Config variable ${APACHE_RUN_DIR} is not defined
apache2: Syntax error on line 80 of /etc/apache2/apache2.conf: DefaultRuntimeDir must be a valid directory, absolute or relative to ServerRoot
大致意思是由于升级后apache 配置文件变化,没有导入新的apache 环境变量。解决办法:
source /etc/apache2/envvars
之后再更新还是报错,只不过错误信息不同了。错误原因为:
root@kali:/root# apache2 --help
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message
(98)Address already in use: AH00072: make_sock: could not bind to address [::]:80
(98)Address already in use: AH00072: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
AH00015: Unable to open logs
2.解决:
通过错误代码可以得知应该是不能够绑定到80端口,因为apache默认端口就是80,当然现在有两种选择,一个是kill掉占用端口的进程,一种是更好apache的默认端口,我选择第一种。
首先查看是什么进程占用了端口。
root@kali:/root# netstat -lnp|grep 80
tcp 0 0 127.0.0.1:80 0.0.0.0:* LISTEN 18594/gsad
unix 2 [ ACC ] STREAM LISTENING 18198 808/VGAuthService /var/run/vmware/guestServicePipe
然后杀掉此进程。
root@kali:/root# kill -9 18594
最后成功重新启动apache2。
root@kali:/root# /etc/init.d/apache2 start
[ ok ] Starting apache2 (via systemctl): apache2.service.
当然也可以改apache2的默认端口,详细步骤可以看StackOverflow上的一篇回答文章。