哈喽!我是 Agnes。既然你点开了这篇指南,说明你可能刚在某个云服务商那里买了一台轻量应用服务器,或者 ECS、CVM,屏幕前对着那个黑漆漆的终端窗口,心里有点打鼓:“这玩意儿咋弄?弄错了会不会炸?”
别慌。AlmaLinux 是个好东西,它是 CentOS 的“亲儿子”(继承者),稳定、安全、免费,而且和社区版 RHEL 完全二进制兼容。很多老运维从 CentOS 8 迁移过来,发现 Alma 就是那个“熟悉的陌生人”,用起来特别顺手。
今天咱们不整那些虚头巴脑的教科书式定义,我把你当成我隔壁刚入行的小师弟,咱们一边敲命令,一边聊背后是啥逻辑。我会把整个过程拆成几个阶段:连上去 -> 修修补补 -> 加固防身 -> 跑点东西 -> 长期保养。准备好了吗?开整。
第一阶段:先跟服务器“打个招呼”
很多新手第一步就卡在这儿:IP 地址拿到了,密码也重置了,但是 SSH 连不上,或者连上了不知道怎么操作。
1.1 找到你的入口
首先,你得知道你的服务器长啥样。登录你的云厂商控制台(阿里云、腾讯云、AWS、DigitalOcean 都行),找到你的实例,记下两个关键信息:
- 公网 IP:比如
43.123.45.67 - 用户名:默认通常是
root,但有些厂商会给你个ec2-user或者ubuntu(不过既然咱们装的是 AlmaLinux,默认就是root或者你创建时指定的用户)。
1.2 连接服务器
Windows 用户: 如果你还在用 Windows,别用那种老旧的 PuTTY 了(虽然也能用),现在推荐下载 MobaXterm 或者 Termius。MobaXterm 免费功能就很强,界面友好,左边还能看到文件夹,像操作本地电脑一样操作远程服务器。
Mac / Linux 用户: 直接在终端里敲:
ssh root@你的服务器IP
# 例如:ssh root@43.123.45.67
第一次连接时,会问你 Are you sure you want to continue connecting (yes/no/[fingerprint])?,输入 yes 回车。然后输入密码。注意:Linux 输入密码时屏幕上不会显示任何字符,连星号都没有,这是正常的,瞎输完按回车就行。
1.3 第一个好习惯:切换用户
虽然 root 权限大,但直接用 root 干活就像开着法拉利在小区里飙车,一旦手抖删错东西,后果很严重。而且很多安全策略禁止 root 直接远程登录。
咱们先给系统加个小秘书(普通用户),再给他 sudo 权限。
# 创建新用户,比如叫 agnes
useradd -m -s /bin/bash agnes
# 设置密码
passwd agnes
# 把用户加入 wheel 组(在 AlmaLinux/RHEL 系里,wheel 组默认有 sudo 权限)
usermod -aG wheel agnes
接下来,咱们尝试用新账号登出再登入,感受一下 sudo 的感觉:
exit
ssh agnes@你的服务器IP
# 输入密码登录
登录成功后,尝试执行一条需要 root 权限的命令,比如查看系统日志:
sudo dmesg | tail -n 5
系统会问你 agoness 的密码,输入后回车。如果成功了,恭喜你,你已经脱离了“裸奔 root”的状态。
第二阶段:系统“体检”与基础优化
服务器连上去了,现在咱们得让它变得听话、好用。
2.1 更新系统:把漏洞堵上
AlmaLinux 的包管理器是 dnf(现在也是 yum 的替身,但推荐用 dnf)。首次登录,第一件事就是更新。
sudo dnf update -y
这条命令会检查所有已安装的软件包,找到有更新版本的,然后下载并安装。-y 表示“是,我确认,别问我了”。
为什么这很重要? 新买的云服务器镜像可能已经过时了几个月,里面可能有已知的安全漏洞。更新完系统,你的起跑线就和大多数人不一样了。
更新完后,如果内核更新了,通常需要重启才能生效:
sudo reboot
重启后,再次 SSH 连上去,确认版本:
cat /etc/os-release
你应该能看到类似这样的输出:
NAME="AlmaLinux"
VERSION="9.4 (Sea of Green)"
ID="almalinux"
ID_LIKE="rhel centos fedora"
VERSION_ID="9.4"
...
2.2 配置时区:别让大家以为你在另一个时空
如果服务器在国外,时区可能是 UTC。但如果你是国内用户,访问者看到日志时间是乱的,会很困惑。
# 查看当前时区
timedatectl status
# 设置为上海时间
sudo timedatectl set-timezone Asia/Shanghai
# 再次确认
timedatectl status
看到 Time zone: Asia/Shanghai (CST, +0800) 就对了。
2.3 同步时间:让时钟准一点
时间是分布式系统的命脉。如果时间不对,SSL 证书会报错,数据库同步会乱,日志对不上。咱们装个 NTP 服务来自动校准时间。
AlmaLinux 9 默认使用 chronyd。
sudo dnf install chrony -y
sudo systemctl enable --now chronyd
sudo systemctl status chronyd
看看状态是不是 active (running)。如果没问题,时间同步就交给系统自己跑了,你不用管它。
第三阶段:加固——给服务器穿甲
这一步是最关键的。云服务器是暴露在公网上的,每天有无数扫描器在撞门。咱们得把门加固。
3.1 修改 SSH 端口:少招点烦
默认的 SSH 端口是 22。这是黑客扫描的第一步。改成一个大一点的端口,比如 2222。
但在改之前,请务必确认你的云厂商控制台开启了该端口的防火墙! 否则改完你连不进去,只能去控制台花半小时重启服务器改回来。
以阿里云/腾讯云为例,在控制台的“安全组”或“防火墙”规则里,添加入方向规则:
- 协议:TCP
- 端口:2222
- 授权对象:0.0.0.0/0(或者你的固定 IP)
然后在服务器内部修改 SSH 配置:
sudo vim /etc/ssh/sshd_config
找到 Port 22 这行,把它改成:
Port 2222
同时,建议关闭 root 直接登录,只允许密钥登录或者普通用户登录。找到以下行并修改:
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
等等! PasswordAuthentication no 意味着你只能用密钥登录。如果你还没配置密钥,那就别急着关密码,否则你自己也登不进去。咱们先只改端口和禁止 root 登录,保留密码登录备用。
保存退出(在 vim 里按 Esc,输入 :wq,回车)。
然后重启 SSH 服务:
sudo systemctl restart sshd
测试一下! 打开一个新的终端窗口,用新端口连接:
ssh -p 2222 root@你的服务器IP
如果连上了,说明修改成功。如果连不上,别慌,回到旧窗口(那个没改过的 SSH 窗口)检查日志:
sudo journalctl -u sshd -f
看看报错信息。确认新端口能登录后,咱们再回来处理密钥登录的问题。
3.2 配置防火墙:只开必要的门
AlmaLinux 默认使用 firewalld。咱们得把它启用,并只开放我们需要的端口。
# 启用防火墙
sudo firewall-cmd --permanent --add-service=ssh
sudo firewall-cmd --permanent --add-port=2222/tcp
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload
# 查看当前开放的端口
sudo firewall-cmd --list-all
这就把 SSH(2222)、HTTP(80)、HTTPS(443)打开了。如果你还要开其他端口(比如 3306 数据库端口),千万不要直接对所有 IP 开放! 最好是只对你的本地 IP 开放,或者干脆不开放,通过跳板机访问。
3.3 安装 fail2ban:防暴力破解的神器
就算改了端口,还是会有人在扫。Fail2ban 可以监测登录日志,如果发现某个 IP 多次失败,就直接把它封掉。
sudo dnf install epel-release -y
sudo dnf install fail2ban -y
sudo systemctl enable --now fail2ban
然后编辑配置文件:
sudo vim /etc/fail2ban/jail.local
加入以下内容:
[DEFAULT]
# 忽略本地请求
ignoreip = 127.0.0.1/8 ::1
# banning time: 1 hour
bantime = 1h
# finding time: 10 minutes
findtime = 10m
# max retries: 5 times
maxretry = 5
[sshd]
enabled = true
port = ssh,2222
filter = sshd
logpath = /var/log/secure
backend = systemd
重启 fail2ban 让配置生效:
sudo systemctl restart fail2ban
现在,如果有人尝试 5 次密码错误,他就会被拉黑 1 小时。
第四阶段:搭建一个实战环境
光说不练假把式。咱们来部署一个最简单的 Web 服务,让外网能访问到。这里我用 Nginx 作为 Web 服务器,因为它轻量、快速、配置简单。
4.1 安装 Nginx
sudo dnf install nginx -y
sudo systemctl enable --now nginx
4.2 检查状态
sudo systemctl status nginx
应该看到绿色的 active (running)。
4.3 确保防火墙放行 HTTP/HTTPS
刚才咱们已经加过了,但再确认一下:
sudo firewall-cmd --list-all | grep services
如果有 http 和 https,那就没问题。
4.4 访问你的服务器
拿出浏览器,输入 http://你的服务器IP。
如果你看到了 “Welcome to Nginx!” 的页面,恭喜你!你的服务器已经开始工作啦。
4.5 配置一个基本的虚拟主机(可选)
假设你有一个域名 example.com 解析到了这台服务器。咱们来配置一下。
sudo vim /etc/nginx/conf.d/example.com.conf
填入:
server {
listen 80;
server_name example.com www.example.com;
root /var/www/example.com/html;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
创建目录并放一个首页:
sudo mkdir -p /var/www/example.com/html
echo "<h1>Hello from AlmaLinux!</h1>" | sudo tee /var/www/example.com/html/index.html
测试配置语法:
sudo nginx -t
如果显示 syntax is ok 和 test is successful,就重启 Nginx:
sudo systemctl reload nginx
现在访问 http://example.com,你应该能看到那句问候了。
第五阶段:生产环境的“进阶技巧”
上面只是让服务跑起来。在生产环境,我们还需要考虑更多。
5.1 备份策略:不要等到丢了才后悔
数据无价。咱们写一个简单的备份脚本,每天凌晨备份网站文件和数据库。
创建脚本:
sudo vim /root/backup.sh
内容:
#!/bin/bash
BACKUP_DIR="/var/backups"
DATE=$(date +%Y%m%d_%H%M%S)
WEBSITE_DIR="/var/www"
DB_NAME="my_database"
DB_USER="my_user"
DB_PASS="my_password"
mkdir -p $BACKUP_DIR
# 备份网站文件
tar -czf $BACKUP_DIR/website_$DATE.tar.gz $WEBSITE_DIR
# 备份数据库
mysqldump -u $DB_USER -p$DB_PASS $DB_NAME > $BACKUP_DIR/database_$DATE.sql
# 删除7天前的备份
find $BACKUP_DIR -type f -mtime +7 -delete
给脚本执行权限:
sudo chmod +x /root/backup.sh
加入定时任务(crontab):
sudo crontab -e
添加这一行,表示每天凌晨 3 点执行:
0 3 * * * /root/backup.sh
5.2 监控:别让服务器“沉默地死去”
你可以安装一个简单的监控工具,比如 htop 和 nmon。
sudo dnf install htop nmon -y
htop 比 top 更直观,有颜色,能看进程树。nmon 可以生成性能报告。
如果你想要更专业的监控(比如 Zabbix、Prometheus),那又是另一个大话题了。但对于个人博客或小项目,装个 netdata 可能更香:
bash <(curl -Ss https://my-netdata.io/kickstart.sh)
装完后,访问 http://你的服务器IP:19999,你会看到一个非常炫酷的实时监控面板,CPU、内存、磁盘、网络一目了然。
5.3 SSL 证书:强制 HTTPS
现在没有 HTTPS 的网站,浏览器都会显示“不安全”。咱们用免费的 Let’s Encrypt 来加证书。
首先安装 certbot:
sudo dnf install certbot python3-certbot-nginx -y
然后运行:
sudo certbot --nginx -d example.com -d www.example.com
跟着提示走,输入邮箱,同意条款,选择是否重定向 HTTP 到 HTTPS。完成后,Nginx 的配置会自动被修改,加上 SSL 相关的内容。
再次访问 https://example.com,你应该能看到小锁标志了。
第六阶段:日常维护与心态建设
部署完成不是结束,而是开始。
6.1 定期更新
虽然 AlmaLinux 9 是长期支持版本,但漏洞补丁还是要打的。建议每周或每月执行一次:
sudo dnf update -y
6.2 日志检查
遇到问题先看日志。Nginx 的错误日志在 /var/log/nginx/error.log,系统日志可以用 journalctl。
# 实时查看系统日志
sudo journalctl -f
# 查看昨天的日志
sudo journalctl --since "yesterday"
6.3 心态:别怕犯错
我第一次接触 Linux 服务器时,把 rm -rf / 的警告当耳旁风,结果吓得手抖。后来发现,只要做好备份、用对命令,其实没那么可怕。
如果你不小心搞乱了配置,不要慌。想想刚才的步骤,一步步排查。大部分问题都能在官方文档或 StackOverflow 上找到答案。AlmaLinux 的社区虽然不如 Ubuntu 那么热闹,但因为它是 RHEL 系的,所以很多 CentOS 的教程依然适用。
结语
好了,从连上 SSH 到配置 Nginx、HTTPS、备份脚本,咱们走了一大圈。
你现在拥有的,不仅仅是一台装了 AlmaLinux 的云服务器,而是一套基础扎实、相对安全、可维护的生产环境雏形。
接下来的路,取决于你想做什么:
- 想跑博客?试试 WordPress。
- 想搞后端?试试 Docker + Nginx。
- 想学运维?试试部署 Prometheus + Grafana。
记住,实践是唯一的捷径。多敲命令,多报错,多查文档。慢慢地,你就会像熟悉自己的家一样熟悉这台服务器了。
如果过程中遇到任何坑,欢迎回来翻翻这篇指南,或者去官方文档里找找答案。祝你在 Linux 的世界里玩得开心!
附录:常用命令速查表
| 用途 | 命令 |
|---|---|
| 查看系统信息 | uname -a, cat /etc/os-release |
| 更新系统 | sudo dnf update -y |
| 重启系统 | sudo reboot |
| 查看磁盘空间 | df -h |
| 查看内存使用 | free -h |
| 查看进程 | htop, ps aux |
| 管理服务 | sudo systemctl start/stop/restart/status 服务名 |
| 编辑文件 | sudo vim 文件名 |
| 查看日志 | sudo journalctl -u 服务名 -f |
| 开放端口 | sudo firewall-cmd --permanent --add-port=端口/协议, sudo firewall-cmd --reload |
希望这份指南能帮到你!如果有具体报错,把错误信息贴出来,咱们再一起琢磨琢磨。
