说实话,刚开始用Linux的时候,我对着黑漆漆的终端界面,真的有点慌。尤其是选发行版的时候,Ubuntu用惯了,突然换成AlmaLinux,那种“这文件在哪?”、“命令怎么不一样了?”的挫败感,相信很多刚入行的开发者都懂。但当你真正理顺了这套逻辑,你会发现AlmaLinux那种RHEL系的稳定感,确实是生产环境的神队友。今天咱们不聊虚的,就手把手带你从零把这台服务器盘得服服帖帖,顺便把那些让人头秃的坑都填平。
首先,咱们得有个清醒的认知:AlmaLinux是Rocky Linux的“兄弟”,都是CentOS Stream空缺后的最佳填补者,它承诺95%+的二进制兼容RHEL。这意味着,你在企业级生产环境里能用的那些包和配置,在AlmaLinux上基本都能跑,而且社区文档丰富,安全性跟进极快。
第一步:连接与基础加固——别急着装软件
很多人拿到服务器第一件事就是yum install xxx,停!这是新手最大的误区。你先是个“闯入者”,得先把自己洗干净,再进屋干活。
1. 改个习惯:别总用root裸奔
root权限大,但一旦手抖,删库跑路就在一瞬间。咱们得创建一个普通用户,并赋予sudo权限。假设你通过SSH连上了服务器,默认是root登录:
# 创建新用户,比如叫devuser
useradd -m -s /bin/bash devuser
# 设置密码,记得设个复杂的
passwd devuser
# 把用户加入wheel组,这样他就有sudo权限了
usermod -aG wheel devuser
接下来,得改SSH配置,禁止root直接登录。这一步能挡掉90%的暴力破解攻击。编辑/etc/ssh/sshd_config:
vim /etc/ssh/sshd_config
找到这几行,改成这样:
PermitRootLogin no
PubkeyAuthentication yes
PasswordAuthentication no # 强烈建议,只用密钥登录
改完记得重启SSH服务:systemctl restart sshd。然后,千万别关当前窗口,新开一个终端,用你的新用户和密钥试着连一下。确认没问题了,再关掉root会话。
2. 密钥登录配置
在你的本地机器(Mac或Windows WSL)上生成密钥对:
ssh-keygen -t ed25519 -C "your_email@example.com"
# 一路回车,默认选项即可
然后把公钥复制到服务器:
ssh-copy-id devuser@你的服务器IP
以后登录就只需要敲ssh devuser@IP,连密码都不用输,既安全又潇洒。
第二步:系统更新与防火墙——把窗户关好
连接成功后,咱们先让系统处于最新状态。AlmaLinux的包管理器是dnf,比老的yum快多了。
sudo dnf update -y
这个过程可能有点久,喝口咖啡等着。更新完最好重启一下,让内核生效:
sudo reboot
重启后重新登录。接下来配置防火墙。AlmaLinux默认用firewalld,咱们得打开常用端口(比如80, 443, 22)并关闭不需要的。
# 查看当前状态
sudo firewall-cmd --state
# 永久开放HTTP和HTTPS
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
# 如果你改了SSH端口,比如改成了2222,必须开放这个端口
sudo firewall-cmd --permanent --add-port=2222/tcp
# 重载配置使生效
sudo firewall-cmd --reload
如果你懒得记命令,还可以安装一个可视化的防火墙管理工具,比如firewall-config,不过在生产环境还是命令行更靠谱。
第三步:常见报错与避坑指南——血泪总结
在这一步,我要特别拿出来说几个新手最容易踩的雷。
坑一:SELinux导致的“权限拒绝”
这是AlmaLinux/RHEL系最让人头疼的东西。你明明chmod 777了,还是读不了文件?或者Nginx启动不了,报错Permission denied?大概率是SELinux在作妖。
先别急着关掉它(虽然setenforce 0能解决一切,但不推荐,那是掩耳盗铃)。咱们要学会和它共处。
# 查看SELinux状态
sestatus
# 查看当前上下文
ls -Z /var/www/html
# 如果是Web服务,通常需要的上下文是httpd_sys_content_t
sudo chcon -Rt httpd_sys_content_t /var/www/html
如果还是搞不定,可以用audit2allow来分析审计报告,生成策略。但对于初学者,我建议先装个工具方便排查:
sudo dnf install setroubleshoot-server -y
它会在/var/log/audit/audit.log里给你写得明明白白。
坑二:DNS解析失败
有时候你ping域名不通,但ping IP通。这通常是DNS配置问题。AlmaLinux默认使用NetworkManager,配置DNS很简单:
# 查看当前网络连接
nmcli connection show
# 假设你的连接名是System eth0,设置DNS
sudo nmcli connection modify "System eth0" ipv4.dns "8.8.8.8 1.1.1.1"
# 重启网络
sudo nmcli connection up "System eth0"
或者干脆直接编辑/etc/resolv.conf,但要注意,这个文件是NetworkManager管理的,重启后可能会丢失。所以推荐用nmcli。
坑三:时区不对
服务器时间不对,会导致日志混乱、SSL证书验证失败等一系列诡异问题。
# 查看当前时区
timedatectl
# 设置为上海时间
sudo timedatectl set-timezone Asia/Shanghai
第四步:性能优化——让小服务器跑出大服务器的感觉
服务器配置可能不高,但通过一些 tweaks,性能可以提升不少。
1. 调整TCP参数
编辑/etc/sysctl.conf,加入以下内容:
net.core.somaxconn = 1024
net.ipv4.tcp_max_syn_backlog = 2048
net.core.netdev_max_backlog = 2048
net.ipv4.tcp_tw_reuse = 1
net.ipv4.ip_local_port_range = 1024 65535
然后生效:
sudo sysctl -p
这些参数能显著提升高并发下的网络连接处理能力。
2. 调整文件描述符限制
默认情况下,单个进程能打开的文件数有限。对于Web服务,这容易成为瓶颈。
# 编辑limits.conf
sudo vim /etc/security/limits.conf
# 添加以下内容,*表示所有用户,soft和hard都要设
* soft nofile 65536
* hard nofile 65536
root soft nofile 65536
root hard nofile 65536
3. 关闭不需要的服务
AlmaLinux默认会启动很多服务,咱们清理一下,减少资源占用。
# 查看正在运行的服务
systemctl list-units --type=service --state=running
# 关闭一些没用的,比如打印机服务
sudo systemctl stop cups
sudo systemctl disable cups
第五步:实战部署——以Nginx + PHP-FPM为例
好了,环境准备得差不多了,咱们来点实际的。假设你要部署一个WordPress网站,需要Nginx和PHP。
# 安装EPEL源,很多软件在这里
sudo dnf install epel-release -y
# 安装Nginx和PHP
sudo dnf install nginx php php-fpm php-mysqlnd php-json php-gd php-mbstring -y
# 启动并设置开机自启
sudo systemctl start nginx
sudo systemctl enable nginx
sudo systemctl start php-fpm
sudo systemctl enable php-fpm
# 配置Nginx
sudo vim /etc/nginx/conf.d/default.conf
在Nginx配置里,你需要确保fastcgi_pass指向正确的PHP-FPM socket或端口。AlmaLinux上默认是unix socket:
location ~ \.php$ {
fastcgi_pass unix:/run/php-fpm/www.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
测试配置并重载Nginx:
sudo nginx -t
sudo systemctl reload nginx
这时候,你可以创建一个info.php文件放在网站根目录,访问看看PHP是否正常解析。
结语:持续维护才是正道
服务器部署完不是结束,而是开始。记得定期更新系统:
sudo dnf update -y
设置一个crontab自动更新:
crontab -e
# 加入:0 2 1 * * /usr/sbin/dnf update -y --security
这样每月凌晨2点会自动修补安全漏洞。
最后,送你一句话:Linux不是魔法,它是逻辑。每一个报错背后,都藏着系统的运行规律。当你不再害怕黑底白字的终端,而是能从容地grep、sed、awk时,你就真正入门了。AlmaLinux是个稳重可靠的伙伴,你对它越好,它回报你的稳定性就越高。去吧,折腾起来!
