简体中文 繁體中文 English Deutsch 한국 사람 بالعربية TÜRKÇE português คนไทย Français Japanese

站内搜索

搜索

活动公告

通知:本站资源由网友上传分享,如有违规等问题请到版务模块进行投诉,资源失效请在帖子内回复要求补档,会尽快处理!
10-23 09:31

深入浅出Fedora Linux服务器搭建实战教程从零开始一步步教你构建稳定高效的服务器环境涵盖系统安装网络配置安全防护等全方位技能提升

SunJu_FaceMall

3万

主题

2653

科技点

3万

积分

白金月票

碾压王

积分
32864

塔罗立华奏

发表于 2025-9-1 21:40:01 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
引言

Fedora Linux是一个由社区支持的发行版,也是Red Hat Enterprise Linux (RHEL)的上游测试平台。作为服务器操作系统,Fedora提供了最新的软件包、强大的安全特性和优秀的性能表现。本教程将带领读者从零开始,一步步构建一个稳定高效的Fedora Linux服务器环境,涵盖系统安装、网络配置、安全防护等全方位技能。

Fedora作为服务器操作系统具有以下优势:

• 提供最新的软件包和技术
• 强大的安全特性,如SELinux
• 活跃的社区支持
• 与RHEL兼容,便于未来迁移
• 优秀的包管理系统DNF

准备工作

系统要求

在开始安装Fedora Linux服务器之前,确保你的硬件满足以下最低要求:

• 64位架构的处理器(x86_64、ARM等)
• 至少2GB RAM(推荐4GB或更多)
• 至少20GB的硬盘空间(推荐40GB或更多)
• 网络连接(用于安装软件包和更新)

下载Fedora Server

访问Fedora官方网站下载最新的Fedora Server版本。你可以选择直接下载ISO文件或使用BitTorrent客户端下载以减轻服务器负担。
  1. # 使用wget下载Fedora Server ISO(以Fedora 38为例)
  2. wget https://download.fedoraproject.org/pub/fedora/linux/releases/38/Server/x86_64/iso/Fedora-Server-dvd-x86_64-38-1.6.iso
复制代码

制作安装介质

下载完成后,你需要将ISO文件写入USB闪存驱动器或DVD。以下是使用dd命令在Linux系统上制作USB安装介质的示例:
  1. # 首先确定USB设备名称(例如/dev/sdb)
  2. lsblk
  3. # 卸载USB设备(如果已挂载)
  4. sudo umount /dev/sdb*
  5. # 将ISO写入USB设备(注意:此操作将清除USB设备上的所有数据)
  6. sudo dd if=Fedora-Server-dvd-x86_64-38-1.6.iso of=/dev/sdb bs=4M status=progress
复制代码

在Windows系统上,你可以使用Rufus或balenaEtcher等工具制作USB安装介质。

系统安装

启动安装程序

1. 将制作好的安装介质插入服务器,并确保服务器设置为从该介质启动。
2. 启动服务器,你将看到Fedora的引导菜单。选择”Install Fedora 38”并按Enter键。
3. 等待安装程序加载,你将进入图形化安装界面。

语言和键盘设置

1. 在欢迎界面,选择你偏好的语言和键盘布局,然后点击”Continue”。
2. 确认设置后,你将进入”INSTALLATION SUMMARY”界面。

安装目的地

1. 点击”INSTALLATION DESTINATION”配置磁盘分区。
2. 你可以选择自动分区或手动分区。对于服务器,建议使用手动分区以获得更好的控制。
3. 在手动分区模式下,创建以下分区:/boot:500MB到1GB,用于存放引导文件swap:大小为RAM的1-2倍,用于虚拟内存/:剩余空间,用于根文件系统
4. /boot:500MB到1GB,用于存放引导文件
5. swap:大小为RAM的1-2倍,用于虚拟内存
6. /:剩余空间,用于根文件系统

• /boot:500MB到1GB,用于存放引导文件
• swap:大小为RAM的1-2倍,用于虚拟内存
• /:剩余空间,用于根文件系统

以下是使用LVM(逻辑卷管理)的分区方案示例:
  1. Device         Type      Size
  2. /dev/sda1      xfs       1G     (/boot)
  3. /dev/sda2      lvm       [剩余空间]
  4.   - vg-root    lv_root   20G    (/)
  5.   - vg-swap    lv_swap   8G     (swap)
  6.   - vg-data    lv_data   [剩余空间] (/data)
复制代码

网络和主机名

