嘿,朋友!欢迎来到Linux的世界。我知道你此刻可能正盯着屏幕上的终端发呆,或者刚刚花了几十块钱买了一台云服务器,看着那个黑漆漆的界面有点手足无措。别担心,这种“面对未知感到迷茫”的感觉,每个老手都是从新手时期熬过来的。
今天我们要聊的主角是 AlmaLinux。如果你听说过CentOS突然宣布停止维护,心里咯噔一下,那 AlmaLinux 就是你的“救命稻草”。它是RHEL(Red Hat Enterprise Linux)的1:1二进制兼容替代品,稳定、免费、社区驱动,简直就是为那些不想被大厂“背刺”的企业和个人开发者准备的。
这篇教程不会给你堆砌枯燥的定义,我会带你一步步走完从“裸机”到“能跑代码的生产环境”的全过程。我们会遇到坑,也会一起填坑。准备好了吗?让我们开始吧。
第一步:选对版本,别在起跑线就摔倒
在动手之前,你得先搞清楚你要装什么。AlmaLinux 目前主要有两个长期支持(LTS)的版本:8 和 9。
- AlmaLinux 8:基于 RHEL 8,内核较旧但极其稳定,生态软件包丰富。如果你的业务依赖一些老旧的库,或者你更熟悉 CentOS 8 时代的操作,选这个。
- AlmaLinux 9:基于 RHEL 9,更新的技术栈,更好的性能,支持更新的硬件特性。如果你是新项目,建议直接上 9。
我的建议:除非你有明确的理由必须用 8,否则默认选择 AlmaLinux 9。它是未来几年的主流。
如何获取镜像?
你不需要自己去官网翻箱倒柜找 ISO 文件。大多数云服务商(阿里云、腾讯云、AWS、DigitalOcean 等)在创建实例时,镜像列表里通常已经有 AlmaLinux 了。
如果没有预装镜像怎么办? 你可以去 AlmaLinux 官网 下载 ISO,然后通过控制台上传镜像或使用 KVM/VNC 挂载安装。但对于云服务器新手,强烈建议直接使用云厂商提供的官方镜像,这样可以省去网络配置和驱动适配的麻烦。
第二步:初始连接与“第一次握手”
假设你的云主机已经启动起来了,IP 地址也到手了。现在,打开你的终端(Mac/Linux)或 PowerShell/CMD(Windows,需开启 OpenSSH 客户端),尝试连接:
ssh root@你的服务器IP
这时候,你可能会遇到几个经典的“见面礼”:
报错 1:Host key verification failed
这是 SSH 的安全机制在起作用。它发现你的电脑和这台服务器以前没“见过面”,或者服务器的指纹变了(比如重装过系统)。
解决方法:
- 确认 IP 没错。
- 如果是重装过系统,你需要清除本地旧的密钥记录。
- Mac/Linux:
ssh-keygen -R 你的服务器IP - Windows: 编辑
C:\Users\你的用户名\.ssh\known_hosts文件,删除对应 IP 的那一行。
- Mac/Linux:
- 再次尝试连接,当提示
Are you sure you want to continue connecting (yes/no/[fingerprint])?时,输入yes并回车。
报错 2:Permission denied (publickey)
很多云厂商默认禁止 root 密码登录,只允许密钥登录。如果你没有上传私钥,或者密码不对,就会报这个错。
解决方法:
检查你是否使用了正确的私钥文件:
ssh -i /path/to/private_key.pem root@IP如果确实需要密码登录,且云厂商支持重置密码功能,请在控制台重置 root 密码。
修改 SSH 配置(重启后生效):
sudo vi /etc/ssh/sshd_config # 找到 PermitRootLogin,改为 yes # 找到 PasswordAuthentication,改为 yes sudo systemctl restart sshd
小贴士:连接成功后,你会看到类似
Last login: ...的信息。这说明你已经成功“敲开”了服务器的大门。
第三步:网络配置——让服务器真正“在线”
很多新手在这里卡住,因为装了系统却发现 ping 不通外网,或者外网连不进内网。在 AlmaLinux 9 中,网络管理工具已经从传统的 network-scripts 全面转向了 NetworkManager。
检查网络状态
首先,看看网卡是否启动,IP 是否正确分配。
# 查看所有网络接口的状态
nmcli device status
# 查看当前连接的详细信息
nmcli connection show
你应该能看到一个名为 eth0 或 ens18 的设备,状态是 connected。
配置静态 IP(可选但推荐)
对于云服务器,动态 IP(DHCP)虽然方便,但重启后 IP 可能会变(取决于云厂商策略),这会给后续配置带来麻烦。建议设置为静态 IP。
假设你的云厂商分配的内网 IP 段是 192.168.1.0/24,网关是 192.168.1.1,DNS 是 8.8.8.8。
# 使用 nmcli 修改现有连接
sudo nmcli con mod "System eth0" ipv4.method manual \
ipv4.addresses 192.168.1.100/24 \
ipv4.gateway 192.168.1.1 \
ipv4.dns "8.8.8.8 114.114.114.114"
# 重新激活连接
sudo nmcli con up "System eth0"
验证网络:
ping -c 4 baidu.com
如果能通,恭喜你,网络层搞定了。
常见问题排查
- Ping 不通外网?
- 检查防火墙:
sudo firewall-cmd --state。如果是running,可能需要放行 ICMP 或暂时关闭测试sudo systemctl stop firewalld。 - 检查路由表:
ip route show。确保有一条默认路由指向网关。 - DNS 问题:如果 ping IP 通但 ping 域名不通,检查
/etc/resolv.conf是否有 nameserver。
- 检查防火墙:
第四步:系统更新与安全加固
拿到一台新服务器,第一件事不是装软件,而是打补丁和加强安全。这就像给房子换锁、加固门窗。
1. 更新系统
sudo dnf update -y
这个过程可能需要几分钟,取决于网络速度和包的数量。更新完成后,建议重启一次,以确保内核更新生效:
sudo reboot
重启后重新 SSH 登录。
2. 创建普通用户(重要!)
永远不要用 root 账号日常操作!一旦误删系统文件,后果不堪设想。我们要创建一个带有 sudo 权限的普通用户。
# 创建新用户,例如叫 'devuser'
sudo adduser devuser
# 设置密码
sudo passwd devuser
# 将用户加入 wheel 组,获得 sudo 权限
sudo usermod -aG wheel devuser
现在,你可以用 devuser 登录,并在命令前加 sudo 执行管理员操作。
3. 配置 SSH 密钥登录(替代密码)
为了更安全,我们禁用密码登录,只用密钥。
# 在本地机器生成密钥(如果还没有的话)
ssh-keygen -t ed25519 -C "your_email@example.com"
# 将公钥复制到服务器
ssh-copy-id devuser@你的服务器IP
测试能否免密登录:
ssh devuser@你的服务器IP
成功后,编辑 SSH 配置文件禁用密码登录:
sudo vi /etc/ssh/sshd_config
# 修改以下两项:
PasswordAuthentication no
PermitRootLogin no
# 重启 SSH 服务
sudo systemctl restart sshd
警告:在禁用密码和 root 登录前,务必确保你已经能用密钥登录,并且已经测试过普通用户的 sudo 权限。否则,你可能把自己锁在门外!
第五步:基础环境搭建——根据你的需求来
AlmaLinux 本身只是一个操作系统内核和基础工具集。要让它“有用”,你需要安装软件。这里我提供三种常见场景的配置方案。
场景 A:Web 开发环境 (Nginx + PHP + MySQL)
适合搭建 WordPress、博客或轻量级 Web 应用。
# 1. 安装 EPEL 仓库(扩展包,提供更多软件)
sudo dnf install epel-release -y
# 2. 安装 Nginx
sudo dnf install nginx -y
sudo systemctl enable nginx --now
# 3. 安装 PHP 8.2 (AlmaLinux 9 默认源可能包含较新版本)
sudo dnf install php php-fpm php-mysqlnd php-json php-gd php-mbstring -y
sudo systemctl enable php-fpm --now
# 4. 安装 MariaDB (MySQL 的开源分支)
sudo dnf install mariadb-server -y
sudo systemctl enable mariadb --now
sudo mysql_secure_installation # 按提示设置 root 密码和安全选项
配置 Nginx 支持 PHP:
编辑 /etc/nginx/conf.d/default.conf,在 location / 块中添加 PHP 处理规则,并确保 index.php 在 index 指令中。
场景 B:Java 开发环境 (JDK + Maven)
适合运行 Spring Boot 微服务。
# 1. 安装 OpenJDK 17 (LTS 版本)
sudo dnf install java-17-openjdk-devel -y
# 2. 验证安装
java -version
# 3. 安装 Maven
sudo dnf install maven -y
# 4. 验证安装
mvn -v
场景 C:容器化环境 (Docker)
现代开发的首选,隔离性强,部署简单。
# 1. 添加 Docker 官方仓库
sudo dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo
# 2. 安装 Docker Engine
sudo dnf install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y
# 3. 启动并启用 Docker
sudo systemctl enable docker --now
# 4. 将当前用户加入 docker 组,避免每次都要 sudo
sudo usermod -aG docker $USER
# 注意:需要重新登录或执行 newgrp docker 才能生效
# 5. 测试运行 Hello World
docker run hello-world
第六步:防火墙与端口管理——别把门焊死,但也别敞开
AlmaLinux 使用 firewalld 作为默认防火墙。新手常犯的错误是:要么完全关闭防火墙(极度危险),要么不知道如何开放特定端口。
查看当前规则
sudo firewall-cmd --list-all
开放常用端口
假设你要运行 Web 服务,需要开放 HTTP (80) 和 HTTPS (443) 端口:
# 永久开放 80 端口
sudo firewall-cmd --permanent --add-service=http
# 永久开放 443 端口
sudo firewall-cmd --permanent --add-service=https
# 如果你自定义了其他端口,比如 8080
sudo firewall-cmd --permanent --add-port=8080/tcp
# 重载防火墙使配置生效
sudo firewall-cmd --reload
常见报错解决:Connection Refused
如果你配置了服务,防火墙也开了,但还是连不上:
- 检查服务是否在监听:
sudo ss -tlnp | grep :80 - 检查云厂商的安全组(Security Group)!这是最容易忽略的一点。云服务器的防火墙有两层:
- 系统内部的
firewalld。 - 云平台控制台里的“安全组”规则。
- 你必须同时在云平台控制台放行端口,否则流量根本到不了你的服务器。
- 系统内部的
第七步:监控与维护——做个负责任的管家
服务器跑起来后,你需要知道它的健康状况。
1. 查看资源使用
# 查看 CPU 和内存
htop # 如果没有安装,sudo dnf install htop -y
# 查看磁盘空间
df -h
# 查看磁盘 IO
iotop # 如果没有安装,sudo dnf install iotop -y
2. 查看日志
当服务出错时,日志是唯一的线索。
# 查看系统日志
journalctl -xe
# 查看 Nginx 错误日志
sudo tail -f /var/log/nginx/error.log
# 查看 DNF 安装历史
sudo dnf history list
3. 自动安全更新
为了防止漏掉安全补丁,可以启用自动更新。
# 安装 dnf-automatic
sudo dnf install dnf-automatic -y
# 启用每日自动更新服务
sudo systemctl enable --now dnf-automatic-install.timer
给新手的特别叮嘱:避坑指南
备份!备份!备份! 在修改任何配置文件之前,先复制一份。比如:
sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak这不是废话,这是血泪教训。
不要盲目复制粘贴命令 网上很多教程是针对 Ubuntu 或 CentOS 7 的。AlmaLinux 9 的命令略有不同(比如
dnfvsyum,nmclivsifcfg)。理解命令的含义比盲从更重要。时间同步很重要 如果你的服务器时间与本地时间相差太大,SSL 证书会失效,数据库会报错。确保 NTP 服务正常运行:
timedatectl status sudo timedatectl set-ntp true关于 SELinux AlmaLinux 默认开启 SELinux。它会增加安全性,但也可能导致一些奇怪的权限错误(比如 Nginx 无法访问某些目录)。
- 新手建议:在完全理解 SELinux 之前,可以先将其设为宽容模式进行测试:
sudo setenforce 0 - 长期建议:学习如何正确配置 SELinux 上下文,而不是直接关闭它。生产环境不建议直接禁用 SELinux。
- 新手建议:在完全理解 SELinux 之前,可以先将其设为宽容模式进行测试:
结语
恭喜你!到这里,你已经拥有一台干净、安全、可配置的 AlmaLinux 云服务器了。它不再是一个黑乎乎的终端,而是一个可以承载你梦想的平台。
Linux 的学习曲线确实有点陡峭,尤其是刚开始面对命令行时。但请记住,每一次报错都是系统在和你对话,每一个配置文件的修改都是在塑造你的工作环境。不要害怕犯错,只要做好备份,随时可以重来。
如果你在安装过程中遇到了具体的报错,或者在配置某个服务时卡住了,欢迎回来查看日志,或者在社区里提问。技术社区的魅力就在于互助和分享。
现在,去部署你的第一个应用吧!也许下一个改变世界的 App,就运行在这台小小的服务器上。加油!
