Ubuntu 17.10安装Valet时Nginx启动失败求助(端口80被占用)
解决Ubuntu 17.10上Nginx因端口占用启动失败的问题
从你提供的报错日志来看,Nginx启动失败的核心原因非常明确:80端口已经被其他进程占用,日志里反复出现的bind() to [::]:80 failed (98: Address already in use)就是直接证据。下面是具体的解决步骤:
1. 找出占用80端口的进程
你可以用以下两个命令中的任意一个来定位占用80端口的进程:
- 使用
lsof命令:
执行后会列出占用80端口的进程名称、PID(进程ID)等详细信息。sudo lsof -i :80 - 使用
netstat命令:
这个命令同样能帮你找到占用端口的进程及其PID。sudo netstat -tulpn | grep :80
2. 处理占用端口的进程
根据占用进程的情况,有两种处理方式:
方式一:停止并禁用不需要的进程
如果占用80端口的是你不需要的服务(比如之前安装的Apache、其他Web服务器),直接停止该服务并禁止它开机自动启动:
以Apache为例:
sudo systemctl stop apache2 sudo systemctl disable apache2
完成后再尝试启动Nginx:
sudo systemctl start nginx
方式二:修改Nginx的监听端口
如果占用80端口的进程是你需要保留的,那可以修改Nginx的监听端口(比如改成8080):
- 编辑Nginx的主配置文件:
sudo nano /etc/nginx/nginx.conf - 找到配置中类似以下的行:
将listen 80; listen [::]:80;80替换成你想要的端口(比如8080)。 - 保存并退出编辑器后,先测试Nginx配置是否合法:
如果输出显示sudo nginx -ttest is successful,就可以重启Nginx:sudo systemctl restart nginx
3. 验证Nginx是否正常启动
执行以下命令查看Nginx的状态:
sudo systemctl status nginx.service
如果状态显示为active (running),就说明启动成功了。如果修改了端口,也可以在浏览器中访问http://localhost:8080(替换成你设置的端口),能看到Nginx的默认欢迎页面就代表没问题。
内容的提问来源于stack exchange,提问作者frtgu34
相关产品推荐
相关产品推荐

