AlmaLinux云服务器部署新手必看从零初始化配置到常用软件安装完整流程解决SSH连不上防火墙设置等常见问题
拿到一台新的云服务器,心里咯噔一下,SSH连不上、防火墙报错、命令敲下去没反应,这种崩溃的感觉我太懂了。别慌,今天咱们就从头到尾把AlmaLinux的部署流程捋清楚,我把这些年在服务器上踩过的坑都给你整理好了,跟着做,保证你的服务器乖乖听话。
一、拿到服务器第一件事:连上它
新买的云服务器,厂商通常会给你一堆信息:IP地址、用户名、密码,或者SSH密钥。先别急着装软件,先把连接搞定。
SSH连不上的常见原因
很多新手遇到这个问题,第一反应是”我是不是被黑了”,其实绝大多数时候是网络或配置问题。
第一步:检查网络连通性
打开你的本地终端(Windows用PowerShell或CMD,Mac/Linux直接用终端),输入:
ping 你的服务器IP
如果ping不通,说明网络层面就有问题。先检查你自己的网络是否正常,是不是公司防火墙把ping拦住了(这种情况很常见)。尝试换一种方式,比如用手机热点试试。
第二步:检查端口是否开放
SSH默认用的是22端口。如果ping通了但连不上,很可能是端口没开放。登录云厂商的控制台(阿里云、腾讯云、AWS whatever),找到你的服务器,检查安全组规则。你需要确保 inbound(入站)规则里有允许TCP 22端口的规则。
举个例子,我在阿里云上遇到过这种情况:安全组默认只开放了80和443端口,SSH根本没开。在安全组规则里加一条:
协议:TCP
端口范围:22
授权对象:0.0.0.0/0(或者你的固定IP)
这样从任何地方都能连上你的SSH了。
第三步:用正确的命令连接
ssh root@你的服务器IP
如果是密钥登录,加上-i参数:
ssh -i /path/to/your/key.pem root@你的服务器IP
如果还是连不上,试试-v参数看详细输出:
ssh -v root@你的服务器IP
这样能看到卡在哪个阶段。是DNS解析失败,还是连接超时,还是认证失败,一眼就能看出来。
密码忘了怎么办
有些云厂商会重置密码,有些会发一封邮件给你临时密码。去控制台找”重置密码”或”恢复密码”功能,按照提示操作就行。别忘了重置后可能需要重启服务器才能生效。
二、首次登录:基础安全配置
连上服务器之后,千万别直接开始装软件。先做一些基本的安全配置,不然你的服务器可能活不过三分钟就被黑客扫到了。
修改默认root密码
第一次登录后,第一件事就是改密码。用这个命令:
passwd root
然后输入新密码。选一个强密码:大小写字母+数字+特殊字符,至少12位。别用”123456”这种,我见过太多服务器因为弱密码被入侵的。
创建普通用户
直接用root登录其实不太安全,万一密码泄露或者命令输错了,后果很严重。创建一个普通用户,需要的时候再sudo提权。
adduser your_username
passwd your_username
然后把用户加到wheel组,这样就能用sudo了:
usermod -aG wheel your_username
CentOS系(包括AlmaLinux)的wheel组默认有sudo权限,这点和Ubuntu的sudo组是一样的。
配置SSH密钥登录
密码登录容易被暴力破解,密钥登录更安全也更方便。在你本地机器上生成密钥对(如果还没有的话):
ssh-keygen -t ed25519 -C "your_email@example.com"
然后把这个公钥传到服务器上:
ssh-copy-id your_username@你的服务器IP
如果没有ssh-copy-id命令,可以手动操作:
# 先查看本地公钥内容
cat ~/.ssh/id_ed25519.pub
# 然后登录服务器,创建.ssh目录并写入公钥
mkdir -p ~/.ssh
echo "你的公钥内容" >> ~/.ssh/authorized_keys
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
修改SSH配置加固
编辑SSH配置文件:
vi /etc/ssh/sshd_config
或者用nano(如果你更喜欢这个):
nano /etc/ssh/sshd_config
做以下修改:
# 禁用root直接登录
PermitRootLogin no
# 禁用密码登录,只允许密钥
PasswordAuthentication no
# 改用非标准端口(可选,但能减少大量扫描攻击)
Port 2222
# 限制登录尝试次数
MaxAuthTries 3
修改完之后重启SSH服务:
systemctl restart sshd
⚠️ 重要提醒:在关闭root登录和切换端口之前,先用新创建的普通用户测试一下能不能登录。如果测试不通过再改配置,不然把自己锁在外面就麻烦了。
修改端口后,连接方式也要变:
ssh -p 2222 your_username@你的服务器IP
三、系统初始化:更新和基础工具
服务器基础安全搞定后,开始安装一些常用的东西。
系统更新
AlmaLinux是基于RHEL的发行版,用dnf包管理器。先更新系统:
dnf update -y
这个过程可能需要几分钟,取决于你的网络速度和系统状态。更新完之后建议重启一下:
reboot
重启后再连上去,确认系统状态正常。
安装常用工具
dnf install -y vim wget curl git htop net-tools unzip tar bzip2 gzip
- vim:文本编辑器,服务器上的主力工具
- wget/curl:下载文件必备
- git:版本控制,开发环境绕不开
- htop:比top更好看的进程监控工具
- net-tools:ifconfig、netstat等网络工具(虽然部分被iproute2替代,但很多人还是习惯用)
- unzip/tar/bzip2/gzip:各种压缩格式解压工具
配置防火墙
AlmaLinux默认用firewalld,这个比iptables友好多了。
先检查防火墙状态:
systemctl status firewalld
如果没开,就启动它:
systemctl start firewalld
systemctl enable firewalld # 设置开机自启
然后开放你需要的端口。比如你刚才把SSH改成了2222端口:
firewall-cmd --permanent --add-port=2222/tcp
如果需要开放HTTP和HTTPS(运行网站必备):
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
或者一次性开放多个端口:
firewall-cmd --permanent --add-port=8080-8090/tcp
改完之后重新加载配置:
firewall-cmd --reload
查看当前开放的端口和服务:
firewall-cmd --list-all
关闭SELinux(可选)
SELinux是Linux的安全增强模块,严格来说能提升安全性,但对新手来说经常带来各种”权限拒绝”的问题,调试起来很头疼。如果你只是想安安静静跑个服务,可以先关掉它。
查看状态:
getenforce
如果要临时关闭(重启后恢复):
setenforce 0
要永久关闭,编辑配置文件:
vi /etc/selinux/config
把SELINUX=enforcing改成SELINUX=disabled。
注意:有些应用(比如Docker)在SELinux开启时可能会有兼容性问题。如果遇到问题,试着关掉SELinux看看。
四、常用软件安装
系统基础搭好了,开始装一些常用的软件。根据你自己的需求选择安装哪些。
安装Nginx
Nginx是目前最流行的Web服务器之一,轻量大并发,很适合跑网站和做反向代理。
dnf install -y nginx
systemctl start nginx
systemctl enable nginx
然后通过浏览器访问你的服务器IP,应该能看到Nginx的欢迎页面。别忘了在防火墙里开放80端口。
安装PHP
AlmaLinux默认PHP版本可能不是最新的,如果你想用特定版本,可以考虑Remi仓库:
# 安装EPEL和Remi仓库
dnf install -y epel-release
dnf install -y https://rpms.remirepo.net/enterprise/remi-release-9.rpm
# 启用并安装PHP 8.2
dnf module reset php -y
dnf module enable php:remi-8.2 -y
dnf install -y php php-fpm php-mysqlnd php-gD php-mbstring php-xml php-curl
# 启动PHP-FPM
systemctl start php-fpm
systemctl enable php-fpm
然后把Nginx和PHP-FPM配合起来,编辑Nginx配置文件,把.php请求转发给PHP-FPM处理。这是一个常见的配置片段:
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
安装MySQL或MariaDB
AlmaLinux默认用的是MariaDB(MySQL的一个分支,完全兼容),如果你需要原版MySQL,也可以装。
MariaDB(推荐,开箱即用):
dnf install -y mariadb-server mariadb
systemctl start mariadb
systemctl enable mariadb
然后运行安全初始化脚本:
mysql_secure_installation
按照提示设置root密码、删除匿名用户、禁止root远程登录等。
或者安装MySQL官方版本:
dnf install -y mysql-server mysql
systemctl start mysqld
systemctl enable mysqld
MySQL安装后会生成一个临时密码,查看方法:
grep 'temporary password' /var/log/mysqld.log
然后用这个临时密码登录后修改root密码:
mysql -u root -p
ALTER USER 'root'@'localhost' IDENTIFIED BY '你的新密码';
安装Docker
现在容器化几乎是标配了,Docker让部署变得简单很多。
# 安装Docker
dnf install -y dnf-plugins-core
dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
dnf install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# 启动Docker
systemctl start docker
systemctl enable docker
# 把你的用户加入docker组,避免每次都要sudo
usermod -aG docker your_username
测试一下Docker是否正常:
docker run --rm hello-world
能看到欢迎信息就说明装好了。
安装Node.js
如果你要做前端开发或者跑Node.js应用:
# 使用NodeSource仓库安装
curl -fsSL https://rpm.nodesource.com/setup_20.x | bash -
dnf install -y nodejs
检查版本:
node -v
npm -v
安装Python
AlmaLinux自带Python 3,但版本可能不是最新的:
# 查看自带版本
python3 --version
# 如果需要更新版本,可以用deadsnakes或直接编译安装
dnf install -y python3-devel python3-pip
pip3 install --upgrade pip
安装Git
dnf install -y git
git --version
五、常见问题排查
即使按照上面的步骤一步步来,可能还是会遇到各种问题。下面列举一些常见坑和解决方案。
问题一:firewall-cmd命令报找不到
command not found: firewall-cmd
这说明firewalld没安装。直接装一下:
dnf install -y firewalld
systemctl start firewalld
systemctl enable firewalld
问题二:服务启动失败,查看日志
# 查看服务状态
systemctl status nginx
# 查看详细日志
journalctl -u nginx -f
-f参数会实时跟踪日志输出,修改配置后重新加载服务,能实时看到报错信息。
问题三:Docker权限拒绝
docker: Got permission denied while trying to connect to the Docker daemon socket
把用户加入docker组后,需要重新登录或执行newgrp docker让组生效。
问题四:SELinux阻止服务访问文件
如果你看到类似Permission denied的错误,而且已经确认文件和目录权限没问题,那大概率是SELinux在捣鬼。
查看SELinux的拒绝日志:
ausearch -m avc -ts recent
或者临时设为宽容模式测试:
setenforce 0
如果问题解决,那就是SELinux的问题。可以用restorecon修复上下文:
restorecon -Rv /var/www/html
问题五:端口被占用
# 查看某个端口被什么进程占用
lsof -i :80
# 或者用netstat
netstat -tlnp | grep :80
问题六:磁盘空间满了
# 查看磁盘使用情况
df -h
# 查看哪个目录占用最多
du -sh /var/log/*
清理日志是个常见操作:
# 清空日志文件(注意是清空不是删除)
cat /dev/null > /var/log/syslog
或者用journalctl清理旧日志:
journalctl --vacuum-size=100M
问题七:时区不对
服务器时区不对会导致日志时间混乱,排查问题很麻烦。
# 查看当前时区
timedatectl
# 设置为上海时区
timedatectl set-timezone Asia/Shanghai
六、一些实用小技巧
一键查看服务器状态
写个简单的脚本,一眼看清服务器情况:
#!/bin/bash
echo "=== 系统信息 ==="
uname -a
echo ""
echo "=== CPU使用率 ==="
top -bn1 | grep "Cpu(s)"
echo ""
echo "=== 内存使用 ==="
free -h
echo ""
echo "=== 磁盘使用 ==="
df -h
echo ""
echo "=== 运行中的服务 ==="
systemctl list-units --type=service --state=running | grep -E "(nginx|apache|mysql|postgres|docker|redis)"
echo ""
echo "=== 最近登录用户 ==="
last -n 5
把这个保存为server-status.sh,随时执行就能快速了解服务器状态。
定时备份
重要的数据不要只存在服务器上。写个脚本定期备份数据库和重要文件,推到远程或者云存储:
#!/bin/bash
BACKUP_DIR="/backup"
DATE=$(date +%Y%m%d_%H%M%S)
mkdir -p $BACKUP_DIR
# 备份MySQL
mysqldump -u root -p'你的密码' --all-databases > $BACKUP_DIR/db_$DATE.sql
# 备份网站文件
tar -czf $BACKUP_DIR/files_$DATE.tar.gz /var/www/html/
# 删除7天前的备份
find $BACKUP_DIR -type f -mtime +7 -delete
用crontab设置定时执行:
crontab -e
添加:
0 2 * * * /path/to/backup.sh
每天凌晨2点自动备份。
监控告警
如果条件允许,装一个监控工具,服务器出了问题能第一时间知道。PM2(Node.js)、Supervisor(Python)、或者简单的htop + 日志监控,都是不错的选择。
写在最后
AlmaLinux作为一个稳定可靠的Linux发行版,上手门槛其实不高。关键是要有耐心,遇到问题不要慌,先查看日志,再搜索错误信息,大部分问题都能找到解决方案。服务器这东西,用几次就熟悉了,现在觉得复杂的流程,以后都能肌肉记忆完成。
如果你按照上面的步骤走完,你的服务器应该已经是一个干净、安全、可用的状态了。有什么具体问题欢迎讨论,祝你的服务器跑得顺顺利利。
