引言

AlmaLinux 是一个由社区驱动的、开源的企业级 Linux 发行版,旨在作为 CentOS 的直接替代品。它基于 Red Hat Enterprise Linux (RHEL) 的源代码构建,提供了与 RHEL 二进制兼容的体验。对于系统管理员、开发者和企业用户来说,掌握 AlmaLinux 的软件安装、系统配置和问题解决是至关重要的。本文将从零开始,详细指导您如何在 AlmaLinux 上安装软件、配置系统,并解决常见问题。我们将涵盖从基础命令到高级配置的各个方面,确保您能够轻松上手并高效管理您的系统。

1. AlmaLinux 简介与安装准备

1.1 AlmaLinux 的优势

AlmaLinux 作为 RHEL 的克隆版,继承了 RHEL 的稳定性和安全性,同时由社区维护,确保长期支持(LTS)。它适用于服务器、桌面和云环境,支持广泛的硬件和软件生态系统。选择 AlmaLinux 的主要优势包括:

  • 免费且开源:无需支付许可费用,源代码完全开放。
  • 二进制兼容:与 RHEL 软件包完全兼容,可以直接使用 RHEL 的软件仓库。
  • 长期支持:每个版本提供至少 10 年的支持周期。
  • 活跃社区:拥有庞大的用户和开发者社区,提供丰富的文档和支持。

1.2 系统要求与安装准备

在安装 AlmaLinux 之前,确保您的硬件满足最低要求:

  • 处理器:64 位 x86_64 架构,至少 1 GHz。
  • 内存:最小 2 GB(推荐 4 GB 或更多)。
  • 存储:至少 20 GB 可用磁盘空间(推荐 50 GB 或更多)。
  • 网络:稳定的互联网连接,用于下载软件包和更新。

安装准备步骤

  1. 下载 AlmaLinux ISO 镜像:访问 AlmaLinux 官网,选择适合您硬件的版本(如 AlmaLinux 9)。推荐使用最小安装镜像(Minimal ISO)以减少初始安装大小。
  2. 创建可启动介质:使用工具如 Rufus(Windows)或 dd 命令(Linux/macOS)将 ISO 写入 USB 驱动器。例如,在 Linux 上使用以下命令:
     sudo dd if=/path/to/almalinux-9.x-x86_64-minimal.iso of=/dev/sdX bs=4M status=progress && sync 

    注意:/dev/sdX 是您的 USB 设备,请谨慎选择,避免覆盖错误磁盘。

  3. 备份数据:如果是在现有系统上安装,请备份重要数据。
  4. 网络配置:确保网络连接正常,以便在安装过程中下载更新和软件包。

2. AlmaLinux 基础安装

2.1 启动安装程序

  1. 将 USB 驱动器插入计算机,重启并进入 BIOS/UEFI 设置,将 USB 设备设置为第一启动项。
  2. 启动后,选择“Install AlmaLinux”选项。安装程序将加载图形界面或文本界面(取决于您的硬件)。
  3. 选择语言、键盘布局和时区。推荐使用英语以获得更好的社区支持。

2.2 分区与存储配置

在安装过程中,您需要配置磁盘分区。AlmaLinux 支持自动分区和手动分区。

  • 自动分区:选择“自动配置分区”,安装程序将根据磁盘大小创建合理的分区(如 /boot/swap/home)。
  • 手动分区:对于高级用户,建议手动分区以优化性能。例如:
    • /boot:500 MB,文件系统 ext4。
    • /:剩余空间的 50%,文件系统 ext4。
    • swap:根据内存大小设置(通常为内存的 1-2 倍)。
    • /home:剩余空间,文件系统 ext4。

示例手动分区方案(假设磁盘为 100 GB):

  • /boot:500 MB
  • /:30 GB
  • swap:4 GB(如果内存为 2 GB)
  • /home:剩余空间

2.3 软件选择与安装

在“软件选择”界面,您可以选择安装类型:

  • 最小安装:仅安装基本系统,适合服务器环境。
  • 带 GUI 的服务器:安装图形界面(如 GNOME),适合桌面用户。
  • 自定义:手动选择软件包组,如“开发工具”、“网络管理”等。

推荐初学者选择“最小安装”,然后根据需要额外安装软件。确认设置后,点击“开始安装”,设置 root 密码并创建普通用户。安装完成后,重启系统。

3. 系统初始化与基本配置

3.1 首次登录与更新系统

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

sudo dnf update -y 

dnf 是 AlmaLinux 的默认包管理器(取代了 yum)。-y 选项自动确认所有提示。

3.2 配置网络

AlmaLinux 使用 NetworkManager 管理网络。检查网络状态:

nmcli device status 

如果网络未连接,可以使用以下命令连接:

sudo nmcli device connect eth0 # 替换 eth0 为您的接口名 

