智能音箱遇到的问题(一)

因为没装软件,所以找不到 nginx 命令,也找不到 /etc/nginx 这个文件夹。你的歌曲虽然放在了 /var/www/html/music,但没有"服务员"(Web 服务器)去把这些歌递给互联网。

安装Nginx:

1. 更新软件源

apt update

2. 安装 Nginx

apt install nginx -y

启动 Nginx

systemctl start nginx

设置开机自启

systemctl enable nginx

日志里那行 bind() to 0.0.0.0:80 failed (98: Unknown error) 翻译成大白话就是:"80 端口已经被别人占领了,Nginx 挤不进去。"

虽然你之前用 fuser 杀过一次,但某些服务(比如 Apache)在 Ubuntu 上非常顽固,杀掉后会自动重启。

咱们用最粗暴也最有效的方法,彻底清理掉障碍:

第一步:检查并关掉"死对头" Apache

Ubuntu 经常会默认安装 apache2,它和 Nginx 都要抢 80 端口。

在终端输入:

Bash

复制代码
# 停止 Apache
systemctl stop apache2

# 禁止 Apache 开机自启(防止它下次还抢)
systemctl disable apache2

第二步:精准定位并清除残留

如果不是 Apache,咱们看看究竟是谁。执行以下命令:

Bash

复制代码
# 看看 80 端口到底在谁手里(需要安装 net-tools,你之前可能装过了)
netstat -tunlp | grep 80

看结果: 如果看到 apache2httpd 或者一堆数字,记下那个 PID/Program name

然后强力清场:

Bash

复制代码
# 杀掉所有占领 80 端口的进程
fuser -k 80/tcp

第三步:重新点火启动 Nginx

现在障碍应该清空了,执行:

Bash

如果浏览器不行,我们在服务器内部用 curl 看看 Nginx 到底给不给面子:

curl -i http://localhost/music/

说明 Nginx 没问题,问题出在服务器到你电脑的网络链路(防火墙或运营商拦截)。

尝试修改端口避开屏蔽:
  1. 修改配置文件:vim /etc/nginx/sites-enabled/default

  2. 找到 listen 80;,改成 listen 8888; (两处 listen 都要改)。

  3. 保存退出,重启 Nginx:systemctl restart nginx

  4. 重要 :去阿里云后台安全组,再开一个 8888 端口。

  5. 电脑浏览器访问:http://8.163.89.22:8888/music/

运营商屏蔽了80端口,换成8888端口。

只要这一步通了,你只需要在你的 player.h 里的 URL 后面加上 :8888,你的开发板就能正常工作了! 修改如下: #define URL "http://8.163.89.22:8888/music/"

filezilla登不上服务器:

使用passwd root 重置密码为root之后,就能登进去了。

相关推荐
NamoAmitabha1281 小时前
libpng12-0 1.2.54-1ubuntu1.1 (amd64 binary) in ubuntu xenial
linux·ubuntu20.4
Madison-No71 小时前
搭建项目测试环境
linux·运维·服务器·python
吴声子夜歌2 小时前
Shell编程实例——编写安全的shell脚本(二)
linux·运维·shell
悠悠121383 小时前
微服务通信别只看性能:REST 与 gRPC 的 6 个选型判断和一次 502 故障复盘
运维·服务器
xiaoye-duck4 小时前
《Linux 网络编程》深入理解 IP 协议(二):网段划分、私有 IP 与 NAT 地址转换
linux·网络·ip
zx_741484815 小时前
【Linux入门】Shell 函数、正则表达式与文本处理:cut 与 awk
linux·运维·正则表达式
Zenova EdgeOS5 小时前
Linux dmesg 工业边缘实战:内核日志过滤、持久化与故障定位
linux·运维·边缘计算·工业边缘·dmesg·内核日志
金士顿5 小时前
System.Text.Json Source Generator 深度解析:为什么 Native AOT 不喜欢反射
linux·asp.net core·arm64·net·native aot
玄芯散人6 小时前
【筑基·058】Git协作工作流:冲突解决和PR流程
git·版本控制·团队协作
wdfk_prog6 小时前
ROS教程08:从 TransportTCP::connect() 追到 TCPROS Connection Header、序列化与 Socket 数据传输
运维·缓存·docker·容器·ros