1. 点击”NETWORK & HOST NAME”配置网络设置。
2. 选择你的网络接口(如ens33或eth0),并将开关切换到”ON”位置。
3. 配置IP地址:对于DHCP:保持默认设置对于静态IP:点击”Configure”按钮,进入IPv4设置,选择”Manual”,然后输入IP地址、子网掩码、网关和DNS服务器
4. 对于DHCP:保持默认设置
5. 对于静态IP:点击”Configure”按钮,进入IPv4设置,选择”Manual”,然后输入IP地址、子网掩码、网关和DNS服务器

• 对于DHCP:保持默认设置
• 对于静态IP:点击”Configure”按钮,进入IPv4设置,选择”Manual”,然后输入IP地址、子网掩码、网关和DNS服务器

示例静态IP配置:

• IP地址:192.168.1.100
• 子网掩码:255.255.255.0
• 网关:192.168.1.1
• DNS服务器:8.8.8.8, 8.8.4.4

1. 设置主机名,例如”fedora-server.example.com”。

时区和日期时间

1. 点击”TIME & DATE”设置时区。
2. 在地图上点击你的位置或从下拉菜单中选择时区。
3. 确保日期和时间设置正确。

软件选择

1. 点击”SOFTWARE SELECTION”选择要安装的软件包。
2. 对于基础服务器,选择”Minimal Install”。
3. 如果你需要特定的服务器功能,可以选择”Web Server”、”Infrastructure Server”等预定义环境。

开始安装

1. 完成所有配置后,点击”Begin Installation”。
2. 在安装过程中,设置root密码和创建用户账户。
3. 等待安装完成,然后点击”Reboot”重启系统。

基础系统配置

首次登录和系统更新

1. 重启后,使用之前创建的用户账户登录系统。
2. 切换到root用户或使用sudo执行以下命令更新系统:
  1. # 切换到root用户
  2. su -
  3. # 或者使用sudo
  4. sudo -i
  5. # 更新系统
  6. dnf update -y
  7. # 如果有内核更新,重启系统
  8. reboot
复制代码

用户和权限管理
  1. # 创建新用户
  2. useradd -m -s /bin/bash username
  3. # 设置用户密码
  4. passwd username
  5. # 将用户添加到wheel组(允许使用sudo)
  6. usermod -aG wheel username
复制代码
  1. # 切换到新用户
  2. su - username
  3. # 创建.ssh目录
  4. mkdir -p ~/.ssh
  5. chmod 700 ~/.ssh
  6. # 创建authorized_keys文件
  7. touch ~/.ssh/authorized_keys
  8. chmod 600 ~/.ssh/authorized_keys
  9. # 将你的公钥添加到authorized_keys文件中
  10. echo "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ..." >> ~/.ssh/authorized_keys
复制代码

基本服务设置
  1. # 安装firewalld(如果未安装)
  2. dnf install firewalld -y
  3. # 启用并启动firewalld服务
  4. systemctl enable firewalld
  5. systemctl start firewalld
  6. # 检查firewalld状态
  7. systemctl status firewalld
  8. # 查看当前活动的区域和规则
  9. firewall-cmd --get-active-zones
  10. firewall-cmd --list-all
复制代码
  1. # 安装chrony时间同步服务
  2. dnf install chrony -y
  3. # 启用并启动chrony服务
  4. systemctl enable chronyd
  5. systemctl start chronyd
  6. # 检查时间同步状态
  7. chronyc tracking
复制代码

网络配置

静态IP配置

在Fedora中,网络配置主要通过NetworkManager管理。以下是配置静态IP的方法:
  1. # 查看可用的网络连接
  2. nmcli connection show
  3. # 修改网络连接(以ens33为例)
  4. nmcli connection modify ens33 ipv4.method manual ipv4.addresses 192.168.1.100/24 ipv4.gateway 192.168.1.1 ipv4.dns "8.8.8.8 8.8.4.4"
  5. # 重新启动网络连接
  6. nmcli connection down ens33 && nmcli connection up ens33
  7. # 验证IP配置
  8. ip addr show ens33
复制代码

你也可以直接编辑网络配置文件:
  1. # 编辑网络配置文件
  2. vi /etc/sysconfig/network-scripts/ifcfg-ens33
复制代码

配置文件内容示例:
  1. TYPE=Ethernet
  2. BOOTPROTO=none
  3. DEFROUTE=yes
  4. IPV4_FAILURE_FATAL=no
  5. IPV6INIT=yes
  6. IPV6_AUTOCONF=yes
  7. IPV6_DEFROUTE=yes
  8. IPV6_FAILURE_FATAL=no
  9. NAME=ens33
  10. UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
  11. DEVICE=ens33
  12. ONBOOT=yes
  13. IPADDR=192.168.1.100
  14. PREFIX=24
  15. GATEWAY=192.168.1.1
  16. DNS1=8.8.8.8
  17. DNS2=8.8.4.4
