如果你最近还在用Ubuntu搭建生产环境,或者正在考虑从Ubuntu迁移到更稳定的企业级Linux发行版,那这篇文章就是为你准备的。AlmaLinux作为CentOS的“正统”继任者,继承了RHEL(Red Hat Enterprise Linux)的基因,稳定性极强,且完全兼容RHEL的二进制包。虽然它学习曲线稍微陡一点,但一旦上手,你会发现它在高负载服务器上的表现确实让人放心。
咱们先从最基础的装机说起。很多人习惯了Ubuntu的.deb包和apt,第一次接触AlmaLinux(本质是RHEL 9系列)时,看到yum和dnf可能会愣一下。别慌,其实区别不大。AlmaLinux 9默认使用dnf作为包管理器,它比旧的yum更快,依赖解析更智能。安装完系统后,第一步永远是更新系统:
sudo dnf update -y
这步不能省,确保你拿到的是最新的内核和安全补丁。接下来是网络配置。Ubuntu喜欢用Netplan,配置文件在/etc/netplan/,而AlmaLinux用的是传统的ifcfg脚本或者NetworkManager命令行工具nmcli。如果你习惯用命令行,nmcli是最方便的:
# 查看当前连接
nmcli con show
# 配置静态IP(假设网卡名为eth0)
nmcli con mod eth0 ipv4.addresses 192.168.1.100/24
nmcli con mod eth0 ipv4.gateway 192.168.1.1
nmcli con mod eth0 ipv4.dns "8.8.8.8 1.1.1.1"
nmcli con mod eth0 ipv4.method manual
nmcli con up eth0
这里有个大坑:很多从Ubuntu过来的朋友会忘记关闭NetworkManager的自动DNS更新,导致内部域名解析失败。记得检查/etc/NetworkManager/NetworkManager.conf,确保dhcp-domains没有意外覆盖你的DNS配置。
SELinux是另一个让新手头疼的东西。Ubuntu默认没启用强安全模块,但AlmaLinux默认开启SELinux。如果你直接跑一些未经过SELinux策略认证的代码(比如某些旧版Web服务器或自定义脚本),可能会遇到“Permission denied”却查不到原因的情况。我的建议是,生产环境不要直接禁用SELinux,而是学习如何使用audit2allow生成策略。比如,当应用被拦时,查看审计日志:
sudo ausearch -m avc -ts recent
sudo audit2allow -M mypol
sudo semodule -i mypol.pp
这样既能保持安全,又能让业务跑通。比直接setenforce 0要专业得多,也安全得多。
文件系统的选择上,AlmaLinux 9默认推荐xfs,这也是RHEL系列的经典搭配。相比ext4,XFS在处理大文件和高并发读写时表现更好。如果你的云服务商提供btrfs选项,除非你有明确的快照需求,否则老老实实用XFS。格式化时记得加上合适的参数:
mkfs.xfs -f /dev/vdb1
挂载时建议在/etc/fstab中加上noatime参数,减少磁盘写入:
/dev/vdb1 /data xfs defaults,noatime 0 0
接下来聊聊性能优化。AlmaLinux作为企业级系统,默认的内核参数比较保守,为了兼容各种老旧硬件和应用。但在云服务器上,这些限制反而成了瓶颈。你需要调整sysctl参数来释放性能。创建一个/etc/sysctl.d/99-custom.conf文件,加入以下内容:
# 增加TCP连接队列长度,防止高并发下的连接丢失
net.core.somaxconn = 65535
net.ipv4.tcp_max_syn_backlog = 65535
# 启用TCP快速打开
net.ipv4.tcp_fastopen = 3
# 优化内存回收
vm.swappiness = 1
vm.vfs_cache_pressure = 50
# 增加文件句柄数
fs.file-max = 1000000
fs.nr_open = 1000000
保存后执行sudo sysctl -p /etc/sysctl.d/99-custom.conf生效。这里特别要提vm.swappiness = 1,默认值是60,意味着系统比较爱用Swap分区。在内存充足的云服务器上,我们几乎不希望用到Swap,因为它比内存慢几个数量级,会严重拖慢数据库和Web服务。
包管理方面,如果你之前用PPA(Ubuntu的个人包档案)安装一些新软件,现在在AlmaLinux上得换思路。RHEL系讲究稳定,官方源里的软件版本可能偏旧。这时候你有两个选择:一是使用EPEL(Extra Packages for Enterprise Linux)源,它提供了大量常用软件;二是使用AppStream,这是RHEL 8/9引入的特性,可以在不破坏系统依赖的前提下安装更新版本的软件,比如Node.js、Python等:
# 启用EPEL
sudo dnf install epel-release -y
# 从AppStream安装Node.js 20
sudo dnf module enable nodejs:20 -y
sudo dnf install nodejs -y
最后,关于服务管理。Ubuntu用systemd,AlmaLinux也用systemd,所以命令是通用的。systemctl start nginx、systemctl enable nginx这些命令完全一样。但是,RHEL系的服务单元文件路径和一些默认配置略有不同。比如,Nginx的配置文件在/etc/nginx/,但模块加载路径可能在/usr/lib64/nginx/modules,而不是Ubuntu的/usr/lib/nginx/modules。如果你在nginx.conf里加载模块时路径写错了,启动就会失败,记得检查错误日志/var/log/nginx/error.log。
总之,从Ubuntu迁移到AlmaLinux,核心在于心态转变:不要把它当成一个“带GUI的桌面系统”,而要当成一个“为生产环境打磨的服务器操作系统”。严谨的配置、规范的管理习惯、对SELinux和系统日志的敬畏,会让你的服务器运行得更稳定。刚开始可能会觉得麻烦,但习惯之后,你会发现这种确定性带来的安全感,是那些追求“最新最酷”的发行版给不了的。
