|
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
Red Hat Enterprise Linux线上教程从基础到高级全面解析企业级Linux系统管理与实战应用助您快速提升专业技能成为Linux高手
引言
Red Hat Enterprise Linux(RHEL)是全球领先的企业级Linux操作系统,以其稳定性、安全性和高性能而闻名。作为企业级IT基础设施的核心组件,RHEL为各种关键业务应用提供了可靠的运行平台。根据最新统计,RHEL在全球Linux服务器市场中占有超过70%的份额,是金融、电信、政府等行业的首选操作系统。
本教程将带您从RHEL的基础知识开始,逐步深入到高级管理和实战应用,帮助您全面掌握企业级Linux系统管理技能,成为一名真正的Linux高手。
一、RHEL基础
Red Hat Enterprise Linux最初发布于2002年,基于Fedora项目开发,每3-5年发布一个主要版本。目前主流版本包括RHEL 7、RHEL 8和RHEL 9。每个主要版本提供长达10年的支持周期,包括全生命周期支持(约5年)和延长生命周期支持(约5年)。
RHEL的主要特点包括:
• 企业级稳定性与可靠性
• 强大的安全功能(包括SELinux)
• 完善的生态系统与支持服务
• 认证硬件与软件兼容性
• 长期支持与更新
RHEL的安装可以通过多种方式完成,包括本地DVD、网络安装(PXE)和虚拟化平台部署。以下是安装过程的简要概述:
安装前准备:
• 确认系统硬件兼容性
• 下载RHEL ISO镜像或准备网络安装源
• 准备有效的Red Hat订阅
安装步骤:
1. 从安装介质启动系统
2. 选择语言和键盘布局
3. 配置安装目标(磁盘分区)
4. 配置网络和主机名
5. 设置时间和日期
6. 选择软件包组(最小安装、服务器、工作站等)
7. 创建管理员用户和密码
8. 开始安装并等待完成
磁盘分区方案示例:
- /boot - 500MB (标准分区)
- swap - 2GB (逻辑卷)
- / - 剩余空间 (逻辑卷)
复制代码
RHEL作为服务器操作系统,主要通过命令行进行管理。以下是一些基础命令:
文件和目录操作:
- # 列出目录内容
- ls -la
- # 切换目录
- cd /path/to/directory
- # 创建目录
- mkdir new_directory
- # 复制文件
- cp source_file destination_file
- # 移动/重命名文件
- mv old_name new_name
- # 删除文件
- rm file_name
- # 删除目录
- rm -r directory_name
- # 查看文件内容
- cat file_name
- less file_name
复制代码
系统信息查看:
- # 查看系统信息
- uname -a
- # 查看发行版信息
- cat /etc/redhat-release
- # 查看内核版本
- uname -r
- # 查看系统资源使用情况
- top
- htop
- free -h
- df -h
复制代码
用户管理:
- # 切换用户
- su - username
- # 使用sudo执行命令
- sudo command
- # 添加用户
- useradd username
- # 设置密码
- passwd username
复制代码
RHEL使用DNF(RHEL 8及以后版本)或YUM(RHEL 7)作为软件包管理工具:
DNF/YUM基本使用:
- # 安装软件包
- dnf install package_name
- yum install package_name
- # 卸载软件包
- dnf remove package_name
- yum remove package_name
- # 更新软件包
- dnf update package_name
- yum update package_name
- # 搜索软件包
- dnf search keyword
- yum search keyword
- # 显示软件包信息
- dnf info package_name
- yum info package_name
- # 列出已安装的软件包
- dnf list installed
- yum list installed
复制代码
RPM包管理:
- # 安装RPM包
- rpm -ivh package.rpm
- # 卸载RPM包
- rpm -e package_name
- # 查询RPM包
- rpm -qa | grep package_name
复制代码
二、系统管理
用户管理:
- # 创建用户
- useradd -m -s /bin/bash username
- # 设置用户密码
- passwd username
- # 修改用户属性
- usermod -aG groupname username
- usermod -s /bin/sh username
- usermod -d /home/newdir username
- # 删除用户
- userdel -r username
- # 查看用户信息
- id username
- finger username
复制代码
组管理:
- # 创建组
- groupadd groupname
- # 修改组
- groupmod -n newgroupname oldgroupname
- # 删除组
- groupdel groupname
- # 管理组成员
- gpasswd -a username groupname
- gpasswd -d username groupname
复制代码
用户和组配置文件:
• /etc/passwd- 用户账户信息
• /etc/shadow- 用户密码信息
• /etc/group- 组信息
• /etc/gshadow- 组密码信息
• /etc/skel/- 新用户主目录模板
Linux文件权限使用三位八进制数表示,分别对应所有者、组和其他用户的权限:
权限表示:
• r(读取) = 4
• w(写入) = 2
• x(执行) = 1
权限管理命令:
- # 修改文件权限
- chmod 755 file_name
- chmod u+x file_name
- chmod g-w file_name
- chmod o=r file_name
- # 修改文件所有者
- chown username file_name
- chown username:groupname file_name
- # 修改文件组
- chgrp groupname file_name
- # 递归修改权限
- chmod -R 755 directory_name
- chown -R username directory_name
复制代码
特殊权限:
• SUID (4) - 以文件所有者身份执行
• SGID (2) - 以文件所属组身份执行
• Sticky Bit (1) - 仅文件所有者可删除文件
- # 设置特殊权限
- chmod 4755 file_name # 设置SUID
- chmod 2755 file_name # 设置SGID
- chmod 1755 directory_name # 设置Sticky Bit
复制代码
进程查看:
- # 查看当前进程
- ps aux
- ps -ef
- ps -eo pid,ppid,cmd,%mem,%cpu
- # 实时查看进程
- top
- htop
- # 查看树形进程结构
- pstree
复制代码
进程控制:
- # 终止进程
- kill PID
- kill -9 PID # 强制终止
- # 按名称终止进程
- pkill process_name
- killall process_name
- # 暂停进程
- kill -STOP PID
- # 继续进程
- kill -CONT PID
- # 改变进程优先级
- renice -n 10 -p PID
复制代码
后台任务管理:
- # 将命令放到后台执行
- command &
- # 查看后台任务
- jobs
- # 将后台任务调到前台
- fg %jobid
- # 将前台任务放到后台
- Ctrl+z
- bg %jobid
- # 脱离终端运行
- nohup command &
复制代码
RHEL 7及以后版本使用systemd作为系统和服务管理器:
systemd基本命令:
- # 启动服务
- systemctl start service_name
- # 停止服务
- systemctl stop service_name
- # 重启服务
- systemctl restart service_name
- # 重新加载服务配置
- systemctl reload service_name
- # 设置服务开机自启
- systemctl enable service_name
- # 禁用服务开机自启
- systemctl disable service_name
- # 查看服务状态
- systemctl status service_name
- # 查看所有服务状态
- systemctl list-units --type=service
- # 查看服务是否开机自启
- systemctl is-enabled service_name
复制代码
服务配置文件:
服务配置文件通常位于/etc/systemd/system/目录下,以.service为扩展名。以下是一个简单的服务配置示例:
- [Unit]
- Description=My Custom Service
- After=network.target
- [Service]
- Type=simple
- ExecStart=/usr/local/bin/my-service
- Restart=on-failure
- User=myuser
- Group=myuser
- [Install]
- WantedBy=multi-user.target
复制代码
创建或修改服务配置文件后,需要重新加载systemd配置:
三、网络配置与管理
网络接口命名:
RHEL 7及以后版本使用一致性网络设备命名,例如:
• enp1s0- 以太网接口
• wlp2s0- 无线接口
• lo- 回环接口
IP地址配置:
- # 查看网络接口信息
- ip addr show
- ifconfig
- # 查看路由表
- ip route show
- route -n
- # 查看网络连接
- ss -tuln
- netstat -tuln
复制代码
NetworkManager(RHEL 7/8/9):
- # 查看网络连接
- nmcli connection show
- # 查看活动连接
- nmcli connection show --active
- # 创建新的以太网连接
- nmcli connection add type ethernet con-name my-connection ifname enp1s0
- # 配置静态IP
- nmcli connection modify my-connection ipv4.addresses 192.168.1.100/24
- nmcli connection modify my-connection ipv4.gateway 192.168.1.1
- nmcli connection modify my-connection ipv4.dns "8.8.8.8 8.8.4.4"
- nmcli connection modify my-connection ipv4.method manual
- # 启用连接
- nmcli connection up my-connection
- # 禁用连接
- nmcli connection down my-connection
复制代码
传统网络配置(RHEL 6及之前):
网络配置文件位于/etc/sysconfig/network-scripts/目录下,例如ifcfg-enp1s0:
- # 配置文件示例
- DEVICE=enp1s0
- BOOTPROTO=static
- ONBOOT=yes
- IPADDR=192.168.1.100
- NETMASK=255.255.255.0
- GATEWAY=192.168.1.1
- DNS1=8.8.8.8
- DNS2=8.8.4.4
复制代码
重启网络服务:
- systemctl restart network
复制代码
防火墙配置(Firewalld):
- # 启动防火墙
- systemctl start firewalld
- systemctl enable firewalld
- # 查看防火墙状态
- firewall-cmd --state
- # 查看默认区域
- firewall-cmd --get-default-zone
- # 查看活动区域
- firewall-cmd --get-active-zones
- # 查看区域规则
- firewall-cmd --list-all --zone=public
- # 开放端口
- firewall-cmd --permanent --add-port=80/tcp
- firewall-cmd --reload
- # 开放服务
- firewall-cmd --permanent --add-service=http
- firewall-cmd --reload
- # 添加富规则
- firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" service name="ssh" accept'
- firewall-cmd --reload
复制代码
SELinux配置:
- # 查看SELinux状态
- sestatus
- getenforce
- # 设置SELinux模式
- setenforce 0 # 临时设置为Permissive模式
- setenforce 1 # 临时设置为Enforcing模式
- # 永久修改SELinux配置
- vi /etc/selinux/config
- # SELINUX=enforcing
- # 查看文件SELinux上下文
- ls -Z file_name
- # 修改文件SELinux上下文
- chcon -t httpd_sys_content_t /var/www/html/index.html
- # 恢复默认SELinux上下文
- restorecon -v /var/www/html/index.html
- # 查看SELinux布尔值
- getsebool -a | grep httpd
- # 设置SELinux布尔值
- setsebool -P httpd_can_network_connect on
复制代码
网络诊断工具:
- # 测试网络连通性
- ping host_or_ip
- # 跟踪网络路径
- traceroute host_or_ip
- tracepath host_or_ip
- # 查询DNS信息
- nslookup domain_name
- dig domain_name
- # 抓包分析
- tcpdump -i interface port 80
- tcpdump -i interface host 192.168.1.1
复制代码
网络日志分析:
- # 查看系统日志
- journalctl -u NetworkManager
- journalctl -u network
- # 查看防火墙日志
- journalctl -u firewalld
- # 查看SELinux日志
- journalctl -u auditd
- ausearch -m avc -ts recent
复制代码
四、存储管理
分区工具:
- # 使用fdisk进行分区
- fdisk /dev/sdb
- # 使用parted进行分区
- parted /dev/sdb
- # 查看分区表
- fdisk -l
- parted -l
复制代码
GPT分区表示例:
- # 创建GPT分区表
- parted /dev/sdb mklabel gpt
- # 创建主分区
- parted /dev/sdb mkpart primary ext4 1MiB 100%
- # 查看分区
- parted /dev/sdb print
- # 格式化分区
- mkfs.ext4 /dev/sdb1
复制代码
LVM基本概念:
• PV (Physical Volume) - 物理卷
• VG (Volume Group) - 卷组
• LV (Logical Volume) - 逻辑卷
LVM管理命令:
- # 创建物理卷
- pvcreate /dev/sdb1
- # 创建卷组
- vgcreate vg_name /dev/sdb1
- # 创建逻辑卷
- lvcreate -L 10G -n lv_name vg_name
- # 格式化逻辑卷
- mkfs.ext4 /dev/vg_name/lv_name
- # 挂载逻辑卷
- mkdir /mnt/data
- mount /dev/vg_name/lv_name /mnt/data
- # 查看LVM信息
- pvdisplay
- vgdisplay
- lvdisplay
- # 扩展逻辑卷
- lvextend -L +5G /dev/vg_name/lv_name
- resize2fs /dev/vg_name/lv_name # 扩展文件系统
- # 缩减逻辑卷
- resize2fs /dev/vg_name/lv_name 5G # 先缩减文件系统
- lvreduce -L 5G /dev/vg_name/lv_name
复制代码
文件系统类型:
• ext4 - 扩展文件系统,RHEL默认
• xfs - 高性能日志文件系统,适合大文件和大容量存储
• btrfs - 新一代写时复制文件系统,支持快照和压缩
文件系统操作:
- # 创建文件系统
- mkfs.ext4 /dev/sdb1
- mkfs.xfs /dev/sdb1
- # 检查文件系统
- fsck /dev/sdb1
- # 挂载文件系统
- mount /dev/sdb1 /mnt/data
- # 卸载文件系统
- umount /mnt/data
- # 查看挂载信息
- mount
- df -h
- # 永久挂载(编辑/etc/fstab)
- /dev/sdb1 /mnt/data ext4 defaults 0 0
复制代码
XFS文件系统管理:
- # 扩展XFS文件系统
- xfs_growfs /mnt/data
- # 查看XFS文件系统信息
- xfs_info /mnt/data
- # 修复XFS文件系统
- xfs_repair /dev/sdb1
复制代码
启用磁盘配额:
- # 安装配额工具
- dnf install quota
- # 编辑/etc/fstab,添加usrquota和grpquota选项
- /dev/sdb1 /home ext4 defaults,usrquota,grpquota 0 0
- # 重新挂载文件系统
- mount -o remount /home
- # 创建配额数据库
- quotacheck -cug /home
- # 启用配额
- quotaon /home
复制代码
管理用户配额:
- # 设置用户配额
- edquota username
- # 查看用户配额
- quota username
- repquota /home
- # 设置配额限制
- setquota username 1000M 1100M 0 0 /home
复制代码
五、安全管理
密码策略配置:
- # 安装PAM模块
- dnf install libpwquality
- # 配置密码策略
- vi /etc/security/pwquality.conf
- minlen = 12
- minclass = 3
- dcredit = -1
- ucredit = -1
- lcredit = -1
- ocredit = -1
- maxrepeat = 3
复制代码
账户锁定策略:
- # 配置账户锁定
- vi /etc/pam.d/system-auth
- auth required pam_tally2.so deny=5 unlock_time=900 onerr=fail
- # 查看锁定状态
- pam_tally2 --user username
- # 解锁账户
- pam_tally2 --user username --reset
复制代码
SSH安全配置:
- # 编辑SSH配置文件
- vi /etc/ssh/sshd_config
- # 禁用root登录
- PermitRootLogin no
- # 更改SSH端口
- Port 2222
- # 禁用密码认证,启用密钥认证
- PasswordAuthentication no
- PubkeyAuthentication yes
- # 限制允许登录的用户
- AllowUsers user1 user2
- AllowGroups sshusers
- # 重启SSH服务
- systemctl restart sshd
复制代码
SELinux上下文管理:
- # 查看文件SELinux上下文
- ls -Z /var/www/html/
- # 修改文件SELinux上下文
- chcon -R -t httpd_sys_content_t /var/www/html/
- # 恢复默认SELinux上下文
- restorecon -Rv /var/www/html/
- # 查看进程SELinux上下文
- ps -eZ
- # 查看端口SELinux上下文
- semanage port -l
复制代码
SELinux策略管理:
- # 安装SELinux管理工具
- dnf install setroubleshoot-server
- # 查看SELinux布尔值
- getsebool -a
- # 设置SELinux布尔值
- setsebool -P httpd_can_network_connect_db on
- # 查看SELinux日志
- sealert -a /var/log/audit/audit.log
- # 创建本地SELinux策略模块
- audit2allow -M mypolicy < /var/log/audit/audit.log
- semodule -i mypolicy.pp
复制代码
配置审计规则:
- # 安装审计工具
- dnf install audit
- # 启动审计服务
- systemctl start auditd
- systemctl enable auditd
- # 查看审计日志
- ausearch -m avc -ts recent
- aureport -x
- # 添加审计规则
- auditctl -w /etc/passwd -p wa -k passwd_changes
- auditctl -w /etc/sudoers -p wa -k sudoers_changes
- # 永久保存审计规则
- vi /etc/audit/rules.d/audit.rules
- -w /etc/passwd -p wa -k passwd_changes
- -w /etc/sudoers -p wa -k sudoers_changes
复制代码
OpenSCAP扫描:
- # 安装OpenSCAP
- dnf install openscap-scanner scap-security-guide
- # 执行安全扫描
- oscap xccdf eval --profile xccdf_org.ssgproject.content_profile_pci-dss --results scan-results.xml /usr/share/xml/scap/ssg/content/ssg-rhel9-ds.xml
- # 生成扫描报告
- oscap xccdf generate report scan-results.xml > scan-report.html
复制代码
Lynis安全审计:
- # 安装Lynis
- dnf install lynis
- # 执行安全审计
- lynis audit system
- # 查看审计结果
- cat /var/log/lynis-report.dat
复制代码
六、服务器配置
Apache HTTP服务器:
- # 安装Apache
- dnf install httpd
- # 启动Apache服务
- systemctl start httpd
- systemctl enable httpd
- # 配置防火墙
- firewall-cmd --permanent --add-service=http
- firewall-cmd --permanent --add-service=https
- firewall-cmd --reload
- # 创建网站目录
- mkdir -p /var/www/example.com
- echo "Welcome to example.com" > /var/www/example.com/index.html
- # 配置虚拟主机
- vi /etc/httpd/conf.d/example.com.conf
复制代码
Apache虚拟主机配置示例:
- <VirtualHost *:80>
- ServerName example.com
- ServerAlias www.example.com
- DocumentRoot /var/www/example.com
- ErrorLog /var/log/httpd/example.com-error.log
- CustomLog /var/log/httpd/example.com-access.log combined
- <Directory /var/www/example.com>
- Options Indexes FollowSymLinks
- AllowOverride All
- Require all granted
- </Directory>
- </VirtualHost>
复制代码
重启Apache服务:
Nginx Web服务器:
- # 安装Nginx
- dnf install nginx
- # 启动Nginx服务
- systemctl start nginx
- systemctl enable nginx
- # 配置防火墙
- firewall-cmd --permanent --add-service=http
- firewall-cmd --permanent --add-service=https
- firewall-cmd --reload
- # 配置虚拟主机
- vi /etc/nginx/conf.d/example.com.conf
复制代码
Nginx虚拟主机配置示例:
- server {
- listen 80;
- server_name example.com www.example.com;
- root /var/www/example.com;
- index index.html;
- location / {
- try_files $uri $uri/ =404;
- }
- error_log /var/log/nginx/example.com-error.log;
- access_log /var/log/nginx/example.com-access.log;
- }
复制代码
重启Nginx服务:
MariaDB/MySQL数据库:
- # 安装MariaDB
- dnf install mariadb-server
- # 启动MariaDB服务
- systemctl start mariadb
- systemctl enable mariadb
- # 安全初始化
- mysql_secure_installation
- # 登录MariaDB
- mysql -u root -p
- # 创建数据库和用户
- CREATE DATABASE mydb;
- CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'password';
- GRANT ALL PRIVILEGES ON mydb.* TO 'myuser'@'localhost';
- FLUSH PRIVILEGES;
- EXIT;
- # 配置防火墙
- firewall-cmd --permanent --add-service=mysql
- firewall-cmd --reload
复制代码
PostgreSQL数据库:
- # 安装PostgreSQL
- dnf install postgresql-server
- # 初始化数据库
- postgresql-setup --initdb
- # 启动PostgreSQL服务
- systemctl start postgresql
- systemctl enable postgresql
- # 设置postgres用户密码
- sudo -u postgres psql -c "ALTER USER postgres PASSWORD 'password';"
- # 创建数据库和用户
- sudo -u postgres createdb mydb
- sudo -u postgres psql -c "CREATE USER myuser WITH PASSWORD 'password';"
- sudo -u postgres psql -c "GRANT ALL PRIVILEGES ON DATABASE mydb TO myuser;"
- # 配置远程访问
- vi /var/lib/pgsql/data/pg_hba.conf
- # 添加: host all all 0.0.0.0/0 md5
- vi /var/lib/pgsql/data/postgresql.conf
- # 修改: listen_addresses = '*'
- # 重启PostgreSQL服务
- systemctl restart postgresql
- # 配置防火墙
- firewall-cmd --permanent --add-port=5432/tcp
- firewall-cmd --reload
复制代码
NFS服务器:
- # 安装NFS服务
- dnf install nfs-utils
- # 创建共享目录
- mkdir -p /data/share
- chmod 777 /data/share
- # 配置NFS共享
- vi /etc/exports
- /data/share 192.168.1.0/24(rw,sync,no_root_squash)
- # 启动NFS服务
- systemctl start nfs-server
- systemctl enable nfs-server
- # 配置防火墙
- firewall-cmd --permanent --add-service=nfs
- firewall-cmd --permanent --add-service=mountd
- firewall-cmd --permanent --add-service=rpc-bind
- firewall-cmd --reload
复制代码
Samba服务器:
- # 安装Samba
- dnf install samba samba-client
- # 创建共享目录
- mkdir -p /data/samba
- chmod 777 /data/samba
- # 配置Samba用户
- useradd sambauser
- smbpasswd -a sambauser
- # 配置Samba共享
- vi /etc/samba/smb.conf
复制代码
Samba配置示例:
- [global]
- workgroup = WORKGROUP
- security = user
- passdb backend = tdbsam
- printing = cups
- printcap name = cups
- load printers = yes
- cups options = raw
- [share]
- comment = Shared Directory
- path = /data/samba
- browseable = yes
- writable = yes
- valid users = sambauser
- create mask = 0664
- directory mask = 0775
复制代码
启动Samba服务:
- systemctl start smb
- systemctl start nmb
- systemctl enable smb
- systemctl enable nmb
- # 配置防火墙
- firewall-cmd --permanent --add-service=samba
- firewall-cmd --reload
复制代码
Postfix邮件服务器:
- # 安装Postfix
- dnf install postfix
- # 配置Postfix
- vi /etc/postfix/main.cf
复制代码
Postfix基本配置:
- myhostname = mail.example.com
- mydomain = example.com
- myorigin = $mydomain
- inet_interfaces = all
- inet_protocols = all
- mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
- mynetworks = 127.0.0.0/8, 192.168.1.0/24
- home_mailbox = Maildir/
复制代码
启动Postfix服务:
- systemctl start postfix
- systemctl enable postfix
- # 配置防火墙
- firewall-cmd --permanent --add-service=smtp
- firewall-cmd --reload
复制代码
Dovecot IMAP/POP3服务器:
- # 安装Dovecot
- dnf install dovecot
- # 配置Dovecot
- vi /etc/dovecot/dovecot.conf
复制代码
Dovecot基本配置:
- protocols = imap pop3
- listen = *
- mail_location = maildir:~/Maildir
复制代码
配置认证:
- vi /etc/dovecot/conf.d/10-auth.conf
- disable_plaintext_auth = no
- auth_mechanisms = plain login
复制代码
配置SSL/TLS:
- vi /etc/dovecot/conf.d/10-ssl.conf
- ssl = required
- ssl_cert = </etc/pki/dovecot/certs/dovecot.pem
- ssl_key = </etc/pki/dovecot/private/dovecot.pem
复制代码
启动Dovecot服务:
- systemctl start dovecot
- systemctl enable dovecot
- # 配置防火墙
- firewall-cmd --permanent --add-service=imap
- firewall-cmd --permanent --add-service=imaps
- firewall-cmd --permanent --add-service=pop3
- firewall-cmd --permanent --add-service=pop3s
- firewall-cmd --reload
复制代码
七、性能优化与监控
系统资源监控工具:
- # 实时系统监控
- top
- htop
- glances
- # CPU使用率监控
- mpstat 1
- vmstat 1
- # 内存使用监控
- free -h
- vmstat 1 -s
- # 磁盘I/O监控
- iostat -xz 1
- iotop
- # 网络流量监控
- iftop
- nload
- iptraf-ng
复制代码
系统日志分析:
- # 查看系统日志
- journalctl -xe
- journalctl -b -p err
- # 查看特定服务日志
- journalctl -u httpd -f
- # 查看内核日志
- dmesg | tail
- dmesg -T | grep error
复制代码
CPU性能优化:
- # 查看CPU信息
- lscpu
- cat /proc/cpuinfo
- # 设置CPU性能模式
- cpupower frequency-set -g performance
- # 查看CPU调度器
- cat /sys/block/sda/queue/scheduler
- echo deadline > /sys/block/sda/queue/scheduler
复制代码
内存性能优化:
- # 调整虚拟内存参数
- sysctl -w vm.swappiness=10
- sysctl -w vm.vfs_cache_pressure=50
- # 永久保存参数
- vi /etc/sysctl.conf
- vm.swappiness=10
- vm.vfs_cache_pressure=50
复制代码
文件系统性能优化:
- # 调整文件系统挂载选项
- mount -o remount,noatime,nodiratime /mount/point
- # 永久保存挂载选项
- vi /etc/fstab
- /dev/sdb1 /data ext4 defaults,noatime,nodiratime 0 0
复制代码
网络性能优化:
- # 调整网络参数
- sysctl -w net.core.rmem_max=16777216
- sysctl -w net.core.wmem_max=16777216
- sysctl -w net.ipv4.tcp_rmem="4096 87380 16777216"
- sysctl -w net.ipv4.tcp_wmem="4096 65536 16777216"
- sysctl -w net.core.netdev_max_backlog=30000
- sysctl -w net.ipv4.tcp_congestion_control=bbr
- # 永久保存网络参数
- vi /etc/sysctl.conf
- net.core.rmem_max=16777216
- net.core.wmem_max=16777216
- net.ipv4.tcp_rmem="4096 87380 16777216"
- net.ipv4.tcp_wmem="4096 65536 16777216"
- net.core.netdev_max_backlog=30000
- net.ipv4.tcp_congestion_control=bbr
复制代码
Nagios监控系统:
- # 安装Nagios
- dnf install nagios nagios-plugins-all
- # 配置Nagios
- vi /etc/nagios/nagios.cfg
- # 添加主机监控
- vi /etc/nagios/objects/hosts.cfg
- define host{
- use linux-server
- host_name server1
- alias Server 1
- address 192.168.1.100
- }
- # 添加服务监控
- vi /etc/nagios/objects/services.cfg
- define service{
- use generic-service
- host_name server1
- service_description PING
- check_command check_ping!100.0,20%!500.0,60%
- }
- # 启动Nagios服务
- systemctl start nagios
- systemctl enable nagios
- # 配置防火墙
- firewall-cmd --permanent --add-port=80/tcp
- firewall-cmd --reload
复制代码
Zabbix监控系统:
- # 安装Zabbix仓库
- rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/8/x86_64/zabbix-release-5.0-1.el8.noarch.rpm
- dnf clean all
- # 安装Zabbix服务器
- dnf install zabbix-server-mysql zabbix-web-mysql zabbix-apache-conf zabbix-agent
- # 创建Zabbix数据库
- mysql -u root -p
- CREATE DATABASE zabbix CHARACTER SET utf8 COLLATE utf8_bin;
- CREATE USER 'zabbix'@'localhost' IDENTIFIED BY 'password';
- GRANT ALL PRIVILEGES ON zabbix.* TO 'zabbix'@'localhost';
- FLUSH PRIVILEGES;
- EXIT;
- # 导入初始架构和数据
- zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix
- # 配置Zabbix服务器
- vi /etc/zabbix/zabbix_server.conf
- DBPassword=password
- # 配置PHP时区
- vi /etc/php-fpm.d/zabbix.conf
- php_value[date.timezone] = Asia/Shanghai
- # 启动Zabbix服务
- systemctl restart zabbix-server zabbix-agent httpd php-fpm
- systemctl enable zabbix-server zabbix-agent httpd php-fpm
- # 配置防火墙
- firewall-cmd --permanent --add-service=http
- firewall-cmd --permanent --add-port=10050/tcp
- firewall-cmd --permanent --add-port=10051/tcp
- firewall-cmd --reload
复制代码
八、自动化与脚本
基础Shell脚本:
- #!/bin/bash
- # 变量定义
- NAME="RHEL Administrator"
- VERSION="9.0"
- # 输出变量
- echo "Hello, $NAME!"
- echo "RHEL Version: $VERSION"
- # 条件语句
- if [ "$VERSION" = "9.0" ]; then
- echo "You are using the latest version of RHEL."
- else
- echo "You should consider upgrading to RHEL 9.0."
- fi
- # 循环语句
- for i in {1..5}; do
- echo "Count: $i"
- done
- # 函数定义
- check_service() {
- SERVICE=$1
- if systemctl is-active --quiet $SERVICE; then
- echo "$SERVICE is running."
- else
- echo "$SERVICE is not running."
- fi
- }
- # 调用函数
- check_service httpd
- check_service sshd
复制代码
实用Shell脚本示例:
- #!/bin/bash
- # 系统信息收集脚本
- LOG_FILE="/var/log/system_info.log"
- DATE=$(date +"%Y-%m-%d %H:%M:%S")
- echo "===== System Information Report =====" > $LOG_FILE
- echo "Date: $DATE" >> $LOG_FILE
- echo "" >> $LOG_FILE
- # 系统基本信息
- echo "=== System Info ===" >> $LOG_FILE
- echo "Hostname: $(hostname)" >> $LOG_FILE
- echo "Kernel: $(uname -r)" >> $LOG_FILE
- echo "OS: $(cat /etc/redhat-release)" >> $LOG_FILE
- echo "" >> $LOG_FILE
- # CPU信息
- echo "=== CPU Info ===" >> $LOG_FILE
- echo "CPU Model: $(grep 'model name' /proc/cpuinfo | head -1 | cut -d':' -f2 | xargs)" >> $LOG_FILE
- echo "CPU Cores: $(nproc)" >> $LOG_FILE
- echo "" >> $LOG_FILE
- # 内存信息
- echo "=== Memory Info ===" >> $LOG_FILE
- free -h >> $LOG_FILE
- echo "" >> $LOG_FILE
- # 磁盘信息
- echo "=== Disk Info ===" >> $LOG_FILE
- df -h >> $LOG_FILE
- echo "" >> $LOG_FILE
- # 网络信息
- echo "=== Network Info ===" >> $LOG_FILE
- ip addr show >> $LOG_FILE
- echo "" >> $LOG_FILE
- # 服务状态
- echo "=== Service Status ===" >> $LOG_FILE
- for service in httpd sshd mariadb; do
- if systemctl is-active --quiet $service; then
- echo "$service: Running" >> $LOG_FILE
- else
- echo "$service: Not Running" >> $LOG_FILE
- fi
- done
- echo "Report generated successfully: $LOG_FILE"
复制代码
安装Ansible:
- # 安装EPEL仓库
- dnf install epel-release
- # 安装Ansible
- dnf install ansible
- # 验证Ansible安装
- ansible --version
复制代码
Ansible配置:
- # 配置Ansible主机清单
- vi /etc/ansible/hosts
- [webservers]
- 192.168.1.101
- 192.168.1.102
- [databases]
- 192.168.1.201
- # 配置SSH免密登录
- ssh-keygen
- ssh-copy-id user@192.168.1.101
- ssh-copy-id user@192.168.1.102
- ssh-copy-id user@192.168.1.201
复制代码
Ansible Playbook示例:
- ---
- - name: Configure Web Servers
- hosts: webservers
- become: yes
- tasks:
- - name: Install Apache
- dnf:
- name: httpd
- state: present
-
- - name: Start Apache service
- service:
- name: httpd
- state: started
- enabled: yes
-
- - name: Open firewall port for HTTP
- firewalld:
- service: http
- permanent: yes
- state: enabled
-
- - name: Create website directory
- file:
- path: /var/www/example.com
- state: directory
- owner: apache
- group: apache
- mode: '0755'
-
- - name: Copy website content
- copy:
- src: files/index.html
- dest: /var/www/example.com/index.html
-
- - name: Configure virtual host
- template:
- src: templates/vhost.conf.j2
- dest: /etc/httpd/conf.d/example.com.conf
- notify:
- - Restart Apache
- handlers:
- - name: Restart Apache
- service:
- name: httpd
- state: restarted
复制代码
运行Ansible Playbook:
- # 语法检查
- ansible-playbook --syntax-check playbook.yml
- # 模拟运行
- ansible-playbook --check playbook.yml
- # 执行Playbook
- ansible-playbook playbook.yml
复制代码
九、高级主题
KVM虚拟化:
- # 安装KVM
- dnf install qemu-kvm libvirt libvirt-daemon-config libvirt-daemon-driver-qemu virt-manager virt-install virt-viewer
- # 启动libvirt服务
- systemctl start libvirtd
- systemctl enable libvirtd
- # 验证KVM支持
- lsmod | grep kvm
- virsh -c qemu:///system list
- # 创建虚拟机
- virt-install \
- --name rhel9-vm \
- --ram 2048 \
- --vcpus 2 \
- --disk path=/var/lib/libvirt/images/rhel9-vm.qcow2,size=20 \
- --cdrom /path/to/rhel9.iso \
- --os-variant rhel9.0 \
- --network network=default \
- --graphics spice
复制代码
虚拟机管理:
- # 列出虚拟机
- virsh list --all
- # 启动虚拟机
- virsh start rhel9-vm
- # 关闭虚拟机
- virsh shutdown rhel9-vm
- # 强制关闭虚拟机
- virsh destroy rhel9-vm
- # 暂停虚拟机
- virsh suspend rhel9-vm
- # 恢复虚拟机
- virsh resume rhel9-vm
- # 删除虚拟机
- virsh undefine rhel9-vm
- # 编辑虚拟机配置
- virsh edit rhel9-vm
复制代码
Podman容器管理:
- # 安装Podman
- dnf install podman
- # 拉取容器镜像
- podman pull ubi8/ubi
- # 运行容器
- podman run -it --name mycontainer ubi8/ubi /bin/bash
- # 列出容器
- podman ps -a
- # 启动/停止容器
- podman start mycontainer
- podman stop mycontainer
- # 删除容器
- podman rm mycontainer
- # 删除镜像
- podman rmi ubi8/ubi
复制代码
Docker兼容性:
- # 安装Docker兼容性插件
- dnf install podman-docker
- # 使用Docker命令
- docker pull ubi8/ubi
- docker run -it --name mycontainer ubi8/ubi /bin/bash
复制代码
Podman Pod管理:
- # 创建Pod
- podman pod create --name mypod -p 8080:80
- # 在Pod中运行容器
- podman run -d --pod mypod --name webserver nginx
- # 查看Pod信息
- podman pod inspect mypod
- # 停止Pod
- podman pod stop mypod
- # 启动Pod
- podman pod start mypod
- # 删除Pod
- podman pod rm mypod
复制代码
OpenStack部署:
- # 安装Packstack
- dnf install -y https://rdoproject.org/repos/rdo-release.el8.rpm
- dnf config-manager --enable powertools
- dnf install -y openstack-packstack
- # 部署OpenStack
- packstack --allinone
- # 访问OpenStack仪表板
- # http://<your_ip>/dashboard
- # 用户名: admin
- # 密码: 在/root/keystonerc_admin文件中
复制代码
AWS CLI集成:
- # 安装AWS CLI
- dnf install awscli
- # 配置AWS CLI
- aws configure
- # 创建EC2实例
- aws ec2 run-instances \
- --image-id ami-0abcdef1234567890 \
- --instance-type t2.micro \
- --key-name MyKeyPair \
- --security-group-ids sg-1234567890abcdef0 \
- --subnet-id subnet-12345678 \
- --tag-specifications 'ResourceType=instance,Tags=[{Key=Name,Value=MyInstance}]'
- # 列出EC2实例
- aws ec2 describe-instances
- # 停止EC2实例
- aws ec2 stop-instances --instance-ids i-1234567890abcdef0
- # 终止EC2实例
- aws ec2 terminate-instances --instance-ids i-1234567890abcdef0
复制代码
十、故障排除与最佳实践
启动问题排查:
- # 查看启动日志
- journalctl -b
- # 查看启动服务状态
- systemctl list-units --type=service --state=failed
- # 进入救援模式
- # 重启系统,在GRUB菜单中选择要启动的内核,按e编辑
- # 在linux16行末尾添加 rd.break
- # 按Ctrl+X启动
- # 修复root密码
- mount -o remount,rw /sysroot
- chroot /sysroot
- passwd root
- exit
- reboot
复制代码
网络问题排查:
- # 检查网络接口状态
- ip link show
- # 检查IP地址配置
- ip addr show
- # 检查路由表
- ip route show
- # 检查DNS解析
- nslookup example.com
- # 检查网络连接
- ping 8.8.8.8
- traceroute 8.8.8.8
- # 检查端口监听
- ss -tuln
- netstat -tuln
- # 检查防火墙规则
- firewall-cmd --list-all
- iptables -L -n
复制代码
磁盘空间问题排查:
- # 检查磁盘使用情况
- df -h
- # 查找大文件
- find / -type f -size +100M -exec ls -lh {} \;
- # 查找大目录
- du -h --max-depth=1 / | sort -hr
- # 清理软件包缓存
- dnf clean all
- # 删除旧日志
- journalctl --vacuum-size=100M
复制代码
CPU性能问题:
- # 查看CPU使用率
- top
- htop
- # 查看CPU负载
- uptime
- # 查看进程CPU使用情况
- ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%cpu
- # 查看CPU调度信息
- vmstat 1
- mpstat 1
复制代码
内存性能问题:
- # 查看内存使用情况
- free -h
- # 查看进程内存使用情况
- ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem
- # 查看内存分页活动
- vmstat 1
- # 查看内存映射
- cat /proc/meminfo
复制代码
磁盘I/O性能问题:
- # 查看磁盘I/O统计
- iostat -xz 1
- # 查看进程I/O使用情况
- iotop
- # 查看磁盘活动
- vmstat -d 1
复制代码
系统安全最佳实践:
1. 定期更新系统:dnf update
2. 使用强密码策略:vi /etc/security/pwquality.conf
minlen = 12
minclass = 3
3. 禁用不必要的服务:systemctl stop telnet.socket
systemctl disable telnet.socket
4. 配置防火墙:firewall-cmd --permanent --add-service=ssh
firewall-cmd --permanent --remove-service=telnet
firewall-cmd --reload
5. 启用SELinux:vi /etc/selinux/config
SELINUX=enforcing
定期更新系统:
使用强密码策略:
- vi /etc/security/pwquality.conf
- minlen = 12
- minclass = 3
复制代码
禁用不必要的服务:
- systemctl stop telnet.socket
- systemctl disable telnet.socket
复制代码
配置防火墙:
- firewall-cmd --permanent --add-service=ssh
- firewall-cmd --permanent --remove-service=telnet
- firewall-cmd --reload
复制代码
启用SELinux:
- vi /etc/selinux/config
- SELINUX=enforcing
复制代码
系统性能最佳实践:
1. 监控系统资源使用情况:top
vmstat 1
iostat -xz 1
2. 优化文件系统:vi /etc/fstab
/dev/sdb1 /data ext4 defaults,noatime,nodiratime 0 0
3. 调整内核参数:vi /etc/sysctl.conf
vm.swappiness=10
net.core.rmem_max=16777216
net.core.wmem_max=16777216
4. 使用性能分析工具:dnf install perf
perf top
监控系统资源使用情况:
优化文件系统:
- vi /etc/fstab
- /dev/sdb1 /data ext4 defaults,noatime,nodiratime 0 0
复制代码
调整内核参数:
- vi /etc/sysctl.conf
- vm.swappiness=10
- net.core.rmem_max=16777216
- net.core.wmem_max=16777216
复制代码
使用性能分析工具:
备份与恢复最佳实践:
1. 使用rsync进行增量备份:rsync -av --delete /data/ /backup/data/
2. 使用tar进行归档备份:tar -czvf /backup/data-$(date +%Y%m%d).tar.gz /data/
3. - 使用BorgBackup进行增量备份:borg init --encryption=repokey /backup/borg-repo
- borg create --stats /backup/borg-repo::data-$(date +%Y%m%d) /data/
复制代码 4. 定期测试恢复流程:# 恢复测试
mkdir /tmp/restore_test
cd /tmp/restore_test
tar -xzvf /backup/data-20230101.tar.gz
使用rsync进行增量备份:
- rsync -av --delete /data/ /backup/data/
复制代码
使用tar进行归档备份:
- tar -czvf /backup/data-$(date +%Y%m%d).tar.gz /data/
复制代码
使用BorgBackup进行增量备份:
- borg init --encryption=repokey /backup/borg-repo
- borg create --stats /backup/borg-repo::data-$(date +%Y%m%d) /data/
复制代码
定期测试恢复流程:
- # 恢复测试
- mkdir /tmp/restore_test
- cd /tmp/restore_test
- tar -xzvf /backup/data-20230101.tar.gz
复制代码
十一、总结与进阶学习路径
通过本教程的学习,您已经掌握了Red Hat Enterprise Linux从基础到高级的系统管理知识和实战应用技能。从基本的命令行操作、用户管理、文件系统管理,到高级的网络配置、安全管理、服务器配置、性能优化、自动化脚本和虚拟化技术,这些知识将帮助您成为一名专业的Linux系统管理员。
为了进一步提升您的专业技能,建议您按照以下路径继续学习:
1. 获取Red Hat认证:RHCSA (Red Hat Certified System Administrator)RHCE (Red Hat Certified Engineer)RHCA (Red Hat Certified Architect)
2. RHCSA (Red Hat Certified System Administrator)
3. RHCE (Red Hat Certified Engineer)
4. RHCA (Red Hat Certified Architect)
5. 深入学习特定领域:云计算与容器技术自动化运维与DevOps安全与合规高可用性与集群管理性能调优与故障排除
6. 云计算与容器技术
7. 自动化运维与DevOps
8. 安全与合规
9. 高可用性与集群管理
10. 性能调优与故障排除
11. 参与开源社区:Fedora项目CentOS项目其他开源项目
12. Fedora项目
13. CentOS项目
14. 其他开源项目
15. 持续学习与实践:关注技术博客和论坛参加技术会议和研讨会在实际项目中应用所学知识
16. 关注技术博客和论坛
17. 参加技术会议和研讨会
18. 在实际项目中应用所学知识
获取Red Hat认证:
• RHCSA (Red Hat Certified System Administrator)
• RHCE (Red Hat Certified Engineer)
• RHCA (Red Hat Certified Architect)
深入学习特定领域:
• 云计算与容器技术
• 自动化运维与DevOps
• 安全与合规
• 高可用性与集群管理
• 性能调优与故障排除
参与开源社区:
• Fedora项目
• CentOS项目
• 其他开源项目
持续学习与实践:
• 关注技术博客和论坛
• 参加技术会议和研讨会
• 在实际项目中应用所学知识
Red Hat Enterprise Linux作为企业级Linux系统的领导者,其应用范围不断扩大,从传统的服务器环境到云计算、容器化和微服务架构。通过不断学习和实践,您将能够在这个快速发展的技术领域中保持竞争力,成为一名真正的Linux高手。 |
|