复制代码

保存文件后,重启网络服务:
  1. # 重启网络服务
  2. systemctl restart NetworkManager
  3. # 验证IP配置
  4. ip addr show ens33
复制代码

主机名和DNS配置
  1. # 查看当前主机名
  2. hostnamectl
  3. # 设置静态主机名
  4. hostnamectl set-hostname fedora-server.example.com
  5. # 验证主机名设置
  6. hostnamectl status
复制代码

编辑/etc/resolv.conf文件:
  1. # 编辑resolv.conf文件
  2. vi /etc/resolv.conf
复制代码

添加以下内容:
  1. nameserver 8.8.8.8
  2. nameserver 8.8.4.4
  3. search example.com
复制代码

网络诊断工具

安装和使用网络诊断工具:
  1. # 安装网络诊断工具
  2. dnf install -y net-tools traceroute bind-utils
  3. # 使用ping测试网络连通性
  4. ping google.com
  5. # 使用traceroute跟踪网络路径
  6. traceroute google.com
  7. # 使用nslookup查询DNS记录
  8. nslookup google.com
  9. # 使用dig查询DNS记录
  10. dig google.com
复制代码

安全防护

SELinux配置

SELinux(Security-Enhanced Linux)是Fedora中内置的强制访问控制(MAC)系统,可以显著提高系统安全性。
  1. # 检查SELinux当前状态
  2. sestatus
  3. # 查看SELinux模式
  4. getenforce
复制代码
  1. # 临时设置SELinux为Permissive模式(记录但不阻止违规操作)
  2. setenforce 0
  3. # 临时设置SELinux为Enforcing模式(强制执行策略)
  4. setenforce 1
  5. # 永久设置SELinux模式,编辑配置文件
  6. vi /etc/selinux/config
复制代码

在配置文件中,设置SELINUX=enforcing(推荐)、SELINUX=permissive或SELINUX=disabled。
  1. # 列出所有SELinux布尔值
  2. getsebool -a
  3. # 设置SELinux布尔值(例如允许HTTP服务器连接到网络)
  4. setsebool -P httpd_can_network_connect on
  5. # 查看文件或目录的SELinux上下文
  6. ls -Z /var/www/html
  7. # 修改文件或目录的SELinux上下文
  8. chcon -R -t httpd_sys_content_t /var/www/html
  9. # 恢复默认SELinux上下文
  10. restorecon -Rv /var/www/html
复制代码

SSH安全配置

SSH是远程管理Linux服务器的常用工具,但也是潜在的安全风险点。以下是加固SSH配置的方法:
  1. # 备份原始配置文件
  2. cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
  3. # 编辑SSH配置文件
  4. vi /etc/ssh/sshd_config
复制代码
  1. # 禁用root登录
  2. PermitRootLogin no
  3. # 仅允许密钥认证
  4. PasswordAuthentication no
  5. # 更改默认端口(例如改为2222)
  6. Port 2222
  7. # 限制允许登录的用户
  8. AllowUsers username1 username2
  9. # 设置空闲超时时间(秒)
  10. ClientAliveInterval 300
  11. ClientAliveCountMax 0
  12. # 禁用X11转发
  13. X11Forwarding no
  14. # 使用更安全的SSH协议
  15. Protocol 2
复制代码
  1. # 重启SSH服务
  2. systemctl restart sshd
  3. # 检查SSH服务状态
  4. systemctl status sshd
复制代码

防火墙配置

Firewalld是Fedora中的默认防火墙管理工具,它提供了动态管理的防火墙,支持网络/防火墙区域定义。
  1. # 查看默认区域
  2. firewall-cmd --get-default-zone
  3. # 查看所有可用区域
  4. firewall-cmd --get-zones
  5. # 查看当前活动的区域和规则
  6. firewall-cmd --get-active-zones
  7. firewall-cmd --list-all
  8. # 永久开放端口(例如开放HTTP和HTTPS端口)
  9. firewall-cmd --permanent --add-service=http
  10. firewall-cmd --permanent --add-service=https
  11. # 永久开放自定义端口(例如开放TCP端口8080)
  12. firewall-cmd --permanent --add-port=8080/tcp
  13. # 重新加载防火墙规则
  14. firewall-cmd --reload
  15. # 查看已开放的端口和服务
  16. firewall-cmd --list-ports
  17. firewall-cmd --list-services
复制代码
  1. # 创建自定义服务
  2. vi /etc/firewalld/services/custom-service.xml
复制代码

