CentOS7 安装wget、vim、net-tools常用工具包

前言

新装的 CentOS7 最小化系统默认不带 wget、vim、net-tools(ifconfig、netstat)、lsof、curl 等常用工具,执行命令时会提示 command not found。本篇汇总这些基础工具包的安装命令、对应包名和常见报错处理,新机器上线后可一次性补齐。

一、先更新缓存

yum clean all
yum makecache

若提示镜像 404 或超时,先更换国内 yum 源(阿里云/清华),再执行安装。

二、常用工具包安装命令

# wget:下载文件
yum install -y wget

# vim:文本编辑器(最小化系统默认只有 vi)
yum install -y vim

# net-tools:提供 ifconfig、netstat、route、arp 等网络工具
yum install -y net-tools

# curl:命令行请求接口
yum install -y curl

# lsof:查看端口/文件被哪个进程占用
yum install -y lsof

# zip/unzip:压缩解压
yum install -y zip unzip

# tar 系统自带;补充常用编译工具链(源码编译时需要)
yum install -y gcc gcc-c++ make

一次性批量安装:

yum install -y wget vim net-tools curl lsof zip unzip gcc gcc-c++ make

三、各工具用途速查

工具/包 提供命令 典型用途
wget wget 下载文件、整站镜像
vim vim 编辑配置文件
net-tools ifconfig、netstat、route 查看网卡、端口、路由
curl curl 测试接口、下载
lsof lsof 查端口占用、删不掉的文件
zip/unzip zip、unzip 打包解压 zip
gcc/gcc-c++/make gcc、g++、make 编译源码

四、安装后验证

# 查看版本确认安装成功
wget --version
vim --version
netstat -tlnp
curl --version
lsof -v

netstat -tlnp 能正常输出监听端口列表,说明 net-tools 已装好。

五、常见坑

  1. ifconfig: command not found:不是系统坏了,是没装 net-tools;新系统推荐用 ip addr 替代;
  2. vim: command not found:最小化只带 vi,装 vim 才有语法高亮和完整快捷键;
  3. wget: command not found:最小化镜像默认不装,单独 yum install -y wget;
  4. yum 安装报 404/超时:CentOS7 官方源已逐步归档,先换阿里云 vault 镜像源再装;
  5. 提示包不存在:确认系统版本(cat /etc/centos-release),net-tools 在 CentOS7 仓库内,8/9 对应包名基本一致;
  6. 编译安装软件缺依赖:先装 gcc gcc-c++ make,再按报错补 pcre-devel、openssl-devel、zlib-devel 等开发包。

六、补充:网络工具 iproute2

CentOS7 已默认带 iproute2,提供 ip 命令,功能比 net-tools 更现代:

ip addr          # 替代 ifconfig
ip route         # 替代 route
ss -tlnp         # 替代 netstat -tlnp

老运维习惯 net-tools,新脚本建议优先用 ip 和 ss。

总结

新机器先 yum clean all && yum makecache,再 yum install -y wget vim net-tools curl lsof zip unzip 批量补齐;命令找不到先判断是缺包,用 yum provides 命令名 反查对应包名;网络排查可新旧工具并用,ip、ss 作为现代替代。

遇到问题加QQ23979811 协助处理


emer 发布于  2026-10-22 07:34 

CentOS7 yum安装软件报错,yum源更换教程

前言

CentOS7执行 yum install 经常报错:Could not resolve host、No package available、Download failed、Metadata cache expired。原因大多是默认国外源慢或已失效、DNS不通、缓存过期。换成国内阿里云/清华镜像源,再清缓存重建,基本都能解决。本篇给出完整换源步骤。

一、先判断报错类型

# 看当前yum源列表
yum repolist
# 测试网络与DNS
ping -c 3 mirrors.aliyun.com
nslookup mirrors.aliyun.com
  • 解析不了域名:先修DNS(/etc/resolv.conf 加 nameserver 114.114.114.114);
  • 能ping通但装不上:源本身失效,换国内源。

二、备份原有源

cd /etc/yum.repos.d/
mkdir backup
mv CentOS-Base.repo backup/

保留备份,换源失败可还原。

三、更换阿里云Base源(CentOS7)

# 下载阿里云7镜像源配置
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
# 若curl不可用用wget
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo

清华源备选:

wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.tuna.tsinghua.edu.cn/repo/Centos-7.repo

四、更换EPEL源(装扩展软件常用)

# 先删旧epel
rm -f /etc/yum.repos.d/epel.repo
# 阿里云epel7
curl -o /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo

五、清缓存并重建

# 清除旧缓存
yum clean all
# 重建缓存
yum makecache
# 验证源是否生效
yum repolist
# 再试安装
yum install -y vim wget net-tools

六、常见坑

  1. CentOS8/9换了7的源:版本号要对应,Centos-7.repo 只用于7;
  2. 下载源文件404:镜像站路径改版,换清华或官方备用地址;
  3. 多个repo残留冲突:/etc/yum.repos.d/ 下旧的失效repo没删干净,会重复报错;
  4. makecache卡在Metadata:DNS或网络不通,先 ping 镜像站确认;
  5. yum install -y 卡住超时:可临时调大超时,或换网络更好的镜像;
  6. 时间不准导致HTTPS证书校验失败:先 date 检查系统时间,用 ntpdate 校时。

总结

yum报错先分DNS不通还是源失效:DNS不通修resolv.conf;源失效就备份 /etc/yum.repos.d/,下载阿里云Centos-7.repo和epel-7.repo,yum clean all && yum makecache 重建缓存后再安装。