对于静态 IP 配置,编辑网络配置文件:

sudo nmcli con mod "System eth0" ipv4.addresses 192.168.1.100/24 sudo nmcli con mod "System eth0" ipv4.gateway 192.168.1.1 sudo nmcli con mod "System eth0" ipv4.dns "8.8.8.8 8.8.4.4" sudo nmcli con mod "System eth0" ipv4.method manual sudo nmcli con up "System eth0" 

或者编辑配置文件 /etc/sysconfig/network-scripts/ifcfg-eth0(对于传统网络):

BOOTPROTO=static IPADDR=192.168.1.100 NETMASK=255.255.255.0 GATEWAY=192.168.1.1 DNS1=8.8.8.8 ONBOOT=yes 

重启网络服务:

sudo systemctl restart NetworkManager 

3.3 配置防火墙

AlmaLinux 使用 firewalld 作为默认防火墙。启用并配置防火墙:

sudo systemctl enable firewalld sudo systemctl start firewalld 

检查防火墙状态:

sudo firewall-cmd --state 

开放常见服务端口,例如 HTTP (80) 和 SSH (22):

sudo firewall-cmd --permanent --add-service=http sudo firewall-cmd --permanent --add-service=ssh sudo firewall-cmd --reload 

查看已开放的端口:

sudo firewall-cmd --list-all 

3.4 配置 SELinux

SELinux 是 AlmaLinux 的安全增强模块,默认启用。检查 SELinux 状态:

sudo sestatus 

如果遇到权限问题,可以临时将 SELinux 设置为宽容模式(不推荐生产环境):

sudo setenforce 0 

永久修改需编辑 /etc/selinux/config

SELINUX=permissive # 或 disabled 

重启后生效。对于特定应用,可以使用 semanageaudit2allow 调整策略。

4. 软件安装全攻略

4.1 使用 DNF 包管理器

DNF 是 AlmaLinux 的核心包管理器,用于安装、更新和删除软件包。基本命令:

  • 搜索软件包
     dnf search <关键词> 

    示例:搜索 nginx:

     dnf search nginx 
  • 安装软件包
     sudo dnf install <包名> 

    示例:安装 nginx:

     sudo dnf install nginx -y 
  • 更新软件包
     sudo dnf update <包名> 
  • 删除软件包
     sudo dnf remove <包名> 
  • 列出已安装软件包
     dnf list installed 
  • 查看软件包信息
     dnf info <包名> 

4.2 启用额外软件仓库

AlmaLinux 默认启用 BaseOS 和 AppStream 仓库。对于更多软件,可以启用 EPEL(Extra Packages for Enterprise Linux)仓库:

sudo dnf install epel-release -y 

EPEL 提供了许多额外的软件包,如 Python 3.9、Node.js 等。启用后,更新仓库:

sudo dnf update -y 

4.3 安装常见软件示例

4.3.1 安装 Web 服务器 (Apache/Nginx)

安装 Apache

sudo dnf install httpd -y sudo systemctl enable httpd sudo systemctl start httpd sudo firewall-cmd --permanent --add-service=http sudo firewall-cmd --reload 

访问 http://<服务器IP> 测试。默认网页目录为 /var/www/html

安装 Nginx

sudo dnf install nginx -y sudo systemctl enable nginx sudo systemctl start nginx sudo firewall-cmd --permanent --add-service=http sudo firewall-cmd --reload 

Nginx 配置文件位于 /etc/nginx/nginx.conf,默认网页目录为 /usr/share/nginx/html

4.3.2 安装数据库 (MySQL/MariaDB)

安装 MariaDB(MySQL 的分支):

sudo dnf install mariadb-server -y sudo systemctl enable mariadb sudo systemctl start mariadb sudo mysql_secure_installation # 安全配置,设置 root 密码等 

配置防火墙:

sudo firewall-cmd --permanent --add-service=mysql sudo firewall-cmd --reload 

连接数据库:

mysql -u root -p 

4.3.3 安装编程语言环境

安装 Python 3(AlmaLinux 9 默认包含 Python 3.9):

sudo dnf install python3 -y python3 --version # 检查版本 

安装 pip:

sudo dnf install python3-pip -y pip3 install numpy pandas # 示例:安装 Python 库 

安装 Node.js(通过 EPEL):

sudo dnf module install nodejs:18 -y # 安装 Node.js 18 node --version npm --version 

示例:创建一个简单的 Node.js 应用:

// app.js const http = require('http'); const server = http.createServer((req, res) => { res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('Hello from AlmaLinux!n'); }); server.listen(3000, '127.0.0.1', () => { console.log('Server running at http://127.0.0.1:3000/'); }); 

运行:

node app.js 

4.3.4 安装桌面环境(如果未安装 GUI)

如果初始安装选择了最小安装,可以安装 GNOME 桌面:

sudo dnf groupinstall "GNOME" -y sudo systemctl set-default graphical.target sudo reboot 

安装后,系统将启动图形登录界面。

4.4 从源代码编译安装软件

对于不在仓库中的软件,可以从源代码编译安装。以安装最新版 Nginx 为例:

  1. 安装编译依赖:
     sudo dnf install gcc make pcre-devel zlib-devel openssl-devel -y 
  2. 下载源代码:
     wget http://nginx.org/download/nginx-1.24.0.tar.gz tar -xzf nginx-1.24.0.tar.gz cd nginx-1.24.0 
  3. 配置、编译和安装:
     ./configure --prefix=/usr/local/nginx --with-http_ssl_module make sudo make install 
  4. 创建 systemd 服务文件 /etc/systemd/system/nginx.service: “`ini [Unit] Description=nginx - high performance web server After=network.target

[Service] Type=forking ExecStart=/usr/local/nginx/sbin/nginx ExecReload=/usr/local/nginx/sbin/nginx -s reload ExecStop=/usr/local/nginx/sbin/nginx -s quit PrivateTmp=true

[Install] WantedBy=multi-user.target

5. 启动服务: ```bash sudo systemctl daemon-reload sudo systemctl enable nginx sudo systemctl start nginx 

4.5 使用 Snap 或 Flatpak 安装软件

对于某些桌面应用,可以使用 Snap 或 Flatpak。首先安装 Snap:

sudo dnf install snapd -y sudo systemctl enable --now snapd.socket 

安装 Snap 应用(如 Spotify):

sudo snap install spotify 

Flatpak 安装:

sudo dnf install flatpak -y flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo flatpak install flathub org.gimp.GIMP # 安装 GIMP 

5. 系统配置进阶

5.1 用户与权限管理

  • 创建用户
     sudo useradd -m -s /bin/bash username # -m 创建家目录,-s 指定 shell sudo passwd username # 设置密码 
  • 添加用户到 sudo 组
     sudo usermod -aG wheel username # wheel 组允许使用 sudo 
  • 修改用户属性
     sudo usermod -l newname oldname # 更改用户名 sudo usermod -d /home/newhome -m username # 更改家目录 
  • 删除用户
     sudo userdel -r username # -r 删除家目录 

5.2 文件系统管理

  • 挂载磁盘
     sudo mkdir /mnt/data sudo mount /dev/sdb1 /mnt/data 

    永久挂载:编辑 /etc/fstab

     /dev/sdb1 /mnt/data ext4 defaults 0 2 
  • 磁盘使用情况
     df -h # 查看磁盘空间 du -sh /path/to/directory # 查看目录大小 
  • LVM 配置(逻辑卷管理):
     sudo lvcreate -L 10G -n lv_data vg_data # 创建逻辑卷 sudo mkfs.ext4 /dev/vg_data/lv_data # 格式化 sudo mount /dev/vg_data/lv_data /mnt/data 

5.3 定时任务 (Cron)

使用 cron 安排定期任务。编辑 crontab:

sudo crontab -e # root 用户 crontab -e # 当前用户 

示例:每分钟输出时间到日志:

* * * * * /usr/bin/date >> /var/log/cron.log 2>&1 

Cron 表达式格式:分 时 日 月 周

5.4 日志管理

AlmaLinux 使用 rsyslog 和 journald 管理日志。查看系统日志:

sudo journalctl -xe # 查看详细日志 sudo journalctl -u nginx.service # 查看特定服务日志 

配置日志轮转:编辑 /etc/logrotate.conf 或创建 /etc/logrotate.d/ 下的配置文件。

6. 常见问题解决

6.1 网络连接问题

症状:无法访问互联网或本地网络。 解决方案

  1. 检查网络接口状态:
     ip addr show 
  2. 测试网络连通性:
     ping 8.8.8.8 
  3. 检查 DNS 配置:
     cat /etc/resolv.conf 

    如果 DNS 未设置,编辑 /etc/resolv.conf

     nameserver 8.8.8.8 nameserver 8.8.4.4 
  4. 重启网络服务:
     sudo systemctl restart NetworkManager 

6.2 软件包安装失败

症状dnf install 报错,如“无法找到包”或“依赖冲突”。 解决方案

  1. 清理缓存:
     sudo dnf clean all sudo dnf makecache 
  2. 检查仓库配置:
     sudo dnf repolist 

    确保 BaseOS 和 AppStream 仓库已启用。如果缺失,手动添加:

     sudo dnf config-manager --set-enabled baseos sudo dnf config-manager --set-enabled appstream 
  3. 解决依赖冲突:
     sudo dnf distro-sync # 同步所有包到最新版本 sudo dnf autoremove # 删除未使用的依赖 
  4. 如果问题持续,检查 /var/log/dnf.log 获取详细错误。

