|
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
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客户端下载以减轻服务器负担。
- # 使用wget下载Fedora Server ISO(以Fedora 38为例)
- 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安装介质的示例:
- # 首先确定USB设备名称(例如/dev/sdb)
- lsblk
- # 卸载USB设备(如果已挂载)
- sudo umount /dev/sdb*
- # 将ISO写入USB设备(注意:此操作将清除USB设备上的所有数据)
- 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(逻辑卷管理)的分区方案示例:
- Device Type Size
- /dev/sda1 xfs 1G (/boot)
- /dev/sda2 lvm [剩余空间]
- - vg-root lv_root 20G (/)
- - vg-swap lv_swap 8G (swap)
- - 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执行以下命令更新系统:
- # 切换到root用户
- su -
- # 或者使用sudo
- sudo -i
- # 更新系统
- dnf update -y
- # 如果有内核更新,重启系统
- reboot
复制代码
用户和权限管理
- # 创建新用户
- useradd -m -s /bin/bash username
- # 设置用户密码
- passwd username
- # 将用户添加到wheel组(允许使用sudo)
- usermod -aG wheel username
复制代码- # 切换到新用户
- su - username
- # 创建.ssh目录
- mkdir -p ~/.ssh
- chmod 700 ~/.ssh
- # 创建authorized_keys文件
- touch ~/.ssh/authorized_keys
- chmod 600 ~/.ssh/authorized_keys
- # 将你的公钥添加到authorized_keys文件中
- echo "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ..." >> ~/.ssh/authorized_keys
复制代码
基本服务设置
- # 安装firewalld(如果未安装)
- dnf install firewalld -y
- # 启用并启动firewalld服务
- systemctl enable firewalld
- systemctl start firewalld
- # 检查firewalld状态
- systemctl status firewalld
- # 查看当前活动的区域和规则
- firewall-cmd --get-active-zones
- firewall-cmd --list-all
复制代码- # 安装chrony时间同步服务
- dnf install chrony -y
- # 启用并启动chrony服务
- systemctl enable chronyd
- systemctl start chronyd
- # 检查时间同步状态
- chronyc tracking
复制代码
网络配置
静态IP配置
在Fedora中,网络配置主要通过NetworkManager管理。以下是配置静态IP的方法:
- # 查看可用的网络连接
- nmcli connection show
- # 修改网络连接(以ens33为例)
- 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"
- # 重新启动网络连接
- nmcli connection down ens33 && nmcli connection up ens33
- # 验证IP配置
- ip addr show ens33
复制代码
你也可以直接编辑网络配置文件:
- # 编辑网络配置文件
- vi /etc/sysconfig/network-scripts/ifcfg-ens33
复制代码
配置文件内容示例:
- TYPE=Ethernet
- BOOTPROTO=none
- DEFROUTE=yes
- IPV4_FAILURE_FATAL=no
- IPV6INIT=yes
- IPV6_AUTOCONF=yes
- IPV6_DEFROUTE=yes
- IPV6_FAILURE_FATAL=no
- NAME=ens33
- UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
- DEVICE=ens33
- ONBOOT=yes
- IPADDR=192.168.1.100
- PREFIX=24
- GATEWAY=192.168.1.1
- DNS1=8.8.8.8
- DNS2=8.8.4.4
复制代码
保存文件后,重启网络服务:
- # 重启网络服务
- systemctl restart NetworkManager
- # 验证IP配置
- ip addr show ens33
复制代码
主机名和DNS配置
- # 查看当前主机名
- hostnamectl
- # 设置静态主机名
- hostnamectl set-hostname fedora-server.example.com
- # 验证主机名设置
- hostnamectl status
复制代码
编辑/etc/resolv.conf文件:
- # 编辑resolv.conf文件
- vi /etc/resolv.conf
复制代码
添加以下内容:
- nameserver 8.8.8.8
- nameserver 8.8.4.4
- search example.com
复制代码
网络诊断工具
安装和使用网络诊断工具:
- # 安装网络诊断工具
- dnf install -y net-tools traceroute bind-utils
- # 使用ping测试网络连通性
- ping google.com
- # 使用traceroute跟踪网络路径
- traceroute google.com
- # 使用nslookup查询DNS记录
- nslookup google.com
- # 使用dig查询DNS记录
- dig google.com
复制代码
安全防护
SELinux配置
SELinux(Security-Enhanced Linux)是Fedora中内置的强制访问控制(MAC)系统,可以显著提高系统安全性。
- # 检查SELinux当前状态
- sestatus
- # 查看SELinux模式
- getenforce
复制代码- # 临时设置SELinux为Permissive模式(记录但不阻止违规操作)
- setenforce 0
- # 临时设置SELinux为Enforcing模式(强制执行策略)
- setenforce 1
- # 永久设置SELinux模式,编辑配置文件
- vi /etc/selinux/config
复制代码
在配置文件中,设置SELINUX=enforcing(推荐)、SELINUX=permissive或SELINUX=disabled。
- # 列出所有SELinux布尔值
- getsebool -a
- # 设置SELinux布尔值(例如允许HTTP服务器连接到网络)
- setsebool -P httpd_can_network_connect on
- # 查看文件或目录的SELinux上下文
- ls -Z /var/www/html
- # 修改文件或目录的SELinux上下文
- chcon -R -t httpd_sys_content_t /var/www/html
- # 恢复默认SELinux上下文
- restorecon -Rv /var/www/html
复制代码
SSH安全配置
SSH是远程管理Linux服务器的常用工具,但也是潜在的安全风险点。以下是加固SSH配置的方法:
- # 备份原始配置文件
- cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
- # 编辑SSH配置文件
- vi /etc/ssh/sshd_config
复制代码- # 禁用root登录
- PermitRootLogin no
- # 仅允许密钥认证
- PasswordAuthentication no
- # 更改默认端口(例如改为2222)
- Port 2222
- # 限制允许登录的用户
- AllowUsers username1 username2
- # 设置空闲超时时间(秒)
- ClientAliveInterval 300
- ClientAliveCountMax 0
- # 禁用X11转发
- X11Forwarding no
- # 使用更安全的SSH协议
- Protocol 2
复制代码- # 重启SSH服务
- systemctl restart sshd
- # 检查SSH服务状态
- systemctl status sshd
复制代码
防火墙配置
Firewalld是Fedora中的默认防火墙管理工具,它提供了动态管理的防火墙,支持网络/防火墙区域定义。
- # 查看默认区域
- firewall-cmd --get-default-zone
- # 查看所有可用区域
- firewall-cmd --get-zones
- # 查看当前活动的区域和规则
- firewall-cmd --get-active-zones
- firewall-cmd --list-all
- # 永久开放端口(例如开放HTTP和HTTPS端口)
- firewall-cmd --permanent --add-service=http
- firewall-cmd --permanent --add-service=https
- # 永久开放自定义端口(例如开放TCP端口8080)
- firewall-cmd --permanent --add-port=8080/tcp
- # 重新加载防火墙规则
- firewall-cmd --reload
- # 查看已开放的端口和服务
- firewall-cmd --list-ports
- firewall-cmd --list-services
复制代码- # 创建自定义服务
- vi /etc/firewalld/services/custom-service.xml
复制代码
自定义服务文件示例:
- <?xml version="1.0" encoding="utf-8"?>
- <service>
- <short>Custom Service</short>
- <description>This is a custom service.</description>
- <port protocol="tcp" port="1234"/>
- <port protocol="udp" port="5678"/>
- </service>
复制代码- # 重新加载防火墙以加载新服务
- firewall-cmd --reload
- # 添加自定义服务
- firewall-cmd --permanent --add-service=custom-service
- # 创建富规则(例如允许特定IP访问特定端口)
- firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" service name="ssh" accept'
- # 屏蔽特定IP
- firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="203.0.113.4" reject'
- # 重新加载防火墙规则
- firewall-cmd --reload
复制代码
系统加固
Fail2Ban是一个入侵防御软件,可以保护服务器免受暴力攻击。
- # 安装Fail2Ban
- dnf install -y fail2ban
- # 启用并启动Fail2Ban服务
- systemctl enable fail2ban
- systemctl start fail2ban
- # 检查Fail2Ban状态
- systemctl status fail2ban
- # 创建jail.local配置文件
- cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
- vi /etc/fail2ban/jail.local
复制代码
配置文件示例:
- [DEFAULT]
- # 屏蔽时间(秒)
- bantime = 1h
- # 在多长时间内失败次数达到findtime则触发屏蔽
- findtime = 10m
- # 失败次数
- maxretry = 5
- [sshd]
- enabled = true
- port = 2222
- filter = sshd
- logpath = /var/log/secure
- maxretry = 3
- bantime = 1d
复制代码- # 重启Fail2Ban服务
- systemctl restart fail2ban
- # 查看Fail2Ban状态
- fail2ban-client status
- fail2ban-client status sshd
复制代码- # 安装dnf-automatic
- dnf install -y dnf-automatic
- # 配置dnf-automatic
- vi /etc/dnf/automatic.conf
复制代码
配置文件示例:
- [commands]
- # 下载并安装更新
- upgrade_type = default
- # 应用更新时是否重启系统
- reboot = when-needed
- [emitters]
- # 通过邮件发送更新通知
- system_name = fedora-server
- emit_via = email
- email_from = root@example.com
- email_to = admin@example.com
- email_host = localhost
- [command_email]
- # 邮件主题
- email_host = localhost
- [base]
- # 更新类型(默认、安全等)
- update_type = default
- # 运行随机延迟(分钟)
- random_sleep = 60
复制代码- # 启用并启动dnf-automatic.timer
- systemctl enable --now dnf-automatic.timer
- # 检查定时器状态
- systemctl list-timers *dnf-*
复制代码
服务部署
Web服务器(Apache/Nginx)
- # 安装Apache HTTP服务器
- dnf install -y httpd
- # 启用并启动Apache服务
- systemctl enable httpd
- systemctl start httpd
- # 检查Apache服务状态
- systemctl status httpd
- # 配置防火墙允许HTTP和HTTPS流量
- firewall-cmd --permanent --add-service={http,https}
- firewall-cmd --reload
- # 创建测试页面
- echo "<html><body><h1>Welcome to Fedora Server!</h1></body></html>" > /var/www/html/index.html
- # 设置正确的SELinux上下文
- restorecon -Rv /var/www/html/
复制代码
Apache虚拟主机配置示例:
- # 创建虚拟主机配置文件
- vi /etc/httpd/conf.d/example.com.conf
复制代码
配置文件内容:
- <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
- </VirtualHost>
复制代码- # 创建网站目录
- mkdir -p /var/www/example.com
- echo "<html><body><h1>Welcome to example.com!</h1></body></html>" > /var/www/example.com/index.html
- # 设置正确的权限和SELinux上下文
- chown -R apache:apache /var/www/example.com
- chmod -R 755 /var/www/example.com
- restorecon -Rv /var/www/example.com/
- # 重启Apache服务
- systemctl restart httpd
复制代码- # 安装Nginx
- dnf install -y nginx
- # 启用并启动Nginx服务
- systemctl enable nginx
- systemctl start nginx
- # 检查Nginx服务状态
- systemctl status nginx
- # 配置防火墙允许HTTP和HTTPS流量
- firewall-cmd --permanent --add-service={http,https}
- firewall-cmd --reload
复制代码
Nginx虚拟主机配置示例:
- # 创建虚拟主机配置文件
- vi /etc/nginx/conf.d/example.com.conf
复制代码
配置文件内容:
- server {
- listen 80;
- server_name example.com www.example.com;
- root /var/www/example.com;
- index index.html;
- location / {
- try_files $uri $uri/ =404;
- }
- access_log /var/log/nginx/example.com-access.log;
- error_log /var/log/nginx/example.com-error.log;
- }
复制代码- # 创建网站目录
- mkdir -p /var/www/example.com
- echo "<html><body><h1>Welcome to example.com!</h1></body></html>" > /var/www/example.com/index.html
- # 设置正确的权限和SELinux上下文
- chown -R nginx:nginx /var/www/example.com
- chmod -R 755 /var/www/example.com
- restorecon -Rv /var/www/example.com/
- # 测试Nginx配置
- nginx -t
- # 重启Nginx服务
- systemctl restart nginx
复制代码
数据库服务器(MySQL/MariaDB/PostgreSQL)
- # 安装MariaDB服务器
- dnf install -y mariadb-server
- # 启用并启动MariaDB服务
- systemctl enable mariadb
- systemctl start mariadb
- # 检查MariaDB服务状态
- systemctl status mariadb
- # 运行安全安装脚本
- mysql_secure_installation
复制代码
安全安装脚本将引导你完成以下步骤:
• 设置root密码
• 删除匿名用户
• 禁止root远程登录
• 删除测试数据库
• 重新加载权限表
创建数据库和用户示例:
- # 登录MariaDB
- mysql -u root -p
- # 创建数据库
- CREATE DATABASE exampledb;
- # 创建用户并授予权限
- CREATE USER 'exampleuser'@'localhost' IDENTIFIED BY 'password';
- GRANT ALL PRIVILEGES ON exampledb.* TO 'exampleuser'@'localhost';
- FLUSH PRIVILEGES;
- # 退出MariaDB
- EXIT;
复制代码- # 安装PostgreSQL服务器
- dnf install -y postgresql-server
- # 初始化数据库集群
- postgresql-setup --initdb
- # 启用并启动PostgreSQL服务
- systemctl enable postgresql
- systemctl start postgresql
- # 检查PostgreSQL服务状态
- systemctl status postgresql
复制代码
设置PostgreSQL密码和创建数据库:
- # 切换到postgres用户
- su - postgres
- # 创建数据库用户
- createuser --interactive
- # 创建数据库
- createdb exampledb
- # 设置用户密码
- psql -c "ALTER USER exampleuser WITH PASSWORD 'password';"
- # 退出postgres用户
- exit
复制代码
文件服务器(NFS/Samba)
- # 安装NFS服务器软件包
- dnf install -y nfs-utils
- # 创建共享目录
- mkdir -p /data/nfs-share
- chmod -R 777 /data/nfs-share
- # 配置NFS导出
- vi /etc/exports
复制代码
在exports文件中添加以下内容:
- /data/nfs-share 192.168.1.0/24(rw,sync,no_root_squash)
复制代码- # 启用并启动NFS服务
- systemctl enable --now nfs-server rpcbind
- # 配置防火墙允许NFS流量
- firewall-cmd --permanent --add-service={nfs,nfs3,rpc-bind,mountd}
- firewall-cmd --reload
- # 导出共享目录
- exportfs -a
- # 查看当前导出的共享
- showmount -e localhost
复制代码- # 安装Samba软件包
- dnf install -y samba samba-client samba-common
- # 创建共享目录
- mkdir -p /data/samba-share
- chmod -R 777 /data/samba-share
- # 配置Samba
- vi /etc/samba/smb.conf
复制代码
在smb.conf文件中添加以下内容:
- [global]
- workgroup = WORKGROUP
- server string = Fedora Samba Server
- security = user
- passdb backend = tdbsam
- map to guest = bad user
- [share]
- path = /data/samba-share
- browsable = yes
- writable = yes
- guest ok = yes
- read only = no
复制代码- # 创建Samba用户
- useradd -m sambauser
- smbpasswd -a sambauser
- # 启用并启动Samba服务
- systemctl enable --now smb nmb
- # 配置防火墙允许Samba流量
- firewall-cmd --permanent --add-service={samba,samba-client}
- firewall-cmd --reload
- # 测试Samba配置
- testparm
复制代码
性能优化
系统监控
- # 安装系统监控工具
- dnf install -y htop iotop sysstat
- # 使用htop监控系统资源
- htop
- # 使用iotop监控磁盘I/O
- iotop
- # 启用sysstat服务以收集系统性能数据
- systemctl enable sysstat
- systemctl start sysstat
- # 使用sar查看系统活动报告
- sar -u # CPU使用率
- sar -r # 内存使用率
- sar -b # I/O传输率
- sar -n DEV # 网络统计
复制代码
Netdata是一个实时性能和健康监控工具:
- # 安装Netdata
- dnf install -y netdata
- # 启用并启动Netdata服务
- systemctl enable netdata
- systemctl start netdata
- # 配置防火墙允许Netdata流量
- firewall-cmd --permanent --add-port=19999/tcp
- firewall-cmd --reload
- # 访问Netdata Web界面
- # http://your-server-ip:19999
复制代码
资源管理
- # 查看内存使用情况
- free -h
- # 查看进程内存使用情况
- ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head
- # 清除页面缓存
- sync; echo 1 > /proc/sys/vm/drop_caches
- # 清除目录项和inode
- sync; echo 2 > /proc/sys/vm/drop_caches
- # 清除页面缓存、目录项和inode
- sync; echo 3 > /proc/sys/vm/drop_caches
复制代码- # 查看磁盘使用情况
- df -h
- # 查看目录大小
- du -sh /path/to/directory
- # 查看inode使用情况
- df -i
- # 查找大文件
- find / -type f -size +100M -exec ls -lh {} \;
- # 清理旧日志
- journalctl --vacuum-size=100M
复制代码- # 查看所有进程
- ps aux
- # 查找特定进程
- ps aux | grep process_name
- # 终止进程
- kill PID
- # 强制终止进程
- kill -9 PID
- # 调整进程优先级
- renice -n 10 -p PID
复制代码
性能调优
- # 查看当前内核参数
- sysctl -a
- # 临时修改内核参数
- sysctl -w net.core.rmem_max=16777216
- # 永久修改内核参数
- vi /etc/sysctl.d/99-custom.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.ipv4.tcp_congestion_control = bbr
- # 文件系统优化
- vm.swappiness = 10
- vm.dirty_ratio = 60
- vm.dirty_background_ratio = 2
复制代码- # 应用新的内核参数
- sysctl -p /etc/sysctl.d/99-custom.conf
复制代码- # 查看当前I/O调度器
- cat /sys/block/sda/queue/scheduler
- # 临时更改I/O调度器
- echo deadline > /sys/block/sda/queue/scheduler
- # 永久更改I/O调度器(通过udev规则)
- vi /etc/udev/rules.d/60-io-scheduler.rules
复制代码
在规则文件中添加以下内容:
- ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="0", ATTR{queue/scheduler}="deadline"
- ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="1", ATTR{queue/scheduler}="cfq"
复制代码- # 查看文件系统挂载选项
- mount | grep ext4
- # 临时重新挂载文件系统以优化性能
- mount -o remount,noatime,nodiratime,data=writeback /dev/sda1 /
- # 永久修改挂载选项
- vi /etc/fstab
复制代码
在fstab文件中修改挂载选项:
- /dev/sda1 / ext4 defaults,noatime,nodiratime,data=writeback 0 1
复制代码
备份与恢复
数据备份策略
- # 安装rsync
- dnf install -y rsync
- # 使用rsync备份目录
- rsync -avz --delete /path/to/source/ /path/to/destination/
- # 通过SSH远程备份
- rsync -avz -e ssh /path/to/source/ user@remote:/path/to/destination/
- # 创建备份脚本
- vi /usr/local/bin/backup.sh
复制代码
备份脚本示例:
- #!/bin/bash
- # 设置源目录和目标目录
- SOURCE_DIR="/etc /home /var/www"
- BACKUP_DIR="/backup"
- DATE=$(date +%Y%m%d)
- # 创建备份目录
- mkdir -p $BACKUP_DIR/$DATE
- # 执行备份
- rsync -avz --delete $SOURCE_DIR $BACKUP_DIR/$DATE/
- # 保留最近7天的备份
- find $BACKUP_DIR -type d -mtime +7 -exec rm -rf {} \;
- # 记录备份日志
- echo "Backup completed on $(date)" >> /var/log/backup.log
复制代码- # 设置脚本可执行权限
- chmod +x /usr/local/bin/backup.sh
- # 添加到cron定时任务
- crontab -e
复制代码
在crontab中添加以下内容:
- # 每天凌晨2点执行备份
- 0 2 * * * /usr/local/bin/backup.sh
复制代码- # 安装BorgBackup
- dnf install -y borgbackup
- # 初始化备份仓库
- export BORG_REPO="/backup/borg-repo"
- export BORG_PASSPHRASE="your-secure-passphrase"
- borg init --encryption=repokey $BORG_REPO
- # 创建备份
- borg create --stats --progress $BORG_REPO::etc-{now:%Y-%m-%d} /etc
- # 列出备份
- borg list $BORG_REPO
- # 提取备份
- borg extract $BORG_REPO::etc-2023-06-01
- # 清理旧备份
- borg prune --keep-daily=7 --keep-weekly=4 --keep-monthly=12 $BORG_REPO
复制代码
系统备份与恢复
- # 创建完整系统备份
- 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 /
- # 从备份恢复系统
- tar xvpfz backup-20230601.tar.gz -C /
复制代码
Clonezilla是一个用于系统部署、备份和恢复的工具。你可以创建一个可启动的USB驱动器,然后使用它来备份和恢复整个系统。
1. 从Clonezilla官网下载ISO文件。
2. 使用之前介绍的方法创建可启动的USB驱动器。
3. 从USB驱动器启动服务器,按照Clonezilla向导进行系统备份或恢复。
数据库备份
- # 创建数据库备份
- mysqldump -u root -p --all-databases > alldatabases-$(date +%Y%m%d).sql
- # 创建特定数据库备份
- mysqldump -u root -p exampledb > exampledb-$(date +%Y%m%d).sql
- # 创建压缩的数据库备份
- mysqldump -u root -p exampledb | gzip > exampledb-$(date +%Y%m%d).sql.gz
- # 恢复数据库
- mysql -u root -p exampledb < exampledb-20230601.sql
- # 恢复压缩的数据库备份
- gunzip < exampledb-20230601.sql.gz | mysql -u root -p exampledb
复制代码- # 创建数据库备份
- pg_dump -U postgres exampledb > exampledb-$(date +%Y%m%d).sql
- # 创建压缩的数据库备份
- pg_dump -U postgres exampledb | gzip > exampledb-$(date +%Y%m%d).sql.gz
- # 恢复数据库
- psql -U postgres exampledb < exampledb-20230601.sql
- # 恢复压缩的数据库备份
- gunzip < exampledb-20230601.sql.gz | psql -U postgres exampledb
复制代码
故障排除
系统启动问题
- # 查看系统启动日志
- journalctl -b
- # 查看内核消息
- dmesg
- # 查看特定服务的启动日志
- journalctl -u servicename
复制代码- # 重新安装GRUB
- grub2-install /dev/sda
- # 重新生成GRUB配置
- grub2-mkconfig -o /boot/grub2/grub.cfg
复制代码
网络问题
- # 检查网络接口状态
- ip addr show
- # 检查路由表
- ip route show
- # 检查DNS解析
- nslookup example.com
- # 检查网络连接
- ping example.com
- # 跟踪网络路径
- traceroute example.com
复制代码- # 检查NetworkManager状态
- systemctl status NetworkManager
- # 重启网络服务
- systemctl restart NetworkManager
- # 检查防火墙状态
- systemctl status firewalld
- # 检查特定端口是否开放
- firewall-cmd --list-ports
- firewall-cmd --list-services
复制代码
磁盘和文件系统问题
- # 检查磁盘使用情况
- df -h
- # 检查inode使用情况
- df -i
- # 查找大文件
- find / -type f -size +100M -exec ls -lh {} \;
复制代码- # 检查文件系统
- fsck /dev/sda1
- # 修复文件系统(需要先卸载)
- umount /dev/sda1
- fsck -y /dev/sda1
复制代码
服务问题
- # 检查服务状态
- systemctl status servicename
- # 查看服务日志
- journalctl -u servicename
- # 重启服务
- systemctl restart servicename
复制代码
Apache常见问题:
- # 检查Apache配置
- httpd -t
- # 检查Apache端口占用
- netstat -tulnp | grep :80
- # 检查SELinux是否阻止Apache
- grep httpd /var/log/audit/audit.log | audit2why
复制代码
Nginx常见问题:
- # 检查Nginx配置
- nginx -t
- # 检查Nginx端口占用
- netstat -tulnp | grep :80
- # 检查SELinux是否阻止Nginx
- grep nginx /var/log/audit/audit.log | audit2why
复制代码
MariaDB/MySQL常见问题:
- # 检查MariaDB配置
- mysqld --help --verbose
- # 检查MariaDB错误日志
- tail -f /var/log/mariadb/mariadb.log
- # 检查MariaDB端口占用
- 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服务器管理的道路上取得成功! |
|