遇到问题加QQ23979811 协助处理


emer 发布于  2026-10-22 07:20 

CentOS7重启网络报错,network与NetworkManager冲突处理

前言

CentOS7改完网卡配置后 systemctl restart network 报错,常见提示是 "Job for network.service failed because the control process exited with error code"。根源往往是老的 network 服务和新的 NetworkManager(简称NM)同时管一块网卡,配置互相打架。本篇讲清楚怎么判断、怎么处理。

一、先看报错到底是什么

# 重启网络看具体错误
systemctl restart network
# 查看详细失败原因
systemctl status network -l
journalctl -xe | grep network
# 看网卡配置有没有写错
cat /etc/sysconfig/network-scripts/ifcfg-ens33

常见报错:配置里 NM_CONTROLLED=no 与NM冲突、ONBOOT、网关或IP写重复、网卡名和配置文件名对不上。

二、方案一:服务器纯命令行,关掉NetworkManager

服务器一般用不到图形网络管理,直接停用NM,让network接管最干净:

# 停止并禁用NetworkManager
systemctl stop NetworkManager
systemctl disable NetworkManager
# 再重启network
systemctl restart network

同时确认网卡配置里写:

NM_CONTROLLED=no

这样两块不会抢同一张网卡。

三、方案二:保留NetworkManager,用它管网络

如果是桌面或需要NM的场景,就别用老network:

# 查看NM识别到的连接
nmcli connection show
# 重启某块网卡连接
nmcli connection down ens33 && nmcli connection up ens33
# 查看设备状态
nmcli device status

注意:用NM管理时,配置尽量通过 nmcli 或nmtui改,不要手改ifcfg后又让network重启。

四、常见配置文件检查项

/etc/sysconfig/network-scripts/ifcfg-ens33:

TYPE=Ethernet
BOOTPROTO=static
DEFROUTE=yes
NAME=ens33
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.1.100
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=114.114.114.114
  • NAME/DEVICE 要和实际网卡名一致;
  • 改完配置重启前,保留一个已登录SSH会话,防止网络断了把自己关外面。

五、常见坑

  1. network和NetworkManager同时重启:两个服务都抢网卡,IP时有时无,二选一;
  2. 网卡名变了配置文件没改:新系统网卡名是ens33不是eth0,文件名和DEVICE要对应;
  3. GATEWAY写了两个:多网卡配多个网关会路由冲突;
  4. 改完只restart不验证:用 ping、ip addr 确认IP真的起来了;
  5. 云服务器别乱关NM:部分云镜像靠NM配内网,关了可能丢内网,先确认再操作。

总结

重启网络报错,先 systemctl status network -l 看原因;服务器场景停掉并禁用NetworkManager、配置里 NM_CONTROLLED=no,再restart network;桌面场景改用nmcli管理。二选一,不要两个服务同时管网卡。

遇到问题加QQ23979811 协助处理


emer 发布于  2026-10-21 07:23 

CentOS7关闭SELinux详细步骤,临时与永久关闭

前言

CentOS7 默认开启 SELinux,它是一套强制访问控制机制,经常和自行搭建的 Nginx、PHP-FPM、网站目录权限冲突,表现为页面 403、文件写不进去、代理被拦截。生产环境如果不想精细配置策略,最直接的做法就是关闭。本篇区分临时关闭和永久关闭,并给出验证方法。

一、先查看SELinux当前状态

# 查看运行状态
getenforce
# 返回 Enforcing 表示强制开启,Permissive 只记录不拦截,Disabled 已关闭
sestatus
# 也可看配置文件
grep SELINUX= /etc/selinux/config

二、临时关闭(重启后恢复)

# 切换为宽容模式,立即生效但重启复原
setenforce 0
# 验证
getenforce
# 返回 Permissive 即临时关闭成功

setenforce 1 可重新切回 Enforcing。临时关闭适合先定位问题,不想动配置时使用。

三、永久关闭(重启仍生效)

编辑配置文件:

vi /etc/selinux/config

把这一行:

SELINUX=enforcing

改为:

SELINUX=disabled

保存后必须重启服务器才完全生效:

reboot

重启后执行 getenforce 返回 Disabled 即永久关闭成功。

四、两种方式区别速记

方式 命令/改文件 是否立即生效 重启后
临时 setenforce 0 是 恢复为Enforcing
永久 /etc/selinux/config 改disabled 否,需重启 保持关闭

五、常见坑

  1. 只 setenforce 0 不重启改文件:重启后又自动开启,问题复现;
  2. 改了配置不重启:getenforce 仍显示 Enforcing,以为没改成功;
  3. 改错变量名:是 SELINUX= 而不是 SELINUXTYPE=,后者是策略类型别动;
  4. 急着排查时建议先临时关:验证是不是SELinux拦截,确认后再决定永久关,避免一刀切损失安全性;
  5. 某些面板/容器环境改完仍受影响,可用 sestatus 复核当前模式。

总结

临时关用 setenforce 0,永久关改 /etc/selinux/config 为 disabled 后重启,最后用 getenforce 确认。排查403、写入失败时,SELinux是经常被忽略的一层。

遇到问题加QQ23979811 协助处理


emer 发布于  2026-10-20 07:25 

CentOS7 firewalld开放80、443端口永久生效命令

前言

CentOS7 默认用 firewalld 管理防火墙,新装系统后外网访问 80、443 经常被拒,浏览器打不开网站。很多人只在临时会话里加规则,重启或 reload 后端口又被关。本篇给出永久开放 80、443 的完整命令和验证方法。