6.3 服务启动失败

症状systemctl start <service> 失败,状态为 failed。 解决方案

  1. 查看服务状态和日志:
     sudo systemctl status <service> sudo journalctl -u <service> -xe 
  2. 常见原因及修复:
    • 端口冲突:检查端口是否被占用:
       sudo ss -tuln | grep <端口号> 

      如果冲突,停止占用进程或修改服务配置。

    • 配置文件错误:检查服务配置文件(如 /etc/nginx/nginx.conf),使用 nginx -t 测试配置。
    • 权限问题:确保服务用户有权限访问文件。例如,对于 Nginx:
       sudo chown -R nginx:nginx /var/www/html 
  3. 重启服务:
     sudo systemctl restart <service> 

6.4 SELinux 相关问题

症状:应用程序无法访问文件或网络,日志中显示 SELinux 拒绝。 解决方案

  1. 检查 SELinux 日志:
     sudo ausearch -m avc -ts recent 
  2. 临时禁用 SELinux 测试(仅用于诊断):
     sudo setenforce 0 

    如果问题解决,则确认是 SELinux 问题。

  3. 永久修复:使用 audit2allow 生成自定义策略:
     sudo ausearch -m avc -ts recent | audit2allow -M mypolicy sudo semodule -i mypolicy.pp 

    或者使用 semanage 调整上下文:

     sudo semanage fcontext -a -t httpd_sys_content_t "/var/www/html(/.*)?" sudo restorecon -Rv /var/www/html 

6.5 磁盘空间不足

症状:系统提示磁盘空间不足,或 df -h 显示根分区满。 解决方案

  1. 查找大文件:
     sudo du -sh /* 2>/dev/null | sort -rh | head -n 10 
  2. 清理日志文件:
     sudo journalctl --vacuum-time=7d # 删除 7 天前的日志 sudo rm /var/log/*.gz # 删除压缩日志 
  3. 删除未使用的软件包:
     sudo dnf autoremove 
  4. 扩展磁盘空间(如果使用 LVM):
     sudo lvextend -L +10G /dev/mapper/almalinux-root sudo xfs_growfs / # 对于 XFS 文件系统 

6.6 更新系统后出现兼容性问题

症状:更新后某些软件无法运行,或系统不稳定。 解决方案

  1. 回滚更新(如果使用快照或备份):
     sudo dnf history # 查看更新历史 sudo dnf history undo <ID> # 撤销特定更新 
  2. 隔离问题软件包:
     sudo dnf downgrade <package> # 降级到旧版本 
  3. 检查依赖关系:
     sudo dnf repoquery --requires <package> 
  4. 如果问题严重,考虑从备份恢复系统。

7. 最佳实践与安全建议

7.1 定期更新与维护

  • 自动更新:启用自动安全更新:
     sudo dnf install dnf-automatic -y sudo systemctl enable --now dnf-automatic.timer 

    编辑 /etc/dnf/automatic.conf 配置更新频率。

  • 定期备份:使用 rsynctar 备份关键数据。示例备份脚本:
     #!/bin/bash tar -czf /backup/$(date +%Y%m%d).tar.gz /etc /home /var/www 

    设置 cron 任务定期运行。

7.2 安全加固

  • 禁用 root SSH 登录:编辑 /etc/ssh/sshd_config
     PermitRootLogin no 

    重启 SSH:

     sudo systemctl restart sshd 
  • 使用 SSH 密钥认证:生成密钥对:
     ssh-keygen -t rsa -b 4096 ssh-copy-id user@host 
  • 配置 fail2ban:防止暴力破解:
     sudo dnf install fail2ban -y sudo systemctl enable --now fail2ban 

    编辑 /etc/fail2ban/jail.local 配置规则。

7.3 性能优化

  • 监控系统资源:使用 htopglances
     sudo dnf install htop -y htop 
  • 优化内核参数:编辑 /etc/sysctl.conf
     net.core.somaxconn = 1024 vm.swappiness = 10 

    应用:

     sudo sysctl -p 

8. 总结

AlmaLinux 是一个强大且灵活的企业级 Linux 发行版,通过本文的详细指导,您应该能够从零开始完成系统安装、软件配置和问题解决。关键点包括:

  • 安装与初始化:确保正确分区和网络配置。
  • 软件管理:熟练使用 DNF 和额外仓库。
  • 系统配置:掌握用户、网络和安全设置。
  • 问题解决:针对常见错误提供具体解决方案。

通过实践这些步骤,您将能够高效管理 AlmaLinux 系统。建议定期查阅 AlmaLinux 文档 和社区论坛以获取最新信息。如果您遇到特定问题,可以结合日志和错误消息进行搜索,通常能找到解决方案。祝您使用 AlmaLinux 顺利!