大家好,我是程序员柏风,AI 最全的 Vibecoding 学习地图 http://coderoadmap.cn 作者。
Linux 是什么
这一课你将能做到
- 用自己的话说清 内核、发行版、服务器版 三者的区别,并说出你生产环境用的是哪家发行版
- 在一台 Ubuntu/Rocky 服务器(或本机 WSL2)上执行
uname -a、cat /etc/os-release、free -h、df -h,并逐行解释输出含义 - 画出 CodeRoadMap 在 Linux 上的进程拓扑:SSH 入口 → Nginx:443 → Node:3000 / JAR:8080 → MySQL:3306
为什么要学
你写的 Next.js 前端和 Spring Boot 后端,开发时跑在自己的电脑上;上线后要 7×24 对外服务。国内云主机默认镜像几乎都是 Linux 服务器版:没有桌面、用 SSH 登录、用 apt/dnf 装软件。
如果把 Linux 只当成「面板里一个图标」,你会在宝塔里点来点去,却说不清:为什么 502、为什么 Permission denied、为什么改了配置必须 reload、为什么磁盘满了 MySQL 会写不进去。这些问题全部落在 Linux 层。本课先建立「底座图像」,后面 Shell、权限、systemd、SSH、防火墙全都建立在这一课之上。
本站生产文档默认 Ubuntu Server(22.04/24.04)+ 宝塔,所有概念同样适用于 Debian / Rocky / AlmaLinux;涉及差异处会明确标注。
先建立图像
你(笔记本) --SSH--> 云服务器上的 Linux
├─ 内核 kernel(调度 CPU/内存/磁盘/网卡,真正管硬件的一层)
├─ 发行版工具(apt、systemd、sshd、bash…发行版帮你配好的整套软件)
└─ 你的业务
Nginx :443(对外唯一入口)
├─→ Node :3000(platform,前端)
└─→ JAR :8080(backend,Spring Boot)
└─→ MySQL :3306(只监听本机)
内核 vs 发行版:一句话分清
- 内核(kernel):操作系统的「发动机」。管理进程、内存、文件、网络,程序想用硬件都得经过它。
uname -r看到的就是它。 - 发行版(distro):「发动机 + 变速箱 + 全车配置」的整车套餐。Ubuntu、Debian、Rocky 都基于同一个 Linux 内核,差异在于软件包体系、默认配置、升级策略。
- 所以严格说:你「装了个 Linux」=「装了某个基于 Linux 内核的发行版」。
两大发行版家族(决定你敲哪种包管理命令)
| 家族 | 代表 | 包管理 | 服务管理 | 本站场景 |
|---|---|---|---|---|
| Debian 系 | Ubuntu、Debian | apt / dpkg | systemd | 本课程主路径 |
| RedHat 系 | RHEL、Rocky、AlmaLinux、CentOS | dnf(旧 yum) / rpm | systemd | 老项目常见,需会认 |
服务器版 vs 桌面版
| 桌面 Linux | 服务器版 | |
|---|---|---|
| 界面 | 图形桌面 | 纯终端 / 面板 |
| 目标 | 办公、本机开发 | 7×24 跑 Web、数据库 |
| 资源 | GUI 吃掉 1G+ 内存 | 精简,省给业务进程 |
| 入口 | 键盘鼠标 | SSH |
跟着做
步骤 1:准备一台可练习的 Linux(三选一)
# 方式 A(本机最省事,Windows 10/11 自带):PowerShell 管理员执行,装完重启
wsl --install -d Ubuntu-22.04
方式 B:阿里云/腾讯云控制台买一台最便宜的按量付费 ECS,镜像选 Ubuntu 22.04(练完销毁,几毛钱)。
方式 C:VMware/VirtualBox 装 Ubuntu Server ISO(纯练手,无法公网访问)。
本课后续步骤在任一环境都能跑通;涉及「公网 IP」的仅云服务器适用。
步骤 2:第一次登录服务器
在本机终端(Windows 自带 ssh 命令,或 Windows Terminal / PowerShell):
# 云服务器:root 或云厂商初始用户(如 ubuntu),密码在控制台重置
ssh root@你的公网IP
# WSL2:直接打开 Ubuntu 窗口即是已登录状态,无需此步
首次连接会问 Are you sure you want to continue connecting?,输 yes(这是在记录服务器指纹)。看到提示符 root@iZxxxxx:~# 就成功了。退出用 exit。
连接不上时的排查顺序:安全组放行 22 端口 → 实例是否运行中 → 密码是否重置生效。
步骤 3:认识你的机器(核心四连)
登录后依次执行,并对照注释读懂输出:
uname -a # 内核版本 + 主机名 + 架构(x86_64 / aarch64)
cat /etc/os-release # 发行版身份证:NAME、VERSION_ID、PRETTY_NAME
free -h # 内存:total/used/free,-h 表示人类可读单位
df -h / # 根分区磁盘使用率,关注 Use% 列
再补两条:
nproc # CPU 核数(买 2 核就是 2)
hostnamectl # 一次性看全:主机名 + 系统版本 + 内核(Ubuntu/Rocky 都有)
把 PRETTY_NAME= 那行抄进笔记:「我的生产底座是 ____」。
步骤 4:体验「没有桌面、一切皆命令」
ls / # 根目录下没有任何 C:\Program Files,全是约定目录
ls /etc # 几乎全是文本配置文件——Linux 的配置就是改文本文件
whoami # 我是谁(root)
uptime # 开机多久、负载多少
在服务器版上找不到任何图形界面是正常的——终端就是唯一入口。这也意味着你后面每一课学的命令,都是真实生产里的操作方式。
步骤 5:把 CodeRoadMap 放上这张地图
即使业务还没部署,先在脑中建立拓扑并验证端口状态:
ss -tlnp # 当前谁在监听哪个端口(现在可能只有 sshd 的 22)
ls /www/wwwroot 2>/dev/null || echo "尚未安装宝塔/wwwroot,部署课后会出现"
在笔记里画下这张图(后续每课都会回到它):
浏览器 ──HTTPS 443──► Nginx
├─ / → 127.0.0.1:3000 (Node platform)
└─ /api/ → 127.0.0.1:8080 (JAR backend) ──► 127.0.0.1:3306 (MySQL)
步骤 6:一句话验收
不看笔记,大声说:「Linux 是服务器操作系统底座;发行版是可安装套餐;我用 SSH 进入,用 Shell 操作;CodeRoadMap 由 Nginx 反代 Node 和 JAR,跑在这台 Linux 上。」说不顺就回到前面的图再读一遍。
讲清楚要点
- 因为业务要 7×24 对外服务,所以需要专门的服务器操作系统——本机 Windows 关机、休眠、弹窗都不适合对外,Linux 稳定、轻量、可远程管理。
- 因为「Linux」一词常被混用,所以必须分清内核与发行版——排查问题时的命令(apt vs dnf)、配置文件路径都由发行版决定,先看
/etc/os-release再动手。 - 因为服务器版无桌面,所以运维语言是 SSH + Shell——宝塔这类面板是「加速器」,帮你点;理解帮你修。面板挂掉、SSH 排障、CI 自动化部署最终都落到命令。
- 因为「一切皆文件」且配置多为纯文本,所以后面学的 vim、grep、tail -f 才会成为日常——改配置=编辑文本,看日志=读文本。
- 因为 CodeRoadMap 是多进程协作(Nginx/Node/JAR/MySQL),所以 Linux 层要保证四件事:进程能跑(systemd)、文件能写(权限)、端口能听(防火墙)、资源不爆(磁盘内存)——这正是本 track 12 课的主线。
- 因为发行版之间包名和路径有差异,所以本课程示例以 Ubuntu 为准,RedHat 系差异处单独标注(apt↔dnf、ufw↔firewalld)。
你可能会懵的地方
-
Ubuntu 和 Linux 是一回事吗? 不是。Linux 严格指内核;Ubuntu 是「内核 + Debian 系软件包 + Ubuntu 团队维护配置」的发行版。日常说「装个 Linux」实际是「装某个发行版」。同理 CentOS/Rocky 也是发行版。
-
有了宝塔面板,为什么还要学命令? 三个硬理由:① 面板只覆盖常见操作,个性化配置(如 systemd 调优、自定义服务)仍要写文件;② 故障排查时面板只能告诉你「红」,命令才能告诉你「为什么红」;③ CI 自动化部署(GitHub Actions)只会执行命令,不会点面板。
-
本机是 Windows,用 WSL2 练还是买云服务器? 建议:本课和 shell/files/commands 等基础课用 WSL2 足够(零成本、随时重置);SSH、防火墙、部署课需要真实公网环境,用按量付费云服务器(练完销毁)。两者命令完全一致。
-
CentOS 停更了,现在该学哪个? CentOS 8 已于 2021 停止维护,CentOS 7 也已 EOL。存量老项目可能还是 CentOS 7,新项目选型:Ubuntu(文档生态最好)或 Rocky/AlmaLinux(承接 RHEL 生态)。命令层面掌握 apt + dnf 两套即可通吃。
-
内核版本号 5.15、6.8 怎么读?需要自己升级内核吗? 大版本.次版本,次版本偶数为长期支持(LTS)。入门阶段不要手动升级内核——发行版仓库里的内核已做过兼容测试,
apt upgrade跟随更新即可。内核调优不在本 track 范围。
错法对照
| 错法 | 问题 | 正解 |
|---|---|---|
| 把 Linux 当成「桌面系统里的某个软件」 | 理解不了 502、权限错误从哪来 | 建立「内核+发行版+进程」的底座图像 |
| 只用宝塔点鼠标,从不 SSH | 面板异常时束手无策,面试也答不上 | 学会 ssh 登录 + uname/os-release 认机器 |
拿 Ubuntu 的 apt 命令敲到 CentOS 机器上 | apt: command not found | 先 cat /etc/os-release 确认发行版再选命令 |
| 认为「学 Linux = 要会编译内核/考证」 | 吓退,方向学偏 | 入门目标:能登录、能看状态、懂拓扑、会排障 |
| 把本机桌面 Ubuntu 直接对外当服务器 | GUI 吃资源、攻击面大 | 生产用 Server 版,本机练习用 WSL2 |
| 公网直接暴露 :8080 就当「上线了」 | 绕过 Nginx,无 HTTPS、无缓存、全暴露 | 公网只开 22/80/443,业务端口绑 127.0.0.1 |
卡点急救
- SSH 一直 Connection timed out:云控制台检查安全组是否放行 22 端口(协议 TCP,来源 0.0.0.0/0);确认实例状态是「运行中」;确认 IP 是公网 IP 而非内网 IP。
- SSH 提示 Permission denied:密码错误(控制台重置后需等 1-2 分钟生效);用户名错(阿里云 Ubuntu 默认 root,AWS 默认 ubuntu)。
- WSL2 安装失败/报错虚拟化:BIOS 开启虚拟化(Intel VT-x / AMD-V),并确认「启用或关闭 Windows 功能」里勾了「适用于 Linux 的 Windows 子系统」和「虚拟机平台」。
- 终端卡在某界面出不来:
less/man按q退出;top按q;命令执行中按Ctrl+C中断;SSH 断连后重新连即可,服务器不会因为你断连而挂掉。
面试常问
-
Linux 为什么适合做服务器操作系统? 开源免费、资源占用低(无 GUI 可跑在 512M 内存)、稳定(可数月不重启)、远程管理强(SSH + 全文本配置,适合脚本化和自动化)、生态成熟(systemd/Nginx/MySQL/Docker 一线支持都在 Linux 优先)。
-
内核和发行版有什么区别?Ubuntu、CentOS 属于哪类? 内核负责进程调度、内存管理、驱动等与硬件交互的核心工作;发行版是内核加上包管理器、系统工具、默认配置构成的完整可用系统。Ubuntu 属 Debian 系(apt),CentOS 属 RedHat 系(yum/dnf),两者用同一 Linux 内核。
-
常见的 Linux 发行版有哪些?包管理器分别是什么? Debian 系:Debian、Ubuntu、Kali → apt/dpkg;RedHat 系:RHEL、CentOS、Rocky、AlmaLinux、Fedora → dnf(yum)/rpm;独立系:Arch(pacman)、openSUSE(zypper)。后端岗位重点掌握前两系。
-
你平时如何与 Linux 服务器交互?登录第一件事做什么? SSH(密码或密钥)进入,第一件事通常看三样:
cat /etc/os-release确认系统版本(决定用什么包管理命令)、df -h看磁盘、uptime/free -h看负载与内存——先摸底再操作。 -
CentOS 8 停止维护,你的项目怎么办? 两个方向:迁到 Ubuntu/Debian(apt 生态)或 Rocky/AlmaLinux(RHEL 兼容,迁移成本最低)。迁移要点是包管理命令替换和应用在目标环境回归测试,业务代码本身通常不用改。
自测三问
- 内核与发行版分别回答什么问题?用哪条命令确认自己正操作在哪套发行版上?
- 服务器版 Linux 相比桌面版省在哪里?这对跑 CodeRoadMap 意味着什么?
- 画出「浏览器 → Nginx → Node/JAR → MySQL」链路,标出每层监听的端口,并说明哪些端口应对公网开放。
小结一句话
Linux(发行版)是 CodeRoadMap 生产环境的操作系统底座:内核管硬件,发行版给你整套工具,你用 SSH 进入、用 Shell 操作,业务进程全跑在它之上。
延伸
- The Linux Kernel Archives — 关于 Linux
- Ubuntu Server 官方文档
- WSL2 安装文档(微软)
- 下一课预告:Shell 与 Bash——终端里输入的命令到底发生了什么?学完你就能看懂
nohup java -jar app.jar > log 2>&1 &这类「部署天书」的每个字符。