一、先确认防火墙状态

systemctl status firewalld
firewall-cmd --state

返回 running 表示防火墙在运行;如果是 not running,先启动并设为开机自启:

systemctl start firewalld
systemctl enable firewalld

二、永久开放80、443端口

关键是 --permanent 参数,不加它规则只在当前运行时生效,reload 或重启就丢失。

# 永久开放HTTP 80
firewall-cmd --permanent --add-port=80/tcp
# 永久开放HTTPS 443
firewall-cmd --permanent --add-port=443/tcp
# 重载使永久规则立即生效
firewall-cmd --reload

也可以用服务名方式(firewalld 自带 http/https 服务定义):

firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --reload

三、查看已开放端口,确认生效

# 查看永久规则里已开放的端口
firewall-cmd --permanent --list-ports
# 查看当前运行时生效的服务
firewall-cmd --list-services

能看到 80/tcp 443/tcp 或 http https 即成功。

四、开放单个/多个端口常用命令汇总

# 永久开放单个端口
firewall-cmd --permanent --add-port=8080/tcp
# 永久移除某个端口
firewall-cmd --permanent --remove-port=8080/tcp
# 开放一段端口范围(如30000-30100)
firewall-cmd --permanent --add-port=30000-30100/tcp
# 开放UDP(DNS、视频流用)
firewall-cmd --permanent --add-port=53/udp

每加完一条都要 firewall-cmd --reload。

五、常见坑

  1. 加了规则但不 reload:运行时看不到,外网照样访问不通;
  2. 忘记 --permanent:重启服务器后规则消失,以为没生效;
  3. 协议选错:Web 是 tcp,写成 udp 无效;
  4. 云服务器安全组没放行:系统防火墙开了,云厂商控制台安全组还拦着,两边都要开;
  5. 服务本身没监听:ss -tlnp 确认 nginx 在 80/443 上监听,否则放了端口也连不上。

总结

记住三步:--add-port=端口/tcp --permanent → --reload → --list-ports 验证。系统防火墙和云安全组同时放行,网站才能从外网访问。

遇到问题加QQ23979811 协助处理


emer 发布于  2026-10-20 07:22 

CentOS7 安装图形界面,最小化安装升级

前言

很多人装 CentOS7 的时候选了最小化安装,后来发现想用图形界面怎么办?不用重装,直接在线装就行。本文讲一下怎么从命令行升级到带图形界面的版本。

先更新系统

装图形界面前先把系统更新一下:

yum update -y

安装 GNOME 桌面

方法一:安装 GNOME 桌面(推荐)

yum groupinstall -y "GNOME Desktop"

这个安装包比较大,大概几个 G,需要等一会儿。

方法二:安装带图形界面的服务器版

yum groupinstall -y "Server with GUI"

这个比 GNOME Desktop 多一些服务器相关的工具。

设置默认启动方式

查看当前默认启动方式

systemctl get-default

输出 multi-user.target 就是命令行模式,graphical.target 就是图形界面模式。

设置默认启动到图形界面

systemctl set-default graphical.target

设置默认启动到命令行

如果以后想改回命令行:

systemctl set-default multi-user.target

重启生效

reboot

重启之后就会进入图形界面了。

不重启直接进入图形界面

如果不想重启,可以直接启动图形界面:

startx

或者:

systemctl isolate graphical.target

常见坑

坑1:yum 安装报错

安装的时候报错,下载失败。

原因: yum 源没配好。

解决: 先换国内 yum 源(参考之前的 yum 源更换教程),然后再装。

坑2:安装完了还是命令行

装完重启后还是进命令行。

原因: 没设置默认启动方式。

解决:

systemctl set-default graphical.target
reboot

坑3:服务器装图形界面很卡

云服务器上装了图形界面之后特别卡。

原因: 图形界面占内存和 CPU 很多,云服务器配置一般不高。

建议: 生产服务器不要装图形界面,命令行更省资源。如果确实需要图形界面,用 VNC 或者远程桌面连。

坑4:安装包太大下载慢

几个 G 的包下载半天。

解决: 先换国内 yum 源,速度会快很多。

总结

步骤 命令
更新系统 yum update -y
安装 GNOME 桌面 yum groupinstall -y "GNOME Desktop"
设置默认图形界面 systemctl set-default graphical.target
重启 reboot

提醒: 生产服务器建议用命令行模式,更稳定、更省资源。图形界面只在测试或者个人电脑上用。

遇到问题加QQ23979811 协助处理


emer 发布于  2026-10-6 08:03 

CentOS7 关闭防火墙,永久关闭firewalld

前言

刚装好的 CentOS7 默认开了防火墙,很多端口都访问不了。有时候为了省事想直接关掉防火墙,本文讲一下怎么操作,以及临时关和永久关的区别。

查看防火墙状态

先看看防火墙现在是开还是关:

systemctl status firewalld

输出里有 active (running) 就是开着,inactive (dead) 就是关了。

或者用:

firewall-cmd --state

输出 running 就是开着,not running 就是关了。

临时关闭防火墙

只关掉当前运行状态,重启后又会自动开起来:

systemctl stop firewalld

永久关闭防火墙

永久关闭,重启后也不会再开:

systemctl stop firewalld
systemctl disable firewalld

两条命令一起执行,先停掉当前的,再禁止开机自启。

重新开启防火墙

如果以后又想开起来:

systemctl start firewalld
systemctl enable firewalld

验证是否关闭成功

执行完之后再看一下状态:

systemctl status firewalld

应该显示 inactive (dead)。

常见坑

坑1:只 stop 了但没 disable

执行了 systemctl stop firewalld,但重启后防火墙又自己开起来了。

原因: 只停了当前运行,没关开机自启。

解决: 还要执行 systemctl disable firewalld。

坑2:关了防火墙但还是访问不了

防火墙关了,但外部还是访问不了网站。

原因: 除了系统防火墙,云服务商还有一层安全组。

解决: 去云服务商控制台(阿里云、腾讯云、华为云等)的安全组里,把对应的端口也开放了。

坑3:Ubuntu 用的不是 firewalld

在 Ubuntu 上执行 firewalld 命令报错。

原因: Ubuntu 默认用 ufw 防火墙,不是 firewalld。

解决: Ubuntu 关防火墙用:

ufw stop
ufw disable

坑4:关闭防火墙不安全

直接关了防火墙,服务器暴露在公网上很危险。

建议: 生产环境不要直接关防火墙,而是只开放需要的端口。比如只开 80、443、22 端口,其他都关。

总结

操作 命令
查看防火墙状态 systemctl status firewalld
临时关闭 systemctl stop firewalld
永久关闭 systemctl stop firewalld && systemctl disable firewalld
开启防火墙 systemctl start firewalld
开机自启 systemctl enable firewalld

注意: 生产环境建议不要直接关防火墙,用开放指定端口的方式更安全。

遇到问题加QQ23979811 协助处理


emer 发布于  2026-10-6 08:00 

CentOS7 防火墙开放端口范围,一次性开放多个端口

前言

有时候需要一次性开放很多端口,或者开放一段端口范围,一个个加太麻烦。CentOS7 的 firewalld 支持开放端口范围,也支持一次性开放多个端口,本文讲一下怎么操作。

查看当前开放的端口

先看看现在防火墙开了哪些端口:

firewall-cmd --list-ports

输出类似:

80/tcp 443/tcp 8080/tcp

开放单个端口

永久开放

firewall-cmd --permanent --add-port=80/tcp

然后重载生效:

firewall-cmd --reload

开放 UDP 端口

把 tcp 改成 udp 就行:

firewall-cmd --permanent --add-port=53/udp
firewall-cmd --reload

一次性开放多个端口

方法一:一条命令加多个

firewall-cmd --permanent --add-port=80/tcp --add-port=443/tcp --add-port=8080/tcp
firewall-cmd --reload

多个 --add-port 用空格分开就行。

方法二:开放端口范围

如果要开放一段连续的端口,比如 8000 到 9000:

firewall-cmd --permanent --add-port=8000-9000/tcp
firewall-cmd --reload

这样 8000 到 9000 之间所有 TCP 端口都开放了。

方法三:同时开放 TCP 和 UDP

firewall-cmd --permanent --add-port=53/tcp --add-port=53/udp
firewall-cmd --reload

移除端口

移除单个端口

firewall-cmd --permanent --remove-port=8080/tcp
firewall-cmd --reload

移除端口范围

firewall-cmd --permanent --remove-port=8000-9000/tcp
firewall-cmd --reload

常见场景

场景1:开放 20 到 80 之间的所有端口

firewall-cmd --permanent --add-port=20-80/tcp
firewall-cmd --reload

场景2:同时开放 HTTP 和 HTTPS 服务

firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --reload

场景3:只允许某个 IP 访问某个端口

这个更安全,只允许 192.168.1.100 访问 3306 端口:

firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='192.168.1.100' port protocol='tcp' port='3306' accept"
firewall-cmd --reload

常见坑

坑1:加了端口没生效

执行了 add-port 但还是访问不了。

原因: 没加 --permanent,或者没 reload。

解决: 一定要加 --permanent 参数,然后执行 firewall-cmd --reload。

坑2:端口范围写反了

写成了 9000-8000,报错。

原因: 范围必须从小到大写。

正确写法: 8000-9000/tcp
错误写法: 9000-8000/tcp

坑3:防火墙没启动

执行 firewall-cmd 报错。

原因: firewalld 服务没启动。

解决:

systemctl start firewalld
systemctl enable firewalld

坑4:开了端口但还是访问不了

防火墙开了端口,但是外部还是访问不了。

原因: 除了防火墙,还有可能是云服务商的安全组没开。

解决: 去云服务商控制台(阿里云、腾讯云等)的安全组里,把对应的端口也开放了。

总结

操作 命令
开放单个端口 firewall-cmd --permanent --add-port=80/tcp
开放多个端口 firewall-cmd --permanent --add-port=80/tcp --add-port=443/tcp
开放端口范围 firewall-cmd --permanent --add-port=8000-9000/tcp
移除端口 firewall-cmd --permanent --remove-port=8080/tcp
查看已开放端口 firewall-cmd --list-ports
重载生效 firewall-cmd --reload

记住:加完端口一定要 --reload 才生效。

遇到问题加QQ23979811 协助处理


emer 发布于  2026-10-6 07:53 

CentOS7 安装wget、vim、net-tools常用工具包

前言

新装好的 CentOS7 最小化系统,很多常用命令都没有,比如 wget、vim、ifconfig 都用不了。本文就讲一下怎么一次性把常用工具包装上。

为什么要装这些工具

