作为一个长期在服务器运维领域摸爬滚打的老兵,我深知一个稳定可靠的Linux发行版对生产环境的重要性。当CentOS转向Stream版本后,RockyLinux凭借其与RHEL的高度兼容性和社区驱动的特性,迅速成为企业级环境的新宠。今天我就带大家从零开始,完成RockyLinux 8.6的完整安装过程,并分享那些真正实用的核心命令——不是教科书上的理论,而是我这些年实战总结的"生存技能"。
首先访问RockyLinux官网获取8.6版本的ISO镜像。这里有个细节要注意:生产环境建议选择"Minimal"版本,它去除了图形界面等非必要组件,不仅安装包体积小(约2GB),而且默认更安全。我遇到过不少新手直接安装带GUI的版本,结果因为不必要的服务导致安全漏洞。
制作启动盘推荐使用Ventoy这款神器:
bash复制# 下载最新版Ventoy
wget https://github.com/ventoy/Ventoy/releases/download/v1.0.88/ventoy-1.0.88-linux.tar.gz
# 解压后对U盘进行配置(假设U盘设备为/dev/sdb)
sudo ./Ventoy2Disk.sh -i /dev/sdb
注意:操作前务必确认设备路径,错误的设备选择会导致数据丢失
Ventoy的优势在于只需格式化一次U盘,之后直接拖拽ISO文件即可,比传统Rufus或dd命令方便得多。我测试过,一个32GB的U盘可以同时存放RockyLinux、Ubuntu等多个系统的安装镜像。
启动后进入安装界面,这几个配置项需要特别注意:
分区方案:生产服务器建议手动分区,我的常用配置是:
软件选择:基础环境勾选:
网络配置:安装时就配置好静态IP比事后修改更高效:
ini复制BOOTPROTO=static
IPADDR=192.168.1.100
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=8.8.8.8
安全策略:建议启用SELinux的enforcing模式,虽然初期可能遇到权限问题,但长期来看能有效提升系统安全性。我在客户现场见过太多因为禁用SELinux导致的安全事件。
安装完成后别急着重启,点击"Root Password"设置强密码(建议16位以上混合字符),同时创建至少一个标准用户并加入wheel组,这是后续sudo提权的基础。
首次登录后立即执行:
bash复制sudo dnf update -y
sudo dnf install -y epel-release
sudo dnf install -y vim bash-completion net-tools lsof htop
这几个工具是我日常运维的"瑞士军刀":
RockyLinux默认使用firewalld,建议这样配置:
bash复制sudo firewall-cmd --permanent --add-service={http,https,ssh}
sudo firewall-cmd --permanent --remove-service=dhcpv6-client
sudo firewall-cmd --reload
重要:如果使用非标准SSH端口,需先用
--add-port=端口号/tcp放行
我习惯将默认SSH端口从22改为高端口(如5922),这能减少90%的暴力破解尝试:
bash复制sudo sed -i 's/#Port 22/Port 5922/' /etc/ssh/sshd_config
sudo systemctl restart sshd
企业环境必须确保时间准确:
bash复制sudo dnf install -y chrony
sudo systemctl enable --now chronyd
sudo chronyc sources # 验证时间源
日志管理建议安装logrotate防止磁盘爆满:
bash复制sudo dnf install -y logrotate
sudo vim /etc/logrotate.conf # 调整压缩策略和保留周期
智能查找:比find更快的locate
bash复制sudo dnf install -y mlocate
sudo updatedb # 首次建立索引
locate nginx.conf # 秒级搜索
空间分析:快速定位大文件
bash复制du -h --max-depth=1 / | sort -h # 查看根目录空间占用
ncdu /var # 交互式磁盘分析(需安装ncdu)
文件传输:安全高效的scp
bash复制scp -P 5922 -r /local/path user@remote:/target/path
进程树查看:
bash复制pstree -p # 显示PID的进程树
资源监控:
bash复制top -c -u mysql # 监控特定用户进程
信号发送:
bash复制kill -9 $(pgrep -f "python3 app.py") # 强制终止匹配进程
连通性测试:
bash复制mtr -n 8.8.8.8 # 结合ping+traceroute
端口检测:
bash复制ss -tulnp | grep 80 # 比netstat更高效
流量监控:
bash复制nload -u M eth0 # 实时流量显示(需安装nload)
检查步骤:
bash复制nmcli device status # 查看网卡状态
nmcli connection show # 检查连接配置
sudo nmtui # 文本界面配置工具
解决方法:
bash复制sudo dnf repoquery --requires --resolve <包名> # 查询依赖
sudo dnf history undo last # 回滚最近操作
诊断命令:
bash复制ausearch -m avc -ts recent # 查看安全日志
ls -Z /var/www/html # 查看安全上下文
临时解决方案(生产环境慎用):
bash复制sudo setenforce 0 # 切换为permissive模式
sudo restorecon -Rv /path # 重置安全上下文
编辑/etc/sysctl.conf添加:
ini复制# 提升TCP性能
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 30
# 增加文件描述符限制
fs.file-max = 65535
应用配置:
bash复制sudo sysctl -p
查看启动耗时:
bash复制systemd-analyze blame
禁用不必要服务:
bash复制sudo systemctl disable bluetooth.service
示例配置/etc/logrotate.d/nginx:
ini复制/var/log/nginx/*.log {
daily
missingok
rotate 14
compress
delaycompress
notifempty
create 0640 nginx nginx
sharedscripts
postrotate
/bin/kill -USR1 `cat /run/nginx.pid 2>/dev/null` 2>/dev/null || true
endscript
}
编辑/etc/ssh/sshd_config:
ini复制PermitRootLogin no
MaxAuthTries 3
LoginGraceTime 1m
AllowUsers yourusername
安装审计工具:
bash复制sudo dnf install -y aide
sudo aide --init
sudo mv /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz
设置定时任务:
bash复制sudo crontab -e
# 添加:
0 3 * * * /usr/sbin/aide --check
配置sudo权限:
bash复制sudo visudo
# 添加:
%wheel ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart nginx
Glances:全能监控工具
bash复制sudo dnf install -y glances
glances -w # 启动Web界面
bpytop:现代化资源监视器
bash复制sudo pip install bpytop
tmux:终端复用神器
bash复制sudo dnf install -y tmux
tmux new -s session_name
jq:JSON处理工具
bash复制echo '{"name":"Rocky"}' | jq '.name'
httpie:现代curl替代品
bash复制sudo dnf install -y httpie
http GET https://example.com
tcpdump:高级抓包工具
bash复制sudo tcpdump -i eth0 port 80 -w capture.pcap
完成基础安装和命令学习后,建议按这个路线深入:
我个人在管理服务器集群时,会为每台机器建立详细的配置档案,记录所有定制化修改。建议你也养成这种习惯,可以用简单的Markdown文件记录:
markdown复制# server-01配置日志
## 2023-08-01
- 安装RockyLinux 8.6 Minimal
- 配置静态IP: 192.168.1.100
- 修改SSH端口为5922