AlmaLinux是一个免费、开源的企业级Linux发行版,它是CentOS停止维护后的一个理想替代品。AlmaLinux与RHEL(Red Hat Enterprise Linux)二进制兼容,由CloudLinux公司支持和维护,旨在为企业和个人用户提供一个稳定、安全、高性能的操作系统。本文将详细介绍如何从零开始安装和配置AlmaLinux服务器,帮助读者快速上手这一优秀的企业级Linux系统。

准备工作

在开始安装AlmaLinux之前,我们需要做好充分的准备工作,以确保安装过程顺利进行。

系统要求

首先,我们需要确认服务器硬件是否满足AlmaLinux的最低要求:

  • CPU:64位架构的处理器(x86_64)
  • 内存:至少1GB RAM(推荐2GB或更多)
  • 硬盘空间:至少10GB可用空间(推荐20GB或更多)
  • 网络连接:稳定的互联网连接(用于下载软件包和更新)

下载AlmaLinux镜像

访问AlmaLinux官方网站(https://almalinux.org/),下载最新的稳定版本镜像文件。AlmaLinux提供了两种主要的镜像类型:

  1. DVD ISO:包含所有基础软件包的完整安装镜像,适合离线安装。
  2. Minimal ISO:仅包含最基础的软件包,适合在线安装或定制化安装。

对于服务器安装,推荐使用Minimal ISO,因为它体积更小,安装后系统更加精简。

创建安装介质

下载完成后,我们需要将ISO镜像写入到USB闪存盘或DVD中,创建可引导的安装介质。以下是使用不同操作系统创建安装介质的方法:

在Windows上创建安装介质

可以使用Rufus工具创建USB安装介质:

  1. 下载并安装Rufus(https://rufus.ie/)
  2. 插入USB闪存盘(至少4GB容量)
  3. 启动Rufus,选择USB设备和下载的AlmaLinux ISO文件
  4. 保持其他选项为默认设置,点击”START”按钮开始创建安装介质

在Linux上创建安装介质

可以使用dd命令创建USB安装介质:

# 确定USB设备名称(如/dev/sdb) sudo fdisk -l # 卸载USB设备(如果已挂载) sudo umount /dev/sdb* # 使用dd命令写入ISO镜像 sudo dd if=almalinux-x86_64-minimal.iso of=/dev/sdb bs=4M status=progress 

在macOS上创建安装介质

可以使用dd命令或Etcher工具创建USB安装介质:

# 确定USB设备名称(如/disk2) diskutil list # 卸载USB设备 diskutil unmountDisk /dev/disk2 # 使用dd命令写入ISO镜像 sudo dd if=almalinux-x86_64-minimal.iso of=/dev/rdisk2 bs=4m 

备份重要数据

在进行系统安装之前,请务必备份服务器上的所有重要数据。安装过程会格式化硬盘,导致所有现有数据丢失。

安装过程

准备工作完成后,我们可以开始AlmaLinux的安装过程。

启动安装程序

  1. 将创建好的安装介质插入服务器,并重启服务器。
  2. 在启动过程中,进入BIOS/UEFI设置,将启动顺序调整为首先从USB或DVD启动。
  3. 保存设置并退出,服务器将从安装介质启动。
  4. 在AlmaLinux启动菜单中,选择”Install AlmaLinux”并按Enter键。

选择语言和键盘布局

安装程序启动后,首先需要选择安装过程中使用的语言和键盘布局。选择适合您的语言(如”中文(简体)”),然后点击”继续”按钮。

安装摘要

接下来,您将看到”安装摘要”界面,这里显示了所有需要配置的安装选项。我们需要逐一配置这些选项:

1. 本地化

  • 键盘:确认键盘布局设置是否正确。如需更改,点击”键盘”选项,添加或删除键盘布局。
  • 语言支持:确认系统语言设置。如需添加其他语言支持,点击”语言支持”选项,选择需要的语言。
  • 时间和日期:确认时区设置是否正确。如需更改,点击”时间和日期”选项,在地图上点击您的位置或从”地区”和”城市”下拉菜单中选择。

2. 软件

  • 安装源:如果您使用的是完整的DVD ISO,安装源会自动设置为本地介质。如果您使用的是Minimal ISO,安装源会自动设置为网络镜像。通常情况下,无需更改此设置。
  • 软件选择:点击”软件选择”选项,您将看到多个基础环境选项。对于服务器安装,推荐选择”最小安装”以获得一个精简的系统。如果您需要特定的服务器功能,可以选择”Web服务器”、”文件存储服务器”等预定义的环境。

3. 系统

  • 安装位置:这是最重要的设置之一,用于配置磁盘分区。点击”安装位置”选项,您将看到以下选项:
    • 存储配置:选择”自定义”以手动配置分区,这对于服务器安装是推荐的做法。
    • 分区方案:选择适合您需求的分区方案。对于服务器,推荐使用LVM(逻辑卷管理),因为它提供了更大的灵活性。

以下是一个典型的服务器分区方案示例:

  • /boot:500MB-1GB,用于存储启动文件
  • swap:与内存大小相等或稍大,用于虚拟内存
  • /:剩余空间的20-30%,用于根文件系统
  • /home:剩余空间的20-30%,用于用户数据
  • /var:剩余空间的30-40%,用于日志文件和其他可变数据
  • /tmp:剩余空间的5-10%,用于临时文件

创建分区后,点击”完成”按钮。

  • 网络和主机名:点击”网络和主机名”选项,配置网络设置:

    • 将”以太网”开关切换到”开”以启用网络接口。
    • 配置IP地址、子网掩码、网关和DNS服务器。您可以选择使用DHCP自动获取IP地址,或者手动配置静态IP地址。
    • 在”主机名”字段中,输入服务器的主机名(如server1.example.com)。
    • 点击”完成”按钮保存设置。
  • KDUMP:KDUMP是一个内核崩溃转储机制,用于在系统崩溃时收集调试信息。根据您的需求启用或禁用此功能。

  • 安全策略:如果您有特定的安全策略要求,可以在此处配置。否则,保持默认设置即可。

开始安装

完成所有必要的配置后,返回”安装摘要”界面,点击”开始安装”按钮。安装过程将开始,这可能需要一些时间,具体时间取决于您的硬件性能和选择的软件包。

设置root密码和创建用户

在安装过程中,您需要设置root密码并创建一个普通用户:

  1. 设置root密码

    • 点击”ROOT密码”选项。
    • 在”密码”和”确认”字段中输入root用户的密码。
    • 点击”完成”按钮保存设置。
  2. 创建用户

    • 点击”用户创建”选项。
    • 输入用户的全名、用户名和密码。
    • 如果需要,可以选择”使此用户为管理员”以授予该用户sudo权限。
    • 点击”完成”按钮保存设置。

完成安装

安装完成后,您将看到”完成安装”的消息。点击”重启”按钮,系统将重启。在重启过程中,请确保移除安装介质,以免系统再次从安装介质启动。

系统配置

系统安装完成后,我们需要进行一些基本的配置,以确保系统安全、高效地运行。

首次登录

重启后,您将看到登录提示。使用您在安装过程中创建的普通用户账户登录。如果需要执行管理任务,可以使用su -命令切换到root用户,或使用sudo命令执行特定命令。

系统更新

登录后,首先应该更新系统以获取最新的安全补丁和软件包:

# 切换到root用户 su - # 更新软件包列表 dnf check-update # 更新所有已安装的软件包 dnf update -y # 重启系统以应用更新(如果需要) reboot 

配置主机名和时区

确保主机名和时区设置正确:

# 查看当前主机名 hostnamectl # 设置主机名(如果需要) hostnamectl set-hostname server1.example.com # 查看当前时区 timedatectl # 设置时区(例如:设置为上海时区) timedatectl set-timezone Asia/Shanghai 

配置网络

确认网络配置正确:

# 查看网络接口 ip addr show # 查看网络连接详情 nmcli connection show # 编辑网络连接(例如:修改ens33连接) nmcli connection edit ens33 # 在交互式界面中,可以设置IP地址、网关、DNS等 # 设置静态IP地址示例 nmcli> set ipv4.method manual nmcli> set ipv4.addresses 192.168.1.100/24 nmcli> set ipv4.gateway 192.168.1.1 nmcli> set ipv4.dns 8.8.8.8 8.8.4.4 nmcli> save nmcli> quit # 重启网络服务 nmcli connection down ens33 && nmcli connection up ens33 

配置防火墙

AlmaLinux使用firewalld作为默认的防火墙管理工具。以下是一些基本的防火墙配置命令:

# 查看防火墙状态 systemctl status firewalld # 启动防火墙并设置为开机自启 systemctl enable --now firewalld # 查看当前活跃的区域和规则 firewall-cmd --get-active-zones firewall-cmd --list-all # 开放特定端口(例如:开放SSH端口) firewall-cmd --permanent --add-service=ssh firewall-cmd --reload # 开放自定义端口(例如:开放8080端口) firewall-cmd --permanent --add-port=8080/tcp firewall-cmd --reload 

配置SELinux

SELinux(Security-Enhanced Linux)是一个强制访问控制(MAC)系统,提供了额外的安全层。以下是SELinux的基本配置:

# 查看SELinux状态 sestatus # 设置SELinux为 enforcing 模式(如果需要) setenforce 1 sed -i 's/SELINUX=permissive/SELINUX=enforcing/g' /etc/selinux/config # 设置SELinux为 permissive 模式(仅记录但不阻止违规操作) setenforce 0 sed -i 's/SELINUX=enforcing/SELINUX=permissive/g' /etc/selinux/config # 禁用SELinux(不推荐) setenforce 0 sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config 

配置NTP服务

确保系统时间准确:

# 安装chrony(NTP客户端) dnf install -y chrony # 启动并设置为开机自启 systemctl enable --now chronyd # 查看时间同步状态 chronyc tracking # 添加NTP服务器(如果需要) echo "server ntp1.aliyun.com iburst" >> /etc/chrony.conf echo "server ntp2.aliyun.com iburst" >> /etc/chrony.conf # 重启chrony服务 systemctl restart chronyd 

配置用户和组

管理用户和组:

# 创建新用户 useradd -m username # 设置用户密码 passwd username # 将用户添加到wheel组(授予sudo权限) usermod -aG wheel username # 创建新组 groupadd groupname # 将用户添加到组 usermod -aG groupname username # 删除用户 userdel -r username 

配置SSH服务

SSH是远程管理Linux服务器的常用工具。以下是SSH服务的基本配置:

# 安装OpenSSH服务器(如果未安装) dnf install -y openssh-server # 启动并设置为开机自启 systemctl enable --now sshd # 查看SSH服务状态 systemctl status sshd # 编辑SSH配置文件 vi /etc/ssh/sshd_config # 常见的安全设置: # 禁用root用户登录 PermitRootLogin no # 更改默认端口 Port 2222 # 仅允许特定用户登录 AllowUsers username1 username2 # 仅使用SSH协议2 Protocol 2 # 重启SSH服务以应用更改 systemctl restart sshd 

网络设置

网络是服务器的重要组成部分,正确的网络配置对于服务器的正常运行至关重要。

静态IP配置

为服务器配置静态IP地址,确保其网络地址不会改变:

# 查看网络接口名称 ip addr show # 创建网络连接配置文件(例如:为ens33接口配置) nmcli connection add type ethernet ifname ens33 con-name ens33-static # 设置静态IP地址、子网掩码和网关 nmcli connection modify ens33-static ipv4.method manual ipv4.addresses 192.168.1.100/24 ipv4.gateway 192.168.1.1 # 设置DNS服务器 nmcli connection modify ens33-static ipv4.dns "8.8.8.8 8.8.4.4" # 启用连接 nmcli connection up ens33-static # 查看连接详情 nmcli connection show ens33-static 

配置网络绑定(Bonding)

网络绑定可以将多个网络接口组合为一个逻辑接口,提高网络带宽和冗余性:

# 安装绑定工具 dnf install -y teamd # 创建绑定接口 nmcli connection add type bond con-name bond0 ifname bond0 mode active-backup # 将物理接口添加到绑定 nmcli connection add type ethernet slave-type bond con-name bond0-slave1 ifname ens33 master bond0 nmcli connection add type ethernet slave-type bond con-name bond0-slave2 ifname ens34 master bond0 # 为绑定接口配置IP地址 nmcli connection modify bond0 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 up bond0-slave1 nmcli connection up bond0-slave2 nmcli connection up bond0 # 查看绑定状态 cat /proc/net/bonding/bond0 

配置VLAN

VLAN允许在物理网络上创建逻辑隔离的网络段:

# 创建VLAN接口(例如:在ens33上创建VLAN 100) nmcli connection add type vlan con-name vlan100 dev ens33 id 100 # 为VLAN接口配置IP地址 nmcli connection modify vlan100 ipv4.method manual ipv4.addresses 192.168.100.10/24 # 启用VLAN接口 nmcli connection up vlan100 # 查看VLAN接口状态 ip addr show vlan100 

配置网桥

网桥允许将多个网络接口连接到同一个网络段,常用于虚拟化环境:

# 安装网桥工具 dnf install -y bridge-utils # 创建网桥接口 nmcli connection add type bridge con-name br0 ifname br0 # 为网桥配置IP地址 nmcli connection modify br0 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 add type ethernet slave-type bridge con-name br0-slave1 ifname ens33 master br0 # 启用所有连接 nmcli connection up br0-slave1 nmcli connection up br0 # 查看网桥状态 brctl show 

配置网络别名

网络别名允许在同一网络接口上配置多个IP地址:

# 为现有连接添加别名IP地址 nmcli connection modify ens33 +ipv4.addresses 192.168.1.101/24 # 重启连接以应用更改 nmcli connection down ens33 && nmcli connection up ens33 # 查看网络接口配置 ip addr show ens33 

配置路由

配置静态路由以控制网络流量:

# 添加静态路由 nmcli connection modify ens33 +ipv4.routes "192.168.2.0/24 192.168.1.1" # 重启连接以应用更改 nmcli connection down ens33 && nmcli connection up ens33 # 查看路由表 ip route show 

配置网络诊断工具

安装和使用网络诊断工具:

# 安装网络诊断工具 dnf install -y net-tools traceroute nmap-ncat tcpdump wireshark-cli # 使用ping测试网络连通性 ping -c 4 google.com # 使用traceroute跟踪网络路径 traceroute google.com # 使用netcat测试端口连通性 nc -zv google.com 80 # 使用tcpdump捕获网络流量 tcpdump -i ens33 -c 10 # 使用nmap扫描网络 nmap -sP 192.168.1.0/24 

后续优化

安装和基本配置完成后,我们可以进行一些后续优化,以提高系统的安全性、稳定性和性能。

系统更新和维护

保持系统更新是确保系统安全和稳定的关键:

# 设置自动更新 dnf install -y dnf-automatic # 配置自动更新 vi /etc/dnf/automatic.conf # 修改以下设置: apply_updates = yes emit_via = stdio download_updates = yes # 启用并启动dnf-automatic定时器 systemctl enable --now dnf-automatic.timer # 查看定时器状态 systemctl list-timers *dnf-* 

安全加固

加强系统安全性:

# 安装安全工具 dnf install -y setroubleshoot-server rkhunter clamav # 配置fail2ban防止暴力破解 dnf install -y fail2ban systemctl enable --now fail2ban # 配置fail2ban cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local vi /etc/fail2ban/jail.local # 修改SSH保护设置: [sshd] enabled = true port = 22 filter = sshd logpath = /var/log/secure maxretry = 3 bantime = 3600 # 重启fail2ban服务 systemctl restart fail2ban # 查看fail2ban状态 fail2ban-client status sshd 

性能优化

优化系统性能:

# 安装性能监控工具 dnf install -y htop iotop sysstat # 配置sysstat以收集系统性能数据 vi /etc/sysconfig/sysstat # 启用数据收集: ENABLED="true" # 启动并设置为开机自启 systemctl enable --now sysstat # 查看CPU使用情况 sar -u # 查看内存使用情况 sar -r # 查看磁盘I/O情况 sar -b # 调整内核参数(例如:增加文件描述符限制) echo "fs.file-max = 100000" >> /etc/sysctl.conf echo "* soft nofile 65536" >> /etc/security/limits.conf echo "* hard nofile 65536" >> /etc/security/limits.conf # 应用内核参数 sysctl -p 

配置日志管理

配置和管理系统日志:

# 安装日志管理工具 dnf install -y rsyslog logrotate # 配置rsyslog vi /etc/rsyslog.conf # 添加远程日志服务器(如果需要): *.* @logserver.example.com:514 # 重启rsyslog服务 systemctl restart rsyslog # 配置logrotate以管理日志文件轮转 vi /etc/logrotate.conf # 修改全局设置(如果需要): weekly rotate 4 compress delaycompress missingok notifempty create 640 root adm # 测试logrotate配置 logrotate -d /etc/logrotate.conf 

配置备份策略

配置数据备份策略:

# 安装备份工具 dnf install -y rsync tar # 创建备份脚本 vi /usr/local/bin/backup.sh #!/bin/bash # 定义备份目录 BACKUP_DIR="/backup" DATE=$(date +%Y%m%d) # 创建备份目录 mkdir -p $BACKUP_DIR/$DATE # 备份系统配置文件 tar -czf $BACKUP_DIR/$DATE/etc_backup.tar.gz /etc # 备份用户数据 rsync -avz /home/ $BACKUP_DIR/$DATE/home/ # 备份数据库(如果需要) mysqldump --all-databases | gzip > $BACKUP_DIR/$DATE/mysql_backup.sql.gz # 删除30天前的备份 find $BACKUP_DIR -type d -mtime +30 -exec rm -rf {} ; # 设置脚本可执行权限 chmod +x /usr/local/bin/backup.sh # 添加到crontab以定期执行 crontab -e # 添加以下行以每天凌晨2点执行备份: 0 2 * * * /usr/local/bin/backup.sh 

常见问题与解决方案

在安装和配置AlmaLinux服务器的过程中,可能会遇到一些常见问题。以下是一些常见问题及其解决方案:

安装问题

问题1:安装介质无法启动

解决方案

  • 确保安装介质正确创建。可以尝试重新创建安装介质。
  • 检查BIOS/UEFI设置,确保启动顺序正确。
  • 尝试使用不同的USB端口或DVD驱动器。
  • 某些服务器可能需要禁用安全启动(Secure Boot)才能从外部介质启动。

问题2:安装过程中无法检测到硬盘

解决方案

  • 检查硬盘连接是否正确。
  • 某些RAID控制器可能需要加载驱动程序。在安装启动菜单中,选择”Install AlmaLinux”后按”Tab”键,添加”dd”参数,然后按Enter键。系统会提示您插入包含驱动程序的磁盘。
  • 对于某些服务器,可能需要在BIOS/UEFI中将硬盘模式从RAID更改为AHCI。

问题3:安装过程中网络连接失败

解决方案

  • 检查网络连接是否正常。
  • 尝试手动配置IP地址、子网掩码、网关和DNS服务器。
  • 如果使用代理服务器访问互联网,确保在安装过程中正确配置代理设置。

系统配置问题

问题1:系统启动后无法连接到网络

解决方案

  • 检查网络接口状态:ip addr show
  • 确保网络接口已启用:nmcli connection up ens33(将ens33替换为您的网络接口名称)
  • 检查网络配置:nmcli connection show ens33
  • 如果使用静态IP地址,确保IP地址、子网掩码、网关和DNS服务器配置正确。
  • 检查网络电缆连接和交换机/路由器状态。

问题2:无法使用SSH远程连接

解决方案

  • 确保SSH服务已启动:systemctl status sshd
  • 如果未启动,启动SSH服务:systemctl start sshd
  • 检查防火墙设置:firewall-cmd --list-all
  • 确保SSH端口已开放:firewall-cmd --permanent --add-service=ssh && firewall-cmd --reload
  • 检查SSH配置文件:vi /etc/ssh/sshd_config
  • 确保没有禁用SSH或更改默认端口(除非您有意这样做)。
  • 检查SELinux状态:sestatus,如果SELinux处于enforcing模式,确保没有阻止SSH连接。

问题3:系统时间不正确

解决方案

  • 检查时区设置:timedatectl
  • 设置正确的时区:timedatectl set-timezone Asia/Shanghai(将Asia/Shanghai替换为您所在的时区)
  • 检查NTP服务状态:systemctl status chronyd
  • 如果未启动,启动NTP服务:systemctl start chronyd
  • 手动同步时间:chronyc -a makestep

软件包管理问题

问题1:DNF更新失败

解决方案

  • 清理DNF缓存:dnf clean all
  • 重建DNF缓存:dnf makecache
  • 检查网络连接:ping -c 4 google.com
  • 如果使用代理服务器,确保正确配置代理设置。
  • 尝试更换软件源:编辑/etc/dnf/dnf.conf文件,添加或修改baseurl参数。

问题2:无法安装特定软件包

解决方案

  • 检查软件包名称是否正确:dnf search package-name
  • 启用EPEL仓库:dnf install -y epel-release
  • 检查软件包是否存在于其他仓库:dnf --enablerepo=extras search package-name
  • 如果软件包不存在,考虑从源代码编译安装或寻找替代软件包。

性能问题

问题1:系统运行缓慢

解决方案

  • 检查系统资源使用情况:htop
  • 检查磁盘I/O:iotop
  • 检查系统日志:journalctl -xe
  • 检查是否有不必要的进程在运行:ps aux --sort=-%cpu | head
  • 考虑升级硬件资源(CPU、内存、磁盘)。

问题2:磁盘空间不足

解决方案

  • 检查磁盘使用情况:df -h
  • 查找大文件:find / -type f -size +100M -exec ls -lh {} ;
  • 清理软件包缓存:dnf clean all
  • 删除不必要的日志文件:journalctl --vacuum-size=100M
  • 删除临时文件:rm -rf /tmp/*
  • 考虑扩展磁盘空间或添加新磁盘。

总结

AlmaLinux是一个稳定、安全、高性能的企业级Linux发行版,是CentOS的理想替代品。通过本文的详细介绍,您应该已经掌握了从准备工作到系统配置再到网络设置的全过程,能够快速上手并部署AlmaLinux服务器。

在实际应用中,您可能还需要根据具体需求进行更多的定制和优化。AlmaLinux拥有活跃的社区和丰富的文档资源,您可以随时查阅官方文档和社区论坛获取更多帮助和支持。

希望本文能够帮助您顺利部署和使用AlmaLinux服务器,为您的业务提供稳定、可靠的运行环境。祝您使用愉快!