CentOS7 最小化安装(minimal install)为了节省空间,默认不带很多常用工具。刚装完系统你会发现:

  • wget 命令找不到
  • vim 命令找不到
  • ifconfig 命令找不到
  • netstat 命令找不到

所以刚装完系统第一件事,就是把这些常用工具装上。

安装常用工具包

一键安装

最省事的方式,一条命令全装上:

yum install -y wget vim net-tools lrzsz unzip telnet

这一条命令就把最常用的都装了。

各工具说明

工具包 作用
wget 命令行下载文件
vim 文本编辑器
net-tools 包含 netstat、ifconfig 等网络工具
lrzsz 包含 rz、sz 上传下载文件
unzip 解压 zip 文件
telnet 测试端口连通性

分开装

如果你只想装某一个:

# 只装 wget
yum install -y wget

# 只装 vim
yum install -y vim

# 只装 net-tools(ifconfig、netstat)
yum install -y net-tools

常用工具包推荐

基础工具包(必装)

yum install -y wget vim net-tools lrzsz unzip telnet curl

开发工具包

yum groupinstall -y "Development Tools"

这个包包含了 gcc、make 等编译工具,装东西经常需要。

其他常用工具

# 查看进程树
yum install -y psmisc

# 实时监控网络
yum install -y nload

# 查看端口占用
yum install -y lsof

# 查看磁盘性能
yum install -y iotop

# 查看内存
yum install -y htop

常见坑

坑1:ifconfig 命令找不到

执行 ifconfig 提示 command not found。

原因: CentOS7 最小化安装不带 net-tools 包。

解决:

yum install -y net-tools

装完之后 ifconfig 就能用了。

坑2:vim 命令找不到

执行 vi 能用,但 vim 找不到。

原因: 最小化安装只有 vi,没有 vim。

解决:

yum install -y vim

坑3:rz 命令找不到

想从本地上传文件到服务器,执行 rz 提示找不到。

原因: 没装 lrzsz 包。

解决:

yum install -y lrzsz

装完之后:

  • rz:从本地上传文件到服务器
  • sz 文件名:从服务器下载文件到本地

坑4:yum 安装报错

执行 yum install 的时候报错。

原因: yum 源没配好,或者网络不通。

解决: 先换国内源(参考之前的 yum 源更换教程),然后再装。

总结

新系统刚装完,先跑这一条命令:

yum install -y wget vim net-tools lrzsz unzip telnet curl

把常用工具一次性装齐,后面省得每次都报 command not found。

遇到问题加QQ23979811 协助处理


emer 发布于  2026-10-6 07:47 

CentOS7 yum安装软件报错,yum源更换教程

前言

CentOS7 默认的 yum 源是国外的,装软件特别慢,有时候还报错 "Could not resolve host" 或者 "Failed to connect"。换个国内源就好了,速度飞快。本文就讲一下怎么换 yum 源。

报错现象

执行 yum install xxx 的时候,报类似这样的错:

Could not retrieve mirrorlist http://mirrorlist.centos.org/...

或者:

Could not resolve host: mirrorlist.centos.org

或者下载速度特别慢,几 KB/s。

原因

默认 yum 源是 CentOS 官方的,服务器在国外,国内访问慢。有时候官方源还会挂。

更换国内源

第一步:备份原来的源

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

第二步:下载阿里源

curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

或者用 wget:

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

第三步:清理缓存并重建

yum clean all
yum makecache

第四步:测试

yum install -y wget

应该秒装完成。

其他国内源

清华源

curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.tuna.tsinghua.edu.cn/repo/Centos-7.repo

网易源

curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.163.com/.help/CentOS7-Base-163.repo

中科大源

curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.ustc.edu.cn/repo/Centos-7.repo

安装 EPEL 源

EPEL 源是 Extra Packages for Enterprise Linux,很多常用软件(比如 nginx)都在 EPEL 里。

yum install epel-release -y

装完之后也可以换成阿里的 EPEL 源:

mv /etc/yum.repos.d/epel.repo /etc/yum.repos.d/epel.repo.backup
curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
yum clean all
yum makecache

常见坑

坑1:换完源还是慢

换了阿里源还是慢。

原因: DNS 解析慢,或者服务器本身带宽小。

解决: 换个源试试(清华、网易),或者检查 DNS:

cat /etc/resolv.conf

坑2:yum makecache 报错

执行 yum makecache 的时候报错。

原因: 源文件没下好,或者网络不通。

解决: 检查源文件内容对不对:

cat /etc/yum.repos.d/CentOS-Base.repo

或者重新下一遍。

坑3:CentOS7 已经 EOL 了

CentOS7 官方已经停服了(2024年6月30日),官方源已经不能用了。

解决: 用 vault 源(存档源):

阿里 vault 源:

curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-7.repo

坑4:404 Not Found

装软件的时候报 404。

原因: 源文件里的路径不对,或者软件包被删了。

解决: 换个源,或者清理缓存:

yum clean all
yum makecache

总结

换 yum 源就三步:

  1. 备份:mv /etc/yum.repos.d/CentOS-Base.repo 备份
  2. 下载新源:curl 下载阿里/清华源
  3. 清缓存:yum clean all && yum makecache

国内服务器一定要换国内源,不然装软件能急死。

遇到问题加QQ23979811 协助处理


emer 发布于  2026-10-6 07:43 

CentOS7重启网络报错,network与NetworkManager冲突处理

前言

CentOS7 里有两套网络管理工具:传统的 network 服务和新的 NetworkManager。两个同时用就会打架,重启网络的时候报错,甚至把网络搞断。本文就讲一下这个冲突怎么解决。