自定义服务文件示例:
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <service>
  3.   <short>Custom Service</short>
  4.   <description>This is a custom service.</description>
  5.   <port protocol="tcp" port="1234"/>
  6.   <port protocol="udp" port="5678"/>
  7. </service>
复制代码
  1. # 重新加载防火墙以加载新服务
  2. firewall-cmd --reload
  3. # 添加自定义服务
  4. firewall-cmd --permanent --add-service=custom-service
  5. # 创建富规则(例如允许特定IP访问特定端口)
  6. firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" service name="ssh" accept'
  7. # 屏蔽特定IP
  8. firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="203.0.113.4" reject'
  9. # 重新加载防火墙规则
  10. firewall-cmd --reload
复制代码

系统加固

Fail2Ban是一个入侵防御软件,可以保护服务器免受暴力攻击。
  1. # 安装Fail2Ban
  2. dnf install -y fail2ban
  3. # 启用并启动Fail2Ban服务
  4. systemctl enable fail2ban
  5. systemctl start fail2ban
  6. # 检查Fail2Ban状态
  7. systemctl status fail2ban
  8. # 创建jail.local配置文件
  9. cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
  10. vi /etc/fail2ban/jail.local
复制代码

配置文件示例:
  1. [DEFAULT]
  2. # 屏蔽时间(秒)
  3. bantime = 1h
  4. # 在多长时间内失败次数达到findtime则触发屏蔽
  5. findtime = 10m
  6. # 失败次数
  7. maxretry = 5
  8. [sshd]
  9. enabled = true
  10. port = 2222
  11. filter = sshd
  12. logpath = /var/log/secure
  13. maxretry = 3
  14. bantime = 1d
复制代码
  1. # 重启Fail2Ban服务
  2. systemctl restart fail2ban
  3. # 查看Fail2Ban状态
  4. fail2ban-client status
  5. fail2ban-client status sshd
复制代码
  1. # 安装dnf-automatic
  2. dnf install -y dnf-automatic
  3. # 配置dnf-automatic
  4. vi /etc/dnf/automatic.conf
复制代码

配置文件示例:
  1. [commands]
  2. # 下载并安装更新
  3. upgrade_type = default
  4. # 应用更新时是否重启系统
  5. reboot = when-needed
  6. [emitters]
  7. # 通过邮件发送更新通知
  8. system_name = fedora-server
  9. emit_via = email
  10. email_from = root@example.com
  11. email_to = admin@example.com
  12. email_host = localhost
  13. [command_email]
  14. # 邮件主题
  15. email_host = localhost
  16. [base]
  17. # 更新类型(默认、安全等)
  18. update_type = default
  19. # 运行随机延迟(分钟)
  20. random_sleep = 60
复制代码
  1. # 启用并启动dnf-automatic.timer
  2. systemctl enable --now dnf-automatic.timer
  3. # 检查定时器状态
  4. systemctl list-timers *dnf-*
复制代码

服务部署

Web服务器(Apache/Nginx)
  1. # 安装Apache HTTP服务器
  2. dnf install -y httpd
  3. # 启用并启动Apache服务
  4. systemctl enable httpd
  5. systemctl start httpd
  6. # 检查Apache服务状态
  7. systemctl status httpd
  8. # 配置防火墙允许HTTP和HTTPS流量
  9. firewall-cmd --permanent --add-service={http,https}
  10. firewall-cmd --reload
  11. # 创建测试页面
  12. echo "<html><body><h1>Welcome to Fedora Server!</h1></body></html>" > /var/www/html/index.html
  13. # 设置正确的SELinux上下文
  14. restorecon -Rv /var/www/html/
复制代码

Apache虚拟主机配置示例:
  1. # 创建虚拟主机配置文件
  2. vi /etc/httpd/conf.d/example.com.conf
复制代码

配置文件内容:
  1. <VirtualHost *:80>
  2.     ServerName example.com
  3.     ServerAlias www.example.com
  4.     DocumentRoot /var/www/example.com
  5.     ErrorLog /var/log/httpd/example.com-error.log
  6.     CustomLog /var/log/httpd/example.com-access.log combined
  7. </VirtualHost>
复制代码
  1. # 创建网站目录
  2. mkdir -p /var/www/example.com
  3. echo "<html><body><h1>Welcome to example.com!</h1></body></html>" > /var/www/example.com/index.html
  4. # 设置正确的权限和SELinux上下文
  5. chown -R apache:apache /var/www/example.com
  6. chmod -R 755 /var/www/example.com
  7. restorecon -Rv /var/www/example.com/
  8. # 重启Apache服务
  9. systemctl restart httpd
