linux启动apache命令报错(98)Address already in use: make_sock: could not bind to address [::]:80
[root@localhost conf]# /usr/local/apache/bin/apachectl -k start
(98)Address already in use: make_sock: could not bind to address [::]:80
no listening sockets available, shutting down
Unable to open logs
请问这是什么原因? 展开
可能是apache已经启动了,但是进程的所属用户跟你想要的不是一个用户,比如你想要启动的apache是cib的,但是查看发现现在已经启动的是daemon用户的,原因是先前启动的时候加载了httpd.conf配置文件中配置的用户(User daemon Group daemon),再用cib用户启动apache就报这个错误,cib用户也无法停掉目前的apache进程(我之前遇到的一种情况,符合的话可以尝试一下)。
解决办法:
root用户登录,用./apachectl stop停掉apache或启颤kill -9 pid
chown -R cib:cib /apache 把整个apache的目录重新赋权限给cib用户
(注:启动apache的时候如果用root用户登录,启动之后的进程默认加载的是httpd.conf配置文件中配置的用户,而且一旦用root用户启动过一次,配置文件的加载权限默认也会改成高旁埋httpd.conf配置文戚蚂件中的用户,即使在apache已经停掉的情况下,其他用户也会无法启动apache,只是不报错。)
切换到cib用户,用./apachectl start启动apache就可以了
如果以上还无法以cib用户启动apache,则在执行步骤1之前把httpd.conf配置文件中的User daemon Group daemon 改为User nobody Group nobody,然后再重复以上步骤。此时的apache进程就是当前用户的
netstat -tulnp | grep ':80 '
找肆友到碰纤对应的PID杀掉。
kill ‘PID’
输入netstat -tulnp | grep ':80 '
后显示
[root@localhost conf]# netstat -tulnp | grep ':80 '
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 4021/nginx.conf
这是什么原因?