报错现象

执行 systemctl restart network 或者 service network restart 的时候,报类似这样的错:

Restarting network (via systemctl):  Job for network.service failed. See 'systemctl status network.service' and 'journalctl -xn' for details.

或者:

RTNETLINK answers: File exists

原因

CentOS7 默认装了 NetworkManager(简称 NM),它也在管理网络接口。传统的 network 服务也在管。两个同时管同一个网卡,配置就会冲突。

解决方法

方法一:关掉 NetworkManager(推荐服务器用)

服务器一般不需要图形界面的网络管理工具,直接关掉:

systemctl stop NetworkManager
systemctl disable NetworkManager

然后重启 network:

systemctl restart network

方法二:让 network 忽略 NetworkManager

编辑网络配置文件:

vi /etc/sysconfig/network-scripts/ifcfg-eth0

在文件里加一行:

NM_CONTROLLED=no

意思是这个网卡不归 NetworkManager 管,只由 network 服务管理。

然后重启网络:

systemctl restart network

方法三:全部交给 NetworkManager 管

如果你想用 NM 管理,那就把传统 network 关掉:

systemctl stop network
systemctl disable network

然后用 NM 的命令管理网络:

nmcli connection show
nmcli connection up eth0

验证

重启网络之后,看看网卡 IP 还在不在:

ip addr

如果 IP 还在,能 ping 通外网,就说明搞定了。

常见坑

坑1:改了配置把自己踢下线

远程 SSH 连上去改网络配置,改完重启网络,结果 SSH 断了,再也连不上。

解决:

  1. 改配置之前先开个备用 SSH 连接,别关
  2. 或者直接用云服务器控制台的 VNC 操作
  3. 不要在生产环境随便重启网络

坑2:重启服务器后网络又坏了

临时重启 network 好了,但重启服务器后又不行了。

原因: NetworkManager 又自动启动了,和 network 冲突。

解决: 把 NetworkManager 禁用掉:

systemctl disable NetworkManager

坑3:网卡名不是 eth0

新一点的系统网卡名可能是 ens33、enp0s3 这种。

解决: 先看一下网卡叫什么:

ip addr

然后改对应的配置文件,比如 ifcfg-ens33。

总结

CentOS7 网络冲突的解决思路很简单:

方案 操作 适用场景
关 NM systemctl disable NetworkManager 服务器,推荐
NM_CONTROLLED=no 网卡配置里加这行 只用 network 服务
全用 NM 关掉 network,用 nmcli 桌面环境

服务器上推荐直接关掉 NetworkManager,用传统的 network 服务管理网络,简单稳定。

遇到问题加QQ23979811 协助处理


emer 发布于  2026-10-6 07:38 

CentOS7 firewalld开放80、443端口永久生效命令

前言

CentOS 7 开始,系统默认的防火墙管理工具从原来的 iptables 换成了 firewalld。很多刚接触 CentOS 7 的运维同学,部署完 Nginx 或者 Apache 之后发现网站访问不了,最后排查半天发现是防火墙没放行 80 和 443 端口。

这篇文章就详细讲讲 CentOS 7 下用 firewalld 开放 80、443 端口,并且确保重启后依然生效的完整操作步骤。

操作步骤

1. 先确认 firewalld 服务状态

在配置端口之前,先确认防火墙服务是否正在运行:

systemctl status firewalld

如果看到 active (running) 就说明防火墙正在运行。如果是 inactive 状态,说明防火墙没启动,可以先启动它:

systemctl start firewalld
systemctl enable firewalld

2. 查看当前已经开放的端口和服务

firewall-cmd --list-all

执行完之后会看到类似下面的输出:

public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0
  sources:
  services: ssh dhcpv6-client
  ports:
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

从这里可以看到,默认只开放了 ssh 和 dhcpv6-client 两个服务,80 和 443 端口都没开。

3. 永久开放 80 端口

这里要注意,必须加上 --permanent 参数,否则重启服务器之后配置就丢了。

firewall-cmd --permanent --add-port=80/tcp

执行成功之后会返回 success。

4. 永久开放 443 端口

同样的方式开放 443 端口,这个是 HTTPS 默认端口:

firewall-cmd --permanent --add-port=443/tcp

5. 重载防火墙使配置生效

很多同学加完端口就以为完事了,其实不对。firewalld 有运行时配置和永久配置之分,加了 --permanent 的配置写入了永久配置,但还需要重载一下才能在当前运行时生效:

firewall-cmd --reload

6. 验证端口是否真的开放了

最后再检查一下:

firewall-cmd --list-ports

如果看到 80/tcp 和 443/tcp 都在列表里,就说明配置成功了。

常见坑

坑 1:忘记加 --permanent 参数

这是最常见的错误。如果不加 --permanent,配置只在当前运行时生效,服务器一重启就没了。很多同学配置完当时测试没问题,第二天服务器重启网站又打不开了,就是这个原因。

正确写法:firewall-cmd --permanent --add-port=80/tcp

坑 2:加完端口忘记 reload

加了 --permanent 之后,必须执行 firewall-cmd --reload 才能生效。不然你会发现配置写进去了,但端口还是不通。

坑 3:想一次性开放多个端口怎么办

如果要开放一批连续的端口,比如 1000 到 2000,可以用这个写法:

firewall-cmd --permanent --add-port=1000-2000/tcp

如果要开放多个不连续的端口,就执行多次 add-port 命令就行。

坑 4:怎么移除已经开放的端口