复制代码
  1. # 安装Nginx
  2. dnf install -y nginx
  3. # 启用并启动Nginx服务
  4. systemctl enable nginx
  5. systemctl start nginx
  6. # 检查Nginx服务状态
  7. systemctl status nginx
  8. # 配置防火墙允许HTTP和HTTPS流量
  9. firewall-cmd --permanent --add-service={http,https}
  10. firewall-cmd --reload
复制代码

Nginx虚拟主机配置示例:
  1. # 创建虚拟主机配置文件
  2. vi /etc/nginx/conf.d/example.com.conf
复制代码

配置文件内容:
  1. server {
  2.     listen 80;
  3.     server_name example.com www.example.com;
  4.     root /var/www/example.com;
  5.     index index.html;
  6.     location / {
  7.         try_files $uri $uri/ =404;
  8.     }
  9.     access_log /var/log/nginx/example.com-access.log;
  10.     error_log /var/log/nginx/example.com-error.log;
  11. }
复制代码
  1. # 创建网站目录
  2. mkdir -p /var/www/example.com
  3. echo "<html><body><h1>Welcome to example.com!</h1></body></html>" > /var/www/example.com/index.html
  4. # 设置正确的权限和SELinux上下文
  5. chown -R nginx:nginx /var/www/example.com
  6. chmod -R 755 /var/www/example.com
  7. restorecon -Rv /var/www/example.com/
  8. # 测试Nginx配置
  9. nginx -t
  10. # 重启Nginx服务
  11. systemctl restart nginx
复制代码

数据库服务器(MySQL/MariaDB/PostgreSQL)
  1. # 安装MariaDB服务器
  2. dnf install -y mariadb-server
  3. # 启用并启动MariaDB服务
  4. systemctl enable mariadb
  5. systemctl start mariadb
  6. # 检查MariaDB服务状态
  7. systemctl status mariadb
  8. # 运行安全安装脚本
  9. mysql_secure_installation
复制代码

安全安装脚本将引导你完成以下步骤:

• 设置root密码
• 删除匿名用户
• 禁止root远程登录
• 删除测试数据库
• 重新加载权限表

创建数据库和用户示例:
  1. # 登录MariaDB
  2. mysql -u root -p
  3. # 创建数据库
  4. CREATE DATABASE exampledb;
  5. # 创建用户并授予权限
  6. CREATE USER 'exampleuser'@'localhost' IDENTIFIED BY 'password';
  7. GRANT ALL PRIVILEGES ON exampledb.* TO 'exampleuser'@'localhost';
  8. FLUSH PRIVILEGES;
  9. # 退出MariaDB
  10. EXIT;
复制代码
  1. # 安装PostgreSQL服务器
  2. dnf install -y postgresql-server
  3. # 初始化数据库集群
  4. postgresql-setup --initdb
  5. # 启用并启动PostgreSQL服务
  6. systemctl enable postgresql
  7. systemctl start postgresql
  8. # 检查PostgreSQL服务状态
  9. systemctl status postgresql
复制代码

设置PostgreSQL密码和创建数据库:
  1. # 切换到postgres用户
  2. su - postgres
  3. # 创建数据库用户
  4. createuser --interactive
  5. # 创建数据库
  6. createdb exampledb
  7. # 设置用户密码
  8. psql -c "ALTER USER exampleuser WITH PASSWORD 'password';"
  9. # 退出postgres用户
  10. exit
复制代码

文件服务器(NFS/Samba)
  1. # 安装NFS服务器软件包
  2. dnf install -y nfs-utils
  3. # 创建共享目录
  4. mkdir -p /data/nfs-share
  5. chmod -R 777 /data/nfs-share
  6. # 配置NFS导出
  7. vi /etc/exports
复制代码

在exports文件中添加以下内容:
  1. /data/nfs-share 192.168.1.0/24(rw,sync,no_root_squash)
复制代码
  1. # 启用并启动NFS服务
  2. systemctl enable --now nfs-server rpcbind
  3. # 配置防火墙允许NFS流量
  4. firewall-cmd --permanent --add-service={nfs,nfs3,rpc-bind,mountd}
  5. firewall-cmd --reload
  6. # 导出共享目录
  7. exportfs -a
  8. # 查看当前导出的共享
  9. showmount -e localhost
复制代码
  1. # 安装Samba软件包
  2. dnf install -y samba samba-client samba-common
  3. # 创建共享目录
  4. mkdir -p /data/samba-share
  5. chmod -R 777 /data/samba-share
  6. # 配置Samba
  7. vi /etc/samba/smb.conf
复制代码

在smb.conf文件中添加以下内容:
  1. [global]
  2.    workgroup = WORKGROUP
  3.    server string = Fedora Samba Server
  4.    security = user
  5.    passdb backend = tdbsam
  6.    map to guest = bad user
  7. [share]
  8.    path = /data/samba-share
  9.    browsable = yes
  10.    writable = yes
  11.    guest ok = yes
  12.    read only = no
