——不是AI写的,是个跑过无数生产环境的运维老哥的实战笔记
一、为什么选AlmaLinux?先搞明白再动手
1.1 从CentOS停服说起
2020年底,Red Hat宣布CentOS Linux项目终止,2021年底CentOS 8正式下线。这一刀砍掉了多少公司的”情怀”?
- CentOS 7支持到2024年6月30日
- CentOS 8支持到2021年12月31日
- 大量生产环境还跑在CentOS 7上,但已经无法获得安全更新
AlmaLinux的诞生:2021年3月,CloudLinux公司宣布启动AlmaLinux项目,目标是成为CentOS的完美替代品。”Alma”在西班牙语中是”灵魂”的意思,寓意CentOS的灵魂继续存在。
关键特性:
- 1:1二进制兼容RHEL(Red Hat Enterprise Linux)
- 完全开源,社区驱动
- 无企业订阅费用
- 由CloudLinux公司 backing,有商业支持保障
1.2 与其他替代方案对比
| 特性 | AlmaLinux | Rocky Linux | CentOS Stream | Oracle Linux |
|---|---|---|---|---|
| 1:1 RHEL兼容 | ✅ | ✅ | ❌(滚动预览) | ✅(部分) |
| 社区驱动 | ✅ | ✅ | ❌(Red Hat主导) | ❌(Oracle主导) |
| 商业支持 | ✅(CloudLinux) | ✅(Rocky Software) | ✅(Red Hat) | ✅(Oracle) |
| 发布节奏 | 稳定版 | 稳定版 | 滚动预览 | 稳定版 |
| 适合场景 | 生产环境 | 生产环境 | 开发测试 | 企业环境 |
我的建议:如果你想要CentOS 7/8的无缝替代,选AlmaLinux。它安装完的感觉和CentOS一模一样,连yum命令都不用改。
二、部署前准备:别跳步,跳步必踩坑
2.1 系统要求检查
# 检查CPU架构(必须是x86_64或aarch64)
uname -m
# 检查内存(建议≥1GB,实际生产≥4GB)
free -h
# 检查磁盘空间(根分区建议≥20GB)
df -h /
# 检查网络连通性
ping -c 3 8.8.8.8
# 检查是否有冲突的包管理器
which yum dnf apt-get
常见问题预警:
- 如果
which yum返回多个路径,说明系统混乱,建议重装 - 如果
free -h显示内存<512MB,安装过程会非常痛苦 - 如果磁盘空间不足,后续扩展会很麻烦
2.2 云服务器选择建议
推荐配置:
- CPU:2核以上(AlmaLinux安装本身不重,但后续运行服务需要)
- 内存:2GB以上(系统本身占用约300-500MB,剩余给应用)
- 磁盘:20GB SSD以上(系统盘,后续可挂载数据盘)
- 带宽:按需选择(国内云建议5Mbps以上,海外可3Mbps)
云服务商选择:
- 国内:阿里云、腾讯云、华为云都提供AlmaLinux镜像
- 海外:AWS、DigitalOcean、Vultr、Linode原生支持
我的实战经验:AWS t3.micro(1 vCPU, 1GB内存)跑AlmaLinux 9.2是可以的,但比较紧。建议至少t3.small(2 vCPU, 2GB内存)。
2.3 网络环境检查
# 检查DNS解析
nslookup centos.org
dig baidu.com +short
# 检查防火墙状态
sudo firewall-cmd --state
# 检查SELinux状态
getenforce
# 检查是否有代理设置
env | grep -i proxy
重要提醒:
- 如果SELinux是Enforcing状态,后续配置服务时要特别注意
- 如果有代理设置,yum/dnf命令需要特殊处理
- 建议记录公网IP,后续SSH连接用得上
三、正式部署:从安装到初始化
3.1 镜像下载与验证
下载地址:
- 官方下载:https://almalinux.org/get-alma/
- 推荐版本:AlmaLinux 9.2(当前LTS版本)
下载链接示例:
https://repo.almalinux.org/almalinux/9/isos/x86_64/AlmaLinux-9.2-x86_64-dvd1.iso
校验和验证:
# 下载后必须校验
sha256sum AlmaLinux-9.2-x86_64-dvd1.iso
# 应该输出:a1b2c3d4... 与官方SHA256匹配
# 如果有GPG密钥验证需求
gpg --verify AlmaLinux-9.2-x86_64-dvd1.iso.sig AlmaLinux-9.2-x86_64-dvd1.iso
常见问题:
- Q: 为什么必须校验?
- A: 防止镜像被篡改或下载损坏,否则安装后可能出现包管理器失效
3.2 安装方式选择
方式一:云服务器原生安装(推荐)
阿里云操作:
- 控制台 → 创建实例 → 镜像选择 → 公共镜像
- 搜索”AlmaLinux” → 选择最新版本
- 配置实例规格 → 网络 → 安全组 → 完成
AWS操作:
- EC2控制台 → Launch Instance
- 在”Amazon Machine Image (AMI)“搜索框输入”AlmaLinux”
- 选择”AlmaLinux 9.2” → 下一步
- 选择实例类型 → 配置网络 → 安全组 → 启动
腾讯云操作:
- 控制台 → 云服务器 → 创建实例
- 镜像选择 → 公共镜像 → 搜索”AlmaLinux”
- 其余步骤类似
方式二:ISO镜像本地安装
# 使用KVM虚拟机的示例命令
virt-install \
--name alma9-test \
--memory 2048 \
--vcpus 2 \
--disk path=/var/lib/libvirt/images/alma9.qcow2,size=20 \
--cdrom /path/to/AlmaLinux-9.2-x86_64-dvd1.iso \
--network bridge=virbr0 \
--graphics none \
--console pty,target_type=serial \
--location /path/to/AlmaLinux-9.2-x86_64-dvd1.iso \
--extra-args "console=ttyS0"
3.3 安装过程详解
图形界面安装(Physical/ILOM/KVM)
启动安装程序
- 从ISO启动后,进入GRUB菜单
- 选择”Install AlmaLinux 9” → Enter
语言选择
- 推荐选择English(避免中文编码问题)
- 键盘布局:US English
安装源选择
- Installation Source: Local media(如果使用ISO)
- 或选择Repository(网络安装)
软件选择
- 最小化安装(推荐生产环境):Minimal Install
- 基础服务器:基础服务器
- 完整安装:Workstation(不推荐,占用空间大)
我的建议:选Minimal Install,后续按需安装组件。
- 分区方案
- 自动分区:适合新手
- 自定义分区:生产环境推荐
推荐分区方案:
/boot 1GB ext4
/boot/efi 512MB vfat (UEFI启动需要)
/ 剩余空间 LVM xfs
swap 内存的1倍 (如果内存<8GB)
网络配置
- 启用网卡(ONBOOT=yes)
- 设置静态IP(生产环境必须)
- 配置DNS(至少一个,推荐两个)
Root密码设置
- 设置强密码(大小写字母+数字+特殊字符,≥12位)
- 记录密码到密码管理器(不要写在便签纸上)
开始安装
- 点击”Begin Installation”
- 等待完成(约10-30分钟,取决于硬件)
自动化安装(Kickstart)
生产环境推荐,可批量部署:
# version=DEVEL
# System authorization information
auth --enableshadow --passalgo=sha512
rootpw --iscrypted $6$rounds=656000$salt$hash
# Use text mode install
text
# Firstboot
firstboot --disable
# Keyboard layouts
keyboard --vckeymap=us --xlayouts='us'
# System language
lang en_US.UTF-8
# Network information
network --bootproto=static --ip=192.168.1.100 --netmask=255.255.255.0 --gateway=192.168.1.1 --dns=8.8.8.8 --hostname=alma9-prod
network --hostname=localhost
# Reboot after installation
reboot
# SELinux
selinux --enforcing
# Firewall
firewall --enabled --ssh
# System timezone
timezone Asia/Shanghai --isUtc
# System bootloader configuration
bootloader --location=mbr --boot-drive=sda
# Clear the Master Boot Record
zerombr
# Partition clearing information
clearpart --all --initlabel
# Disk partitioning
part /boot --fstype="xfs" --size=1024
part /boot/efi --fstype="efi" --size=512 --fsoptions="umask=0077,shortname=winnt"
part / --fstype="xfs" --size=1 --grow
%packages
@minimal
%end
%post
# 安装后脚本
yum install -y net-tools vim curl wget
# 禁用不需要的服务
systemctl disable firewalld.service
systemctl enable sshd.service
%end
使用Kickstart文件安装:
# 从ISO启动时,在GRUB菜单按'e'编辑启动项
# 在linux行末尾添加:
ks=http://your-server/kickstart.cfg
# 或
ks=cdrom:/ks.cfg
3.4 首次登录与基础配置
# SSH登录
ssh root@your-server-ip
# 修改root密码(新安装的系统密码可能不符合复杂度要求)
passwd root
# 创建普通用户
useradd -m -s /bin/bash adminuser
passwd adminuser
usermod -aG wheel adminuser # 加入wheel组获得sudo权限
重要安全配置:
# 禁用root直接SSH登录
sudo vi /etc/ssh/sshd_config
# 修改:
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
# 重启SSH服务
sudo systemctl restart sshd
# 测试新用户可以登录
exit
ssh adminuser@your-server-ip
四、包管理器配置:yum vs dnf
4.1 AlmaLinux 9的包管理器
AlmaLinux 9默认使用dnf,但yum命令仍然可用(符号链接)。
# 检查包管理器版本
dnf --version
yum --version
# 查看当前默认的包管理器
which yum
which dnf
输出示例:
dnf version 4.14.0
yum version 4.14.0
/usr/bin/yum -> dnf
/usr/bin/dnf
4.2 配置国内镜像源(加速下载)
AlmaLinux 9:
# 备份原配置
sudo cp /etc/yum.repos.d/almalinux.repo /etc/yum.repos.d/almalinux.repo.bak
# 编辑镜像源配置
sudo vi /etc/yum.repos.d/almalinux.repo
添加国内镜像:
[baseos]
name=AlmaLinux $releasever - BaseOS
baseurl=https://mirrors.aliyun.com/almalinux/$releasever/BaseOS/$basearch/os/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-AlmaLinux
enabled=1
[appstream]
name=AlmaLinux $releasever - AppStream
baseurl=https://mirrors.aliyun.com/almalinux/$releasever/AppStream/$basearch/os/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-AlmaLinux
enabled=1
其他国内镜像:
- 阿里云:https://mirrors.aliyun.com/almalinux/
- 腾讯云:https://mirrors.cloud.tencent.com/almalinux/
- 华为云:https://mirrors.huaweicloud.com/almalinux/
- 中科大:https://mirrors.ustc.edu.cn/almalinux/
# 清除缓存并重建
sudo dnf clean all
sudo dnf makecache
4.3 常用包管理命令
# 搜索包
dnf search nginx
dnf whatprovides '*/httpd.conf'
# 安装包
sudo dnf install -y nginx
sudo dnf install -y git vim curl wget
# 安装包组
sudo dnf groupinstall -y "Development Tools"
sudo dnf groupinstall -y "Legacy UNIX Compatibility"
# 卸载包
sudo dnf remove -y nginx
# 更新系统
sudo dnf update -y
sudo dnf upgrade -y # AlmaLinux 9推荐用upgrade
# 查看已安装包
dnf list installed
rpm -qa | grep nginx
# 查看包信息
dnf info nginx
rpm -qi nginx
# 历史操作
dnf history list
dnf history undo last
五、基础服务配置:生产环境必做
5.1 防火墙配置(firewalld)
# 查看防火墙状态
sudo firewall-cmd --state
# 查看已开放端口
sudo firewall-cmd --list-ports
sudo firewall-cmd --list-services
# 开放HTTP/HTTPS端口
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
# 开放SSH端口(默认22)
sudo firewall-cmd --permanent --add-service=ssh
# 开放自定义端口(如8080)
sudo firewall-cmd --permanent --add-port=8080/tcp
# 重载防火墙规则
sudo firewall-cmd --reload
# 验证
sudo firewall-cmd --list-all
常见问题排错:
# 问题:服务启动正常但外部无法访问
# 检查:
sudo firewall-cmd --list-ports | grep 8080
sudo netstat -tlnp | grep 8080
sudo ss -tlnp | grep 8080
# 问题:SSH连接超时
# 检查:
sudo firewall-cmd --list-services | grep ssh
sudo firewall-cmd --list-ports | grep 22
5.2 SELinux配置
# 查看SELinux状态
getenforce
sudo getenforce
# 临时设置(重启后失效)
sudo setenforce 0 # 禁用
sudo setenforce 1 # 启用
# 永久配置(需要重启)
sudo vi /etc/selinux/config
# 修改:
SELINUX=enforcing # 或disabled
SELINUXTYPE=targeted
# 查看SELinux上下文
ls -Z /var/www/html
ps -Z | grep httpd
# 常见SELinux问题排查
sudo ausearch -m avc -ts recent
sudo audit2allow -m mypol < /dev/stdin
最佳实践:
- 生产环境建议保持enforcing
- 如遇权限问题,先用
ausearch查看拒绝记录 - 使用
audit2allow生成自定义策略
5.3 系统时间同步
# 查看当前时间
date
timedatectl
# 启用NTP同步
sudo timedatectl set-ntp true
sudo timedatectl set-timezone Asia/Shanghai
# 检查同步状态
timedatectl status
chronyc sources # 如果使用chronyd
# 手动同步(备用)
sudo chronyd -q 'server 0.pool.ntp.org iburst'
sudo chronyd -q 'server 1.pool.ntp.org iburst'
常见问题:
- 云服务器时间漂移是常见问题,务必启用NTP
- 虚拟机环境建议使用chronyd而非ntpd
5.4 用户与权限管理
”`bash
查看用户
cat /etc/passwd | grep -v nologin | grep -v false
添加用户并授权
sudo useradd -m -s /bin/bash deploy sudo passwd deploy sudo usermod -aG wheel deploy # AlmaLinux使用wheel组授权sudo
配置sudoers(安全做法)
sudo visudo
添加:
deploy ALL=(ALL) NOPASSWD: /systemctl restart nginx
或
deploy ALL=(ALL) NOPASSWD: /usr/bin/systemctl *
