CodeRoadMap
首页路线题库资源库文章社区
CodeRoadMap

程序员的学习成长路线图。内容免费开放,登录后可同步路线图与课时进度。

由 程序员柏风 独立维护 · 关于作者

学习

  • 路线图
  • 课程
  • 面试题
  • 文章
  • 我

更多

  • 资源
  • 社区
  • 关于作者
  • 内容说明

© 2026 CodeRoadMap

津ICP备2026012044号-1·津公网安备12011002026155号·coderoadmap@126.com
Linux 服务器入门/课时/Linux 是什么
RawBlame
课时目录12 节

Linux 服务器入门

  1. 01Linux 是什么
  2. 02Shell 与 Bash
  3. 03文件系统与权限
  4. 04常用命令
  5. 05编辑器与配置
  6. 06进程与服务
  7. 07用户与 sudo
  8. 08包管理
  9. 09SSH 与密钥
  10. 10防火墙与端口
  11. 11部署 CodeRoadMap
  12. 12综合练习

Linux 是什么

发行版、服务器 vs 桌面;本站生产环境角色。

25 分钟

Linux 是什么

这一课你将能做到

  1. 用自己的话说清 内核、发行版、服务器版 三者的区别,并说出你生产环境用的是哪家发行版
  2. 在一台 Ubuntu/Rocky 服务器(或本机 WSL2)上执行 uname -a、cat /etc/os-release、free -h、df -h,并逐行解释输出含义
  3. 画出 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、Debianapt / dpkgsystemd本课程主路径
RedHat 系RHEL、Rocky、AlmaLinux、CentOSdnf(旧 yum) / rpmsystemd老项目常见,需会认

服务器版 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 上。」说不顺就回到前面的图再读一遍。

讲清楚要点

  1. 因为业务要 7×24 对外服务,所以需要专门的服务器操作系统——本机 Windows 关机、休眠、弹窗都不适合对外,Linux 稳定、轻量、可远程管理。
  2. 因为「Linux」一词常被混用,所以必须分清内核与发行版——排查问题时的命令(apt vs dnf)、配置文件路径都由发行版决定,先看 /etc/os-release 再动手。
  3. 因为服务器版无桌面,所以运维语言是 SSH + Shell——宝塔这类面板是「加速器」,帮你点;理解帮你修。面板挂掉、SSH 排障、CI 自动化部署最终都落到命令。
  4. 因为「一切皆文件」且配置多为纯文本,所以后面学的 vim、grep、tail -f 才会成为日常——改配置=编辑文本,看日志=读文本。
  5. 因为 CodeRoadMap 是多进程协作(Nginx/Node/JAR/MySQL),所以 Linux 层要保证四件事:进程能跑(systemd)、文件能写(权限)、端口能听(防火墙)、资源不爆(磁盘内存)——这正是本 track 12 课的主线。
  6. 因为发行版之间包名和路径有差异,所以本课程示例以 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

卡点急救

  1. SSH 一直 Connection timed out:云控制台检查安全组是否放行 22 端口(协议 TCP,来源 0.0.0.0/0);确认实例状态是「运行中」;确认 IP 是公网 IP 而非内网 IP。
  2. SSH 提示 Permission denied:密码错误(控制台重置后需等 1-2 分钟生效);用户名错(阿里云 Ubuntu 默认 root,AWS 默认 ubuntu)。
  3. WSL2 安装失败/报错虚拟化:BIOS 开启虚拟化(Intel VT-x / AMD-V),并确认「启用或关闭 Windows 功能」里勾了「适用于 Linux 的 Windows 子系统」和「虚拟机平台」。
  4. 终端卡在某界面出不来: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 兼容,迁移成本最低)。迁移要点是包管理命令替换和应用在目标环境回归测试,业务代码本身通常不用改。

自测三问

  1. 内核与发行版分别回答什么问题?用哪条命令确认自己正操作在哪套发行版上?
  2. 服务器版 Linux 相比桌面版省在哪里?这对跑 CodeRoadMap 意味着什么?
  3. 画出「浏览器 → 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 & 这类「部署天书」的每个字符。
加载本节练习…
下一课 →Shell 与 Bash