复制代码
  1. # 创建Samba用户
  2. useradd -m sambauser
  3. smbpasswd -a sambauser
  4. # 启用并启动Samba服务
  5. systemctl enable --now smb nmb
  6. # 配置防火墙允许Samba流量
  7. firewall-cmd --permanent --add-service={samba,samba-client}
  8. firewall-cmd --reload
  9. # 测试Samba配置
  10. testparm
复制代码

性能优化

系统监控
  1. # 安装系统监控工具
  2. dnf install -y htop iotop sysstat
  3. # 使用htop监控系统资源
  4. htop
  5. # 使用iotop监控磁盘I/O
  6. iotop
  7. # 启用sysstat服务以收集系统性能数据
  8. systemctl enable sysstat
  9. systemctl start sysstat
  10. # 使用sar查看系统活动报告
  11. sar -u  # CPU使用率
  12. sar -r  # 内存使用率
  13. sar -b  # I/O传输率
  14. sar -n DEV  # 网络统计
复制代码

Netdata是一个实时性能和健康监控工具:
  1. # 安装Netdata
  2. dnf install -y netdata
  3. # 启用并启动Netdata服务
  4. systemctl enable netdata
  5. systemctl start netdata
  6. # 配置防火墙允许Netdata流量
  7. firewall-cmd --permanent --add-port=19999/tcp
  8. firewall-cmd --reload
  9. # 访问Netdata Web界面
  10. # http://your-server-ip:19999
复制代码

资源管理
  1. # 查看内存使用情况
  2. free -h
  3. # 查看进程内存使用情况
  4. ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head
  5. # 清除页面缓存
  6. sync; echo 1 > /proc/sys/vm/drop_caches
  7. # 清除目录项和inode
  8. sync; echo 2 > /proc/sys/vm/drop_caches
  9. # 清除页面缓存、目录项和inode
  10. sync; echo 3 > /proc/sys/vm/drop_caches
复制代码
  1. # 查看磁盘使用情况
  2. df -h
  3. # 查看目录大小
  4. du -sh /path/to/directory
  5. # 查看inode使用情况
  6. df -i
  7. # 查找大文件
  8. find / -type f -size +100M -exec ls -lh {} \;
  9. # 清理旧日志
  10. journalctl --vacuum-size=100M
复制代码
  1. # 查看所有进程
  2. ps aux
  3. # 查找特定进程
  4. ps aux | grep process_name
  5. # 终止进程
  6. kill PID
  7. # 强制终止进程
  8. kill -9 PID
  9. # 调整进程优先级
  10. renice -n 10 -p PID
复制代码

性能调优
  1. # 查看当前内核参数
  2. sysctl -a
  3. # 临时修改内核参数
  4. sysctl -w net.core.rmem_max=16777216
  5. # 永久修改内核参数
  6. vi /etc/sysctl.d/99-custom.conf
复制代码

在配置文件中添加以下内容:
  1. # 网络性能优化
  2. net.core.rmem_max = 16777216
  3. net.core.wmem_max = 16777216
  4. net.ipv4.tcp_rmem = 4096 87380 16777216
  5. net.ipv4.tcp_wmem = 4096 65536 16777216
  6. net.ipv4.tcp_congestion_control = bbr
  7. # 文件系统优化
  8. vm.swappiness = 10
  9. vm.dirty_ratio = 60
  10. vm.dirty_background_ratio = 2
复制代码
  1. # 应用新的内核参数
  2. sysctl -p /etc/sysctl.d/99-custom.conf
复制代码
  1. # 查看当前I/O调度器
  2. cat /sys/block/sda/queue/scheduler
  3. # 临时更改I/O调度器
  4. echo deadline > /sys/block/sda/queue/scheduler
  5. # 永久更改I/O调度器(通过udev规则)
  6. vi /etc/udev/rules.d/60-io-scheduler.rules
复制代码

在规则文件中添加以下内容:
  1. ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="0", ATTR{queue/scheduler}="deadline"
  2. ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="1", ATTR{queue/scheduler}="cfq"
复制代码
  1. # 查看文件系统挂载选项
  2. mount | grep ext4
  3. # 临时重新挂载文件系统以优化性能
  4. mount -o remount,noatime,nodiratime,data=writeback /dev/sda1 /
  5. # 永久修改挂载选项
  6. vi /etc/fstab
复制代码

在fstab文件中修改挂载选项:
  1. /dev/sda1 / ext4 defaults,noatime,nodiratime,data=writeback 0 1