如果不小心开错了端口,要移除的话用 remove-port:

firewall-cmd --permanent --remove-port=8080/tcp
firewall-cmd --reload

总结

CentOS 7 下 firewalld 开放端口的核心就三步:

  1. 用 --permanent --add-port=端口号/tcp 添加永久规则
  2. 执行 firewall-cmd --reload 重载生效
  3. 用 firewall-cmd --list-ports 确认结果

记住这三个关键点,基本不会踩坑。Web 服务常用的 80 和 443 端口开放之后,外部才能正常访问你的网站。

遇到问题加QQ23979811 协助处理


emer 发布于  2026-10-5 08:17 

CentOS7 关闭SELinux详细步骤,临时+永久关闭

前言

刚装完 CentOS7,部署网站的时候老是遇到各种权限问题:文件明明权限对了还是访问不了,端口也开了就是连不上。排查半天发现是 SELinux 在捣乱。SELinux 是 CentOS 自带的强制访问控制安全机制,安全性很高,但对新手来说确实不太友好。本文详细讲一下怎么临时和永久关闭 SELinux,以及关闭前需要知道的注意事项。

什么是 SELinux

SELinux(Security-Enhanced Linux)是 Linux 内核的一个安全模块,提供强制访问控制(MAC)机制。它比传统的自主访问控制(DAC)更严格,不仅看文件权限,还看进程和文件的安全上下文(SELinux 标签)。

CentOS7 默认开启 SELinux,这也是为什么很多新手部署完网站各种报错的原因——Nginx、PHP、MySQL 的进程和文件上下文不匹配,SELinux 直接拦截。

查看 SELinux 状态

在关闭之前,先看看 SELinux 当前是什么状态:

getenforce

输出可能是:

  • Enforcing:强制模式,SELinux 正在拦截违规操作
  • Permissive:宽容模式,只记录警告不拦截
  • Disabled:已关闭

也可以用这个命令看更详细的信息:

sestatus

输出示例:

SELinux status:                 enabled
SELinuxfs mount:                /sys/fs/selinux
SELinux root directory:         /etc/selinux
Loaded policy name:             targeted
Current mode:                   enforcing
Mode from config file:          enforcing
Policy MLS status:              enabled
Policy deny_unknown status:     allowed

临时关闭 SELinux(重启后失效)

如果你只是临时测试一下,不想改配置文件,可以用这个方法:

setenforce 0

setenforce 0 表示切换到 Permissive 宽容模式,SELinux 不会再拦截操作,但会在日志里记录。这个命令立即生效,不需要重启。

验证一下:

getenforce

应该输出 Permissive。

注意: 这种方式重启服务器后 SELinux 会重新开启,所以只是临时生效。

永久关闭 SELinux(重启后依然关闭)

要永久关闭,需要修改配置文件:

1. 编辑 SELinux 配置文件

vi /etc/selinux/config

2. 修改 SELINUX 的值

找到这一行:

SELINUX=enforcing

改成:

SELINUX=disabled

3. 保存退出,重启服务器

reboot

重启后再验证一下:

getenforce

应该输出 Disabled。

三种模式说明

SELinux 有三种模式,大家可以根据需求选择:

模式 说明
enforcing 强制模式,SELinux 强制执行策略,违规操作直接拦截
permissive 宽容模式,只记录警告日志,不拦截操作
disabled 完全关闭 SELinux

建议: 如果只是临时调试,可以用 permissive 模式,既能放行所有操作,又能通过日志看到哪些操作被 SELinux 拦截了。生产环境如果实在搞不懂 SELinux,再考虑完全关闭。

常见坑

坑1:改了配置文件没重启就以为关了

很多朋友改完 /etc/selinux/config 文件,马上用 getenforce 查看,发现还是 Enforcing,就以为没改成功。其实配置文件改了之后必须重启服务器才会生效。临时生效用 setenforce 0,永久生效必须重启。

坑2:改了 SELINUX=disabled 但还有问题

有时候即使把 SELinux 关了,之前设置的安全上下文标签还在,可能会导致一些奇怪的问题。如果遇到这种情况,可以重启服务器彻底解决。

坑3:生产环境直接关闭有安全风险

SELinux 是一道安全防线,生产环境直接完全关闭会降低系统安全性。建议先尝试把模式改成 permissive,看看日志里哪些操作被拦截了,再针对性地调整上下文标签,而不是直接全部关掉。

总结

CentOS7 关闭 SELinux 的两种方式:

临时关闭(立即生效,重启失效):

setenforce 0

永久关闭(重启后生效):

  1. 编辑 /etc/selinux/config
  2. 把 SELINUX=enforcing 改成 SELINUX=disabled
  3. 重启服务器

新手刚部署完服务器,先临时关了跑通业务,后面再慢慢研究 SELinux 的配置,别一上来就跟它死磕。

遇到问题加QQ23979811 协助处理


emer 发布于  2026-10-5 07:25 

CentOS7 firewalld开放80、443端口永久生效命令

前言

刚装好 CentOS7 服务器,部署完 Nginx 网站后,外网却访问不了?十有八九是防火墙没放行端口。CentOS7 默认用 firewalld 代替了旧版的 iptables,很多刚接触的朋友不太熟悉操作。本文就详细讲解如何在 CentOS7 上永久开放 80、443 等常用端口,以及操作中容易踩的坑。

操作步骤

1. 检查 firewalld 运行状态

首先确认防火墙服务是否正在运行:

systemctl status firewalld

如果显示 active (running) 说明防火墙已启动。如果没启动,先启动它:

systemctl start firewalld
systemctl enable firewalld

2. 查看当前已开放的端口

firewall-cmd --list-ports

这个命令会列出当前防火墙放行的所有端口。

3. 永久开放 80 端口

firewall-cmd --permanent --add-port=80/tcp

参数说明:

  • --permanent:永久生效,不加这个参数重启防火墙后就失效
  • --add-port=80/tcp:开放 80 端口,协议为 TCP

4. 永久开放 443 端口

firewall-cmd --permanent --add-port=443/tcp

5. 同时开放多个端口

如果需要一次性开放多个端口,可以这样写:

firewall-cmd --permanent --add-port=80/tcp --add-port=443/tcp --add-port=8080/tcp

6. 开放端口范围

如果要开放一整段端口,比如 3000 到 4000:

firewall-cmd --permanent --add-port=3000-4000/tcp

7. 重载防火墙使配置生效

修改完规则后,必须重载才能生效:

firewall-cmd --reload

8. 验证端口是否开放成功

firewall-cmd --list-ports

如果输出里能看到 80/tcp 443/tcp 就说明开放成功了。

9. 移除开放的端口(如果需要)

firewall-cmd --permanent --remove-port=8080/tcp
firewall-cmd --reload

常见坑

坑1:忘了加 --permanent 参数

很多朋友执行了 firewall-cmd --add-port=80/tcp,当时测试是通的,但重启服务器或者重启防火墙后就又不通了。原因就是没加 --permanent,这种方式只是临时生效,重启后规则丢失。

解决: 开放端口时一定要加 --permanent 参数,然后执行 firewall-cmd --reload 重载配置。

坑2:改完规则忘了 reload

执行完 --add-port 后,规则只是写入了配置文件,还没有真正生效。必须执行 firewall-cmd --reload 才能让新规则生效。

坑3:以为开放了端口就一定能访问

防火墙只是第一道关卡。如果网站还是访问不了,还要检查:

  1. Nginx/Apache 是否启动并监听了对应端口
  2. 安全组(云服务器)是否也放行了端口
  3. 服务器内部的应用是否正常运行

坑4:用了 iptables 命令却不生效

CentOS7 默认是 firewalld 管理防火墙,如果你用 iptables 命令添加规则,firewalld 重启后会把规则覆盖掉。要么用 firewalld 命令,要么先关掉 firewalld 再用 iptables。

总结

CentOS7 开放端口的核心命令就是三步:

  1. firewall-cmd --permanent --add-port=端口号/tcp 添加规则
  2. firewall-cmd --reload 重载生效
  3. firewall-cmd --list-ports 验证结果

记住 --permanent 和 --reload 这两个关键点,90% 的问题都能解决。

遇到问题加QQ23979811 协助处理


emer 发布于  2026-10-5 07:23 

CentOS7 firewalld开放80、443端口永久生效命令

CentOS 7 默认使用 firewalld 作为防火墙管理工具。很多新手搭建网站后发现外网访问不了,90% 都是因为 80、443 端口没开放。下面是完整的操作步骤,照抄就能用。

1. 先确认防火墙状态

systemctl status firewalld

如果显示 active (running) 说明防火墙正在运行,需要继续下面的操作。如果是 inactive 那就是防火墙没开,问题不在这里。

2. 开放 80 端口(HTTP)

firewall-cmd --zone=public --add-port=80/tcp --permanent

参数说明:

  • --zone=public:作用域为公共区域
  • --add-port=80/tcp:开放 80 端口,TCP 协议
  • --permanent:永久生效,不加这个重启服务器就失效了

3. 开放 443 端口(HTTPS)

firewall-cmd --zone=public --add-port=443/tcp --permanent

4. 一次性开放多个端口

如果需要同时开放多个端口,可以一条命令搞定:

firewall-cmd --zone=public --add-port=80/tcp --add-port=443/tcp --permanent

5. 重载防火墙使配置生效

⚠️ 重点:开放端口后必须重载,否则不生效!

firewall-cmd --reload

6. 查看已开放的端口

确认一下端口有没有真正开放成功:

firewall-cmd --list-ports

正常会输出类似:

80/tcp 443/tcp

7. 常用其他端口开放命令

SSH 端口(默认22,建议改成别的):

firewall-cmd --zone=public --add-port=22/tcp --permanent

MySQL 端口(如果需要远程连接数据库):

firewall-cmd --zone=public --add-port=3306/tcp --permanent

Redis 端口:

firewall-cmd --zone=public --add-port=6379/tcp --permanent

8. 移除/关闭已开放的端口

如果某个端口不需要了,想关掉:

firewall-cmd --zone=public --remove-port=8080/tcp --permanent
firewall-cmd --reload

常见坑

  1. 加了 --permanent 还是不生效?
    忘记 firewall-cmd --reload 了。永久配置写入后必须重载才会加载到运行时。

  2. 端口开放了还是访问不了?
    检查云服务商的安全组(阿里云/腾讯云/华为云都有这个东西),防火墙和安全组是两层,都要开。

  3. firewalld 命令找不到?
    CentOS 7 最小化安装可能没装,执行 yum install firewalld -y 安装。

  4. 临时开放端口(重启就失效)
    去掉 --permanent 参数就是临时开放,重启或 reload 后自动关闭。


遇到服务器、Nginx、MySQL 报错,可以加微信远程协助排查问题。


emer 发布于  2026-10-4 19:22 
'); })();