如果你正在带着一台或几台物理服务器,或者准备在虚拟机里开一个 Linux 环境练手,那么 CentOS 7 很可能是绕不开的一个名词。虽然它在 2024 年 6 月 30 日已经正式停止维护,但在大量现存的生产环境里,CentOS 7 的保有量依然可观,很多企业内部系统的部署文档、软件的依赖配置都以它为基准。这篇教程我打算把从镜像下载、虚拟机创建、系统安装、网络配置,到 JDK、MySQL、Git、Nginx 等常用软件部署的完整过程写清楚,同时填上我这些年实际操作中踩过的坑。不管你是第一次上手的 Linux 新手,还是偶尔需要搭测试环境的后端开发,这篇内容应该都能帮你省下不少查资料的时间。
先说一个比较关键的事实:官方停止维护之后,CentOS 7 的默认 yum 源已经无法继续使用了,因为官方源仓库被移到了 vault.centos.org。安装完成后第一件事就是替换源,否则很多软件都装不上,这个问题几乎每个人都会遇到,后面我会重点讲。
1. 装系统之前,先把这些想明白
1.1 需要准备的东西
在正式开始安装之前,先把材料准备好。很多人装到一半卡住,大多数原因是准备工作没做好。
你需要以下几样东西:
- CentOS 7 的 ISO 镜像文件,建议使用 7.9 版本,这是 CentOS 7 的最终版本,修复了大量已知问题;
- 一个支持 U 盘启动的物理服务器,或虚拟机软件(VMware Workstation、VirtualBox,如果是服务器环境则用 ESXi 或 Proxmox 的 Web 界面直接挂载 ISO);
- 如果是物理机安装,准备一个 8GB 以上的 U 盘,用于制作启动盘;
- 一个可以访问外网的网络环境,安装完成后需要下载软件包和更新;
- 规划好服务器的 IP 地址、网关、DNS,以及 root 密码策略。
在服务器场景下,大多数人会选择使用 ISO 镜像直接通过远程管理卡(比如 Dell iDRAC、HP iLO)挂载安装,或者用 PXE 批量部署。但对于个人学习和测试环境来说,最方便的方式还是用 VMware 创建虚拟机,这也方便后续做快照和回滚。我在实际工作中经常用虚拟机先把环境搭好、验证配置,再迁移到物理机上,这样能大幅减少试错成本。
1.2 CentOS 7 停维护了,为什么还要装它
这是很多新手会问的问题。既然已经有 CentOS Stream 和更现代的 Rocky Linux、AlmaLinux,为什么还要学 CentOS 7?
其实原因很现实:大量的存量服务器仍然是 CentOS 7,不少公司的老业务系统只在这个版本上验证过。很多软件包的安装教程、依赖库的编译参数都是针对 CentOS 7 写的,如果你负责维护这些系统,哪怕它已经停止维护,你还是得会装、会配、会排错。另外,学习 CentOS 7 也能帮助你更好地理解 Linux 系统的整体架构——systemd、firewalld、SELinux 这些机制在这个版本里已经非常成熟。我的建议是:新项目优先考虑更新的系统,但如果你想顺利接手老项目,CentOS 7 这门课躲不掉。
2. 从零开始安装 CentOS 7
2.1 镜像下载与校验
CentOS 7 的 ISO 镜像在官方源已经下线,现在需要从 vault 源或者国内镜像站下载。国内下载速度比较快的有阿里云镜像、网易镜像和清华 TUNA 镜像。
以阿里云镜像为例,访问 mirrors.aliyun.com,进入 centos-vault 目录,选择 7.9.2009 版本,再进入 isos/x86_64 目录,能看见几个不同类型的文件:
- CentOS-7-x86_64-DVD-2009.iso:完整安装盘,包含大多数常用软件包,文件大小 4GB 左右,建议下载这个;
- CentOS-7-x86_64-Minimal-2009.iso:最小化安装盘,只包含基础系统,适合后续自己按需装软件,文件不到 1GB,服务器场景下我最常用的是这个;
- CentOS-7-x86_64-Everything-2009.iso:全功能安装盘,包含几乎所有软件包,一般不需要下载,太大了。
下载完成后,建议做一次 SHA256 校验,确保文件完整。Linux 下用 sha256sum 命令,Windows 下可以用 PowerShell 的 Get-FileHash。镜像站一般会提供一个 sha256sum.txt 文件,直接比对即可。这一步很多人觉得多余,但如果你下载到残缺的镜像,安装到一半报错,那才真是浪费时间。
2.2 VMware 中创建虚拟机
打开 VMware Workstation,点击“创建新的虚拟机”,选择“典型”配置即可,不需要自定义。然后在安装来源那里选择“稍后安装操作系统”,不要直接选择 ISO 文件,这样接下来可以先把虚拟机硬件配置好再挂载镜像,操作上更灵活。
操作系统类型选择“Linux”,版本选择“CentOS 7 64 位”。虚拟机的资源配置有一个常用区间:
- 内存:至少分配 2GB,建议 4GB。如果你要在里面跑 MySQL 和 Java 服务,4GB 是起步,否则内存不够会导致 MySQL 直接被系统杀掉;
- 处理器:分配 2 核即可,测试环境性能足够;
- 磁盘:建议 40GB,使用“将虚拟磁盘拆分为多个文件”,方便拷贝迁移;
- 网络适配器:默认 NAT 模式即可,NAT 模式下虚拟机可以访问外网,同时不会和局域网里的其他机器产生 IP 冲突。
创建完成后,先不要启动虚拟机,在虚拟机设置里把 CentOS 7 的 ISO 挂载到 CD/DVD 驱动器,勾选“启动时连接”,然后就可以开机进入安装界面了。
如果是物理机安装,使用软碟通或 Rufus 把 ISO 写入 U 盘,注意写入模式要选择“USB-HDD+”,分区类型根据服务器固件选择,旧机器一般是 LEGACY+MBR,新机器需要考虑 UEFI,这个选择失误会导致开机识别不了 U 盘启动项。
2.3 安装界面关键步骤说明
从 ISO 启动后会进入一个菜单,第一项是“Install CentOS 7”,回车执行即可。这里有一个隐藏选项,按 Tab 键可以编辑启动参数,如果安装过程中画面卡死,可以在 quiet 后面加上 nomodeset 参数,禁用显卡驱动加载,很多老服务器或特殊显卡环境会出现这个问题。
安装程序的语言选择界面,建议选择英文。原因很简单,中文环境下部分界面为标准翻译,但在服务器领域,报错信息、日志、文档都是以英文为主,你迟早要面对英文环境,第一次开始就适应它,后面排错会顺畅很多。当然如果英文确实吃力,选中文也不是不行,只是后续参考国外教程时可能要自己翻译回来。接下来需要配置的项按优先级从高到低为:
- 安装位置(Installation Destination)——必须配置,否则无法开始安装;
- 网络与主机名(Network & Host Name)——建议在这里就把网络打开并设置好;
- 时间和日期(TIME & DATE)——选 Asia/Shanghai;
- 软件选择(Software Selection)——如果安装的是 Minimal 镜像,这一步选项比较少,通常使用默认的“最小安装”即可。
2.4 磁盘分区方案与实践
安装位置选择“本地标准磁盘”,然后勾选“我要配置分区”。分区方案我建议手动配置,自动分区虽然省事,但默认把 /home 分得很大,服务器场景下 /home 并不常用,空间浪费非常明显。
服务器场景下推荐一个实用的手动分区方案(磁盘 40GB 为例):
- /boot:分配 1024MB,放在标准分区,用来存放内核和引导文件,不需要太大,但必须有;
- swap:分配 4096MB。内存 4GB 的情况下,swap 设置 4GB 左右即可。swap 的作用是在物理内存不足时充当溢出空间,服务器实际负载高时能避免进程直接崩溃;
- /:剩下的空间全部给根分区。使用 LVM 逻辑卷管理,后续磁盘扩容时可以直接添加物理卷再扩展逻辑卷,非常方便。
给根分区时,文件系统类型选择 xfs,这是 CentOS 7 默认且最稳定的文件系统。如果你后续有单独的业务数据盘,可以考虑把数据目录单独分一个区,比如 /data,这样重装系统时数据不会丢。分完区后点击“完成”回到主界面,再点击“开始安装”。
安装过程中需要设置 root 密码。这里提醒一下:root 密码务必使用强密码,至少 8 位以上,包含大小写字母、数字和特殊字符。如果提示密码过弱,连续点击两次“完成”即可强制使用。出于安全考虑,不建议在安装界面创建普通用户,等系统装好后再用 useradd 添加,权限和 sudo 配置可以更灵活地控制。
3. 安装完成后的“第一课”:网络、源、SSH
3.1 网卡配置:静态 IP 还是 DHCP
系统安装完成后重启,第一件事是登录,设置网络。服务器场景下强烈建议配置静态 IP,否则 DHCP 分配的地址一旦变化,后面的 SSH 连接、服务配置全部要跟着改,非常被动。
使用 nmcli 命令可以快速查看网络状态:
nmcli device status nmcli connection showCentOS 7 默认网卡名一般是 ens33、eth0 这种格式。假设你的网卡名是 ens33,用以下命令配置静态 IP:
nmcli connection modify ens33 ipv4.addresses 192.168.1.100/24 ipv4.gateway 192.168.1.1 ipv4.dns 223.5.5.5 ipv4.method manual nmcli connection up ens33如果你更习惯直接改配置文件,网卡对应的文件是 /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="223.5.5.5"改完文件后执行 systemctl restart network 重启网络服务,或者用 nmcli connection reload 再 up。注意一点,在修改网卡配置之前先确认当前 IP,如果是远程连接,修改配置导致断连后需要使用控制台重新连接。
3.2 替换软件源:让 yum 恢复活力
这是 CentOS 7 安装后最重要的一步。因为官方源已经停止维护,默认 yum 源里的 baseurl 全部失效,直接 yum install 会报 404 或者找不到 mirror。解决方案是把源全部切换到 vault.centos.org 或者国内镜像站的 centos-vault 目录。
通用的做法是直接修改 baseurl。比如使用阿里云的 vault 源:
cd /etc/yum.repos.d/ mkdir repobak mv *.repo repobak/ curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo这里有个细节,阿里云提供的 CentOS-7.repo 文件里指向的是 mirror.centos.org 的地址,可能仍然不可用。需要手动把文件里的 baseurl 修改为 vault 地址,或者使用一个已经处理好的 vault repo 文件,内容大致是:
[base] name=CentOS-7 - Base baseurl=https://mirrors.aliyun.com/centos-vault/7.9.2009/os/x86_64/ gpgcheck=0 enabled=1 [updates] name=CentOS-7 - Updates baseurl=https://mirrors.aliyun.com/centos-vault/7.9.2009/updates/x86_64/ gpgcheck=0 enabled=1 [extras] name=CentOS-7 - Extras baseurl=https://mirrors.aliyun.com/centos-vault/7.9.2009/extras/x86_64/ gpgcheck=0 enabled=1写完后执行:
yum clean all yum makecache然后尝试安装一个 vim 验证:
yum install -y vim能顺利安装说明源已经生效。这里我再补充一个经验:如果企业内网有自己的 yum 仓库镜像,可以把 baseurl 直接指向内网地址,速度比公网源快很多,带宽也稳定。
关于 EPEL 源,如果需要安装一些不在基础源里的软件包(比如 htop、nginx),还需要配置 EPEL。
yum install -y epel-release同样,如果官方源失效,也可以从 vault 或国内镜像手动安装 epel-release 包。这个源配置完成后,能安装的软件包数量会大幅度增加。
3.3 SSH 远程登录与基础安全加固
CentOS 7 minimal 安装完成后默认启用了 SSH 服务,这对服务器管理来说非常关键。确认 SSH 状态:
systemctl status sshd如果没启动,执行:
systemctl start sshd systemctl enable sshd接下来进行基本的安全加固。第一步是修改 SSH 默认端口,默认的 22 端口每天都在被全网扫描器盯上,改成其他高位端口(比如 22022)能显著降低暴力破解风险。修改 /etc/ssh/sshd_config,把 Port 22 改成 Port 22022,然后重启 sshd:
systemctl restart sshd注意,修改端口前务必先在当前会话里确认防火墙规则已经放行新端口,否则改完端口后连不上就麻烦了。第二个建议是禁止 root 用户直接通过 SSH 登录,先创建普通用户,加入 wheel 组,然后在 sshd_config 中设置 PermitRootLogin no。这样即使密码泄露,攻击者也无法直接用 root 登录,需要通过普通用户再切换,多了一层防护。
创建用户的命令:
useradd admin passwd admin usermod -aG wheel admin然后验证 admin 用户能否登录,确认没问题后再关闭 root 登录。
3.4 防火墙与 SELinux 设置
CentOS 7 默认使用 firewalld 管理防火墙。它和之前 CentOS 6 的 iptables 服务方式不同,但细节上更灵活,支持区域管理。查看当前防火墙状态:
systemctl status firewalld如果启用了防火墙,需要放行必要的端口。例如刚才把 SSH 改成 22022,就需要放行:
firewall-cmd --permanent --add-port=22022/tcp firewall-cmd --reload如果你要部署 Web 服务,还要放行 80 和 443:
firewall-cmd --permanent --add-service=http firewall-cmd --permanent --add-service=https firewall-cmd --reload不少教程会直接告诉你 systemctl stop firewalld 然后把防火墙关了,这在我看来是非常糟糕的习惯。服务器安全靠的是纵深防御,防火墙是第一道门槛,尤其是暴露在公网的机器,关防火墙等于裸奔,被攻破只是时间问题。
再来说 SELinux。CentOS 7 默认启用 SELinux,运行在 enforcing 模式,它会在内核层面对进程的权限做限制。很多新手不知道自己遇到的权限问题其实是 SELinux 导致的,比如改了 nginx 配置文件但服务无法启动,或者 Web 目录可以访问但无法写入文件。最简单粗暴的方法是永久关闭 SELinux:
vi /etc/selinux/config # 将 SELINUX=enforcing 改为 SELINUX=disabled但我不建议一上来就关。更推荐的做法是先把 SELinux 模式临时切换为 permissive 测试:
setenforce 0permissive 模式下 SELinux 只记录警告不实际阻断,能帮你判断当前问题到底是不是 SELinux 引起的。确认后,再按需调整策略或者真正决定是否关闭。毕竟不少第三方软件(比如 MySQL 的某些版本、Nginx 的特定模块)在默认 SELinux 策略下确实运行困难,但通过配置正确的上下文和布尔值完全可以共存。长期生产环境里,我更倾向于保持 SELinux 开启,用 semanage 等工具调整策略,因为一旦将来审计或安全检查,关掉 SELinux 会成为一个高危项。
时间同步也是服务器配置绕不开的一个环节。CentOS 7 默认安装了 chrony,配置好后系统时间会自动与时间服务器同步。修改 /etc/chrony.conf,将 server 指定为国内的 NTP 服务器,比如阿里云的 ntp.aliyun.com,然后重启:
systemctl restart chronyd systemctl enable chronyd验证同步状态:
chronyc sources -v时间不准的隐患很隐蔽,比如数据库日志、证书校验、定时任务,都会因为时间偏差出现莫名其妙的故障。服务器装机时多花两分钟配置好时间同步,后面少很多麻烦。
4. 服务器的基础服务配置:JDK、MySQL、Git、Nginx
4.1 JDK 安装配置
后端应用部署绕不开 JDK。CentOS 7 上安装 JDK 有两种主流方式:一是用 yum 安装 OpenJDK,二是手动下载官方 Oracle JDK 的 Linux 安装包。OpenJDK 的好处是方便,一条命令搞定:
yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel但如果你使用的是 Oracle JDK,或者需要指定某个小版本,推荐手动安装。比如准备部署 Java 8 的某个版本,先下载 tar.gz 包,以 jdk-8u202-linux-x64.tar.gz 为例,放到 /opt 目录下解压:
cd /opt tar -zxvf jdk-8u202-linux-x64.tar.gz mv jdk1.8.0_202 jdk8接着配置环境变量,编辑 /etc/profile,在文件末尾添加:
export JAVA_HOME=/opt/jdk8 export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar执行 source /etc/profile 生效,验证:
java -version输出包含 java version "1.8.0_202" 等信息表示安装成功。
这里有一个关键技巧:建议同时安装 java-1.8.0-openjdk-devel 或者确保 JDK 而不是 JRE,因为很多 Java 应用在编译期或运行期需要 tools.jar 和 javac,只装 JRE 会出现类找不到的情况。另外,不要随便用 yum update 把 JDK 升级到不兼容的版本,生产环境下 JDK 的主版本变更可能导致应用无法启动,需要明确锁定版本。
4.2 MySQL 安装配置
CentOS 7 的默认软件源里没有 MySQL,取而代之的是 MariaDB。如果你要安装 MySQL,推荐使用官方提供的 Yum 仓库。
安装 MySQL 5.7 的步骤:
rpm -ivh https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm yum install -y mysql-community-server systemctl start mysqldMySQL 5.7 在安装后会自动生成一个临时密码,存放在 /var/log/mysqld.log 里。查看方式:
grep 'temporary password' /var/log/mysqld.log登录后必须立刻修改密码:
mysql -uroot -p ALTER USER 'root'@'localhost' IDENTIFIED BY '你的新密码';MySQL 5.7 默认开启了密码复杂度校验插件,弱密码会被拒绝。如果你在测试环境里想用简便密码,可以通过全局变量调整:
SET GLOBAL validate_password_policy=LOW; SET GLOBAL validate_password_length=6;个人建议,开发环境可以适当放宽密码策略,生产环境必须保持默认强度。
安装 MySQL 8.0 也是类似流程,只要把仓库换成 mysql80-community-release-el7 即可。另外在配置 MySQL 远程连接时,需要先创建一个授权用户:
CREATE USER 'appuser'@'%' IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON *.* TO 'appuser'@'%'; FLUSH PRIVILEGES;同时要在防火墙里放行 3306 端口。如果还是无法远程访问,检查一下 my.cnf 里的 bind-address,MySQL 默认只监听 127.0.0.1,需要改为 0.0.0.0 或注释掉。
再说一下 MySQL 的内存和性能基础优化。编辑 /etc/my.cnf,在 [mysqld] 段落下可以设置:
max_connections = 500 innodb_buffer_pool_size = 1G character_set_server = utf8mb4 collation_server = utf8mb4_general_ciinnodb_buffer_pool_size 推荐设置为物理内存的 50% 到 70%,但如果你在同一台机器上还运行了 Java 应用,这个值就得适当下调,具体根据 JVM 堆大小来平衡。utf8mb4 字符集是必须的,否则 emoji 或者一些生僻字存不进去,这是老 MySQL 用户踩过最多坑之一。
4.3 Git 安装配置
CentOS 7 自带的 Git 版本是 1.8.3,这个版本比较老,和某些新工具(比如 GitLab runner、部分 CI 工具)有兼容问题。如果需要新版本 Git,推荐用源码编译安装或使用 IUS 仓库。
源码安装 Git 2.x 的流程:
yum install -y curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker cd /usr/local/src wget https://github.com/git/git/archive/refs/tags/v2.39.2.tar.gz tar -zxvf v2.39.2.tar.gz cd git-2.39.2 make prefix=/usr/local all make prefix=/usr/local install编译耗时取决于机器性能,一般几分钟到十几分钟不等。完成后检查版本:
git --version需要说明的是,源码装 Git 会把二进制放在 /usr/local/bin,如果系统里还存在老版本 Git(/usr/bin/git),执行 git --version 时显示的可能还是旧版本,需要做软链或修改 PATH:
ln -s /usr/local/bin/git /usr/bin/gitGit 安装完成后,建议配置全局属性:
git config --global user.name "你的名字" git config --global user.email "你的邮箱" git config --global core.editor vim克隆公司代码时如果你的代码库用的是 SSH 方式,还需要生成密钥并配置到 Git 服务器上:
ssh-keygen -t rsa -b 4096 -C "你的邮箱" cat ~/.ssh/id_rsa.pub4.4 Nginx、Node.js 等常用部署
Nginx 在 CentOS 7 上使用官方源安装很方便。先创建官方源文件 /etc/yum.repos.d/nginx.repo:
[nginx-stable] name=nginx stable repo baseurl=http://nginx.org/packages/centos/7/$basearch/ gpgcheck=1 enabled=1 gpgkey=https://nginx.org/keys/nginx_signing.key然后:
yum install -y nginx systemctl start nginx systemctl enable nginx启动后访问服务器 IP,看到 Welcome to nginx 页面就说明部署成功。Nginx 默认站点根目录是 /usr/share/nginx/html,配置文件在 /etc/nginx/conf.d/default.conf。如果你部署的是前端项目,直接把构建后的 dist 文件上传到站点目录即可;如果你需要反向代理到 Java 服务,在配置里加一段:
location /api/ { proxy_pass http://127.0.0.1:8080/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; }注意 proxy_pass 后面是否带斜杠,带不带斜杠对路径拼接影响很大,最容易在这里踩坑:不带斜杠表示把整个 /api/xxx 传给后端,带斜杠表示去掉 /api 前缀再传。
Node.js 的安装方式推荐使用官方提供的二进制包,以 Node.js 16 为例:
curl -sL https://rpm.nodesource.com/setup_16.x | bash - yum install -y nodejs安装完成后:
node -v npm -vNode.js 装好后,如果使用国内 npm 镜像,可以修改全局配置:
npm config set registry https://registry.npmmirror.com这个步骤能显著提升 npm install 的速度,尤其是在国内网络环境下。如果你要开发 Vue 3 项目,还需要安装 Vue CLI 或直接使用 Vite:
npm install -g @vue/cli或者:
npm create vite@latest my-vue-app安装 Vue CLI 需要单独配置 PATH。如果提示 vue 命令找不到,检查 /usr/local/bin 是否在 PATH 中。Node.js 和 Vue 环境配置经常遇到的一个问题是 npm 全局安装目录权限不足,建议把全局前缀配置到当前用户目录:
npm config set prefix "$HOME/.npm-global" export PATH="$HOME/.npm-global/bin:$PATH"这样就不会出现因为全局目录权限导致的 EACCES 错误了。
5. 常见问题与排查技巧
5.1 网络无法联网
安装完成后 ping 不通外网,先按顺序排查:
- 检查网卡是否启动:ip addr 查看网卡状态,如果显示 DOWN,执行 ip link set ens33 up;
- 检查路由表:ip route,确保有 default via 项,如果没有,原因多半是网关配置不对;
- 检查 DNS:使用 nslookup www.baidu.com 测试,DNS 不通则修改 /etc/resolv.conf;
- 检查防火墙:如果是服务器场景,确认云平台安全组或本地防火墙是否放行了相应端口。
在 VMware 虚拟机里还有一个常见原因:网卡没有设置为开机自启动。编辑 ifcfg-ens33,确保 ONBOOT="yes"。很多人装完系统后忘记改这一项,导致虚拟机重启后连不上。
5.2 yum 源报错:Could not resolve host 或 404
这是 CentOS 7 停止维护后的典型问题。如果已经替换了 vault 源但依然报错,常见原因有两个:一是 repo 文件里还有残留的 mirrorlist 配置,需要注释掉;二是 epel 源没有一起替换,epel 仓库的缓存依然指向已失效的地址。
解决方案:
yum clean all rm -rf /var/cache/yum/* yum makecache如果 makecache 时报某个仓库 404,可以单独禁用该仓库再试。定位是哪个仓库的问题,执行:
yum repolist -v yum --disablerepo=epel makecache5.3 VMware 虚拟机开机花屏或安装界面异常
安装 CentOS 7 时如果出现花屏、光标闪烁或卡在进度条,绝大概率是显卡支持问题,解决方法是在安装启动项中按 Tab 编辑,在末尾添加 nomodeset,安装完成后再把 /etc/default/grub 中的 GRUB_CMDLINE_LINUX 也加上 nomodeset,并重新生成 grub 配置:
grub2-mkconfig -o /boot/grub2/grub.cfg5.4 MySQL 启动失败排查
MySQL 启动失败时,第一步不是百度,而是直接看错误日志:
tail -100 /var/log/mysqld.log常见报错有磁盘空间不足、数据目录权限不对、配置文件语法错误。数据目录权限可以通过 chown mysql:mysql /var/lib/mysql 修复。如果是 SELinux 导致的启动失败,日志里通常会有 avc denied 字样,临时用 setenforce 0 验证,确认后调整策略。学习阶段也可以直接关闭 SELinux,生产环境还是建议用正确策略让 MySQL 和 SELinux 共存。
我在实际部署中还遇到过一个情况:MySQL 起不来,日志只看得到一行 generic error,后来发现是磁盘满了。df -h 看一眼就清楚了,这类问题总是发生在项目上线最紧张的时刻,所以建议服务器装完后就配置磁盘空间监控脚本或者使用 Prometheus 监控。
5.5 SSH 连接慢
SSH 登录时输完密码要等好几秒才进系统,通常原因是 SSH 在反向解析客户端 IP。修改 /etc/ssh/sshd_config:
UseDNS no GSSAPIAuthentication no重启 sshd 后连接速度立竿见影。这个小问题在跨网段管理大量服务器时尤其烦人,批量配置时记得统一处理。
5.6 常用小命令速查
最后整理一份我平时装机时必用的命令清单,建议收藏:
# 查看系统版本 cat /etc/redhat-release # 查看内核版本 uname -r # 查看内存 free -h # 查看磁盘 df -h # 查看 CPU 信息 lscpu # 查看开机启动项 systemctl list-unit-files --type=service | grep enabled # 设置服务开机自启 systemctl enable 服务名 # 查看端口监听情况 netstat -tunlp # 查看进程资源占用 tophgdualdskf " " NETWORK --yes" "--" "--" # 这些是没有意义的字符,忽略。
再补充一个比较实用的小建议:每次装完一台新服务器,建议写一个初始化脚本,把时间同步、软件源替换、常用工具安装(如 vim、wget、net-tools、unzip)、SSH 加固、防火墙规则等内容全部自动化。这样下次再装服务器,一条命令就能搞定大部分重复劳动。我有一次需要一次性批量初始化 20 台测试服务器,就是用这种方式把操作时间从半天缩短到了半小时。脚本思路大概是这样:
#!/bin/bash # 基础工具安装 yum install -y vim wget net-tools unzip lrzsz # 配置时间同步 cat > /etc/chrony.conf <<EOF server ntp.aliyun.com iburst stratumweight 0 driftfile /var/lib/chrony/drift rtcsync makestep 10 3 EOF systemctl restart chronyd # SSH 安全配置 sed -i 's/#Port 22/Port 22022/' /etc/ssh/sshd_config sed -i 's/PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config systemctl restart sshd # 防火墙 firewall-cmd --permanent --add-port=22022/tcp firewall-cmd --reload # 替换 yum 源(省略具体内容) echo "yum repo already configured."脚本里每个步骤后面都建议加上日志输出,便于定位安装过程中卡在哪一步。不要担心脚本有问题,先在测试虚拟机里跑一遍,调整完再批量执行,这个流程稳定可靠。
关于 CentOS 7 的安装配置,上面这些已经覆盖了从零到能部署业务的大部分必经之路。根据我个人的经验,操作系统装好只是服务器工作的起点,真正的挑战在于后续的日常维护、安全加固、故障排查和日志监控,这些能力需要你在实际项目中一点点积累。如果在搭建过程中卡住了,先冷静下来看日志,几乎 90% 的问题都会在日志里留下线索。祝你好运。