复制代码

备份与恢复

数据备份策略
  1. # 安装rsync
  2. dnf install -y rsync
  3. # 使用rsync备份目录
  4. rsync -avz --delete /path/to/source/ /path/to/destination/
  5. # 通过SSH远程备份
  6. rsync -avz -e ssh /path/to/source/ user@remote:/path/to/destination/
  7. # 创建备份脚本
  8. vi /usr/local/bin/backup.sh
复制代码

备份脚本示例:
  1. #!/bin/bash
  2. # 设置源目录和目标目录
  3. SOURCE_DIR="/etc /home /var/www"
  4. BACKUP_DIR="/backup"
  5. DATE=$(date +%Y%m%d)
  6. # 创建备份目录
  7. mkdir -p $BACKUP_DIR/$DATE
  8. # 执行备份
  9. rsync -avz --delete $SOURCE_DIR $BACKUP_DIR/$DATE/
  10. # 保留最近7天的备份
  11. find $BACKUP_DIR -type d -mtime +7 -exec rm -rf {} \;
  12. # 记录备份日志
  13. echo "Backup completed on $(date)" >> /var/log/backup.log
复制代码
  1. # 设置脚本可执行权限
  2. chmod +x /usr/local/bin/backup.sh
  3. # 添加到cron定时任务
  4. crontab -e
复制代码

在crontab中添加以下内容:
  1. # 每天凌晨2点执行备份
  2. 0 2 * * * /usr/local/bin/backup.sh
复制代码
  1. # 安装BorgBackup
  2. dnf install -y borgbackup
  3. # 初始化备份仓库
  4. export BORG_REPO="/backup/borg-repo"
  5. export BORG_PASSPHRASE="your-secure-passphrase"
  6. borg init --encryption=repokey $BORG_REPO
  7. # 创建备份
  8. borg create --stats --progress $BORG_REPO::etc-{now:%Y-%m-%d} /etc
  9. # 列出备份
  10. borg list $BORG_REPO
  11. # 提取备份
  12. borg extract $BORG_REPO::etc-2023-06-01
  13. # 清理旧备份
  14. borg prune --keep-daily=7 --keep-weekly=4 --keep-monthly=12 $BORG_REPO
复制代码

系统备份与恢复
  1. # 创建完整系统备份
  2. tar cvpzf backup-$(date +%Y%m%d).tar.gz --exclude=/backup-*.tar.gz --exclude=/proc --exclude=/tmp --exclude=/mnt --exclude=/dev --exclude=/sys --exclude=/run --exclude=/media --exclude=/var/cache --exclude=/var/tmp /
  3. # 从备份恢复系统
  4. tar xvpfz backup-20230601.tar.gz -C /
复制代码

Clonezilla是一个用于系统部署、备份和恢复的工具。你可以创建一个可启动的USB驱动器,然后使用它来备份和恢复整个系统。

1. 从Clonezilla官网下载ISO文件。
2. 使用之前介绍的方法创建可启动的USB驱动器。
3. 从USB驱动器启动服务器,按照Clonezilla向导进行系统备份或恢复。

数据库备份
  1. # 创建数据库备份
  2. mysqldump -u root -p --all-databases > alldatabases-$(date +%Y%m%d).sql
  3. # 创建特定数据库备份
  4. mysqldump -u root -p exampledb > exampledb-$(date +%Y%m%d).sql
  5. # 创建压缩的数据库备份
  6. mysqldump -u root -p exampledb | gzip > exampledb-$(date +%Y%m%d).sql.gz
  7. # 恢复数据库
  8. mysql -u root -p exampledb < exampledb-20230601.sql
  9. # 恢复压缩的数据库备份
  10. gunzip < exampledb-20230601.sql.gz | mysql -u root -p exampledb
复制代码
  1. # 创建数据库备份
  2. pg_dump -U postgres exampledb > exampledb-$(date +%Y%m%d).sql
  3. # 创建压缩的数据库备份
  4. pg_dump -U postgres exampledb | gzip > exampledb-$(date +%Y%m%d).sql.gz
  5. # 恢复数据库
  6. psql -U postgres exampledb < exampledb-20230601.sql
  7. # 恢复压缩的数据库备份
  8. gunzip < exampledb-20230601.sql.gz | psql -U postgres exampledb
复制代码

故障排除

系统启动问题
  1. # 查看系统启动日志
  2. journalctl -b
  3. # 查看内核消息
  4. dmesg
  5. # 查看特定服务的启动日志
  6. journalctl -u servicename
复制代码
  1. # 重新安装GRUB
  2. grub2-install /dev/sda
  3. # 重新生成GRUB配置
  4. grub2-mkconfig -o /boot/grub2/grub.cfg
复制代码

网络问题
  1. # 检查网络接口状态
  2. ip addr show
  3. # 检查路由表
  4. ip route show
  5. # 检查DNS解析
  6. nslookup example.com
  7. # 检查网络连接
  8. ping example.com
  9. # 跟踪网络路径
  10. traceroute example.com
复制代码
  1. # 检查NetworkManager状态
  2. systemctl status NetworkManager
  3. # 重启网络服务
  4. systemctl restart NetworkManager
  5. # 检查防火墙状态
  6. systemctl status firewalld
  7. # 检查特定端口是否开放
  8. firewall-cmd --list-ports
  9. firewall-cmd --list-services
复制代码

磁盘和文件系统问题
  1. # 检查磁盘使用情况
  2. df -h
  3. # 检查inode使用情况
  4. df -i
  5. # 查找大文件
  6. find / -type f -size +100M -exec ls -lh {} \;
复制代码
  1. # 检查文件系统
  2. fsck /dev/sda1
  3. # 修复文件系统(需要先卸载)
  4. umount /dev/sda1
  5. fsck -y /dev/sda1
复制代码

服务问题
  1. # 检查服务状态
  2. systemctl status servicename
  3. # 查看服务日志
  4. journalctl -u servicename
  5. # 重启服务
  6. systemctl restart servicename
复制代码

Apache常见问题:
  1. # 检查Apache配置
  2. httpd -t
  3. # 检查Apache端口占用
  4. netstat -tulnp | grep :80
  5. # 检查SELinux是否阻止Apache
  6. grep httpd /var/log/audit/audit.log | audit2why
复制代码

Nginx常见问题:
  1. # 检查Nginx配置
  2. nginx -t
  3. # 检查Nginx端口占用
  4. netstat -tulnp | grep :80
  5. # 检查SELinux是否阻止Nginx
  6. grep nginx /var/log/audit/audit.log | audit2why
复制代码

MariaDB/MySQL常见问题:
  1. # 检查MariaDB配置
  2. mysqld --help --verbose
  3. # 检查MariaDB错误日志
  4. tail -f /var/log/mariadb/mariadb.log
  5. # 检查MariaDB端口占用
  6. netstat -tulnp | grep :3306
复制代码

总结与进阶学习资源

总结

本教程详细介绍了如何从零开始搭建一个稳定高效的Fedora Linux服务器环境。我们涵盖了系统安装、网络配置、安全防护、服务部署、性能优化、备份与恢复以及故障排除等全方位技能。通过学习本教程,你应该能够:

• 成功安装和配置Fedora Linux服务器
• 进行基本的网络配置和安全防护
• 部署常见的网络服务,如Web服务器、数据库服务器和文件服务器
• 优化服务器性能并监控系统资源
• 实施有效的备份策略
• 解决常见的服务器问题

进阶学习资源

1. Fedora官方文档提供了关于Fedora各个方面的详细文档
2. 提供了关于Fedora各个方面的详细文档
3. Red Hat System AdministrationRed Hat官方的系统管理员认证课程
4. Red Hat官方的系统管理员认证课程
5. Linux Foundation提供各种Linux相关的培训和认证
6. 提供各种Linux相关的培训和认证
7. SELinux Wiki深入了解SELinux的配置和使用
8. 深入了解SELinux的配置和使用
9. Performance Co-Pilot (PCP)高级系统性能监控工具
10. 高级系统性能监控工具
11. Ansible自动化配置管理和部署工具
12. 自动化配置管理和部署工具
13. Podman容器管理工具,无需守护进程
14. 容器管理工具,无需守护进程
15. Fedora MagazineFedora相关的最新新闻和教程
16. Fedora相关的最新新闻和教程

Fedora官方文档

• 提供了关于Fedora各个方面的详细文档

Red Hat System Administration

• Red Hat官方的系统管理员认证课程

Linux Foundation

• 提供各种Linux相关的培训和认证

SELinux Wiki

• 深入了解SELinux的配置和使用

Performance Co-Pilot (PCP)

• 高级系统性能监控工具

Ansible

• 自动化配置管理和部署工具

Podman

• 容器管理工具,无需守护进程

Fedora Magazine

• Fedora相关的最新新闻和教程

通过不断学习和实践,你将能够成为一名优秀的Linux系统管理员,能够构建和维护稳定高效的服务器环境。祝你在Fedora Linux服务器管理的道路上取得成功!
「七転び八起き(ななころびやおき)」
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

手机版|联系我们|小黑屋|TG频道|RSS |网站地图

Powered by Pixtech

© 2025-2026 Pixtech Team.

>