Ubuntu Server 基础介绍:新手必看的全面解析
引言
在当今的数字化世界中,服务器是支撑互联网、企业运营以及各种在线服务的基础。它们是数据存储、应用程序运行和信息交换的核心枢纽。而作为服务器操作系统领域的佼佼者,Ubuntu Server 以其免费、开源、稳定、安全和庞大的社区支持,成为了无数组织和个人搭建服务器环境的首选。
对于刚刚接触服务器或 Linux 系统的新手来说,Ubuntu Server 可能既神秘又令人望而却步,尤其是它主要基于命令行界面(CLI)的操作方式。然而,一旦掌握了基础知识,你会发现 Ubuntu Server 的强大和灵活。
本文旨在为完全的新手提供一份全面、深入的 Ubuntu Server 基础介绍。我们将从服务器操作系统的基本概念讲起,探讨 Ubuntu Server 的优势与应用场景,详细讲解安装过程中的关键步骤,并通过丰富的示例带你熟悉命令行操作、文件系统结构、软件包管理、用户权限、网络配置和服务控制等核心概念。读完本文,你将对 Ubuntu Server 有一个清晰的认识,并具备入门操作的能力,为后续更深入的学习和实践打下坚实的基础。
准备好了吗?让我们一起踏上 Ubuntu Server 的探索之旅吧!
第一章:什么是服务器操作系统?为什么选择 Ubuntu Server?
1.1 服务器操作系统的本质
操作系统(OS)是计算机硬件与软件之间的桥梁,它管理着计算机的所有资源,并为应用程序提供运行环境。我们日常使用的 Windows、macOS、桌面版 Ubuntu 都属于桌面操作系统,它们通常专注于图形用户界面(GUI)、易用性以及满足个人办公、娱乐等需求。
而服务器操作系统则有所不同。它们的首要任务是:
- 稳定性与可靠性: 服务器需要长时间不间断地运行,宕机可能导致服务中断和巨大损失。服务器 OS 设计上更注重稳定性,减少不必要的服务和资源消耗。
- 安全性: 服务器暴露在网络环境中,更容易受到攻击。服务器 OS 提供更强大的安全特性和更灵活的权限控制机制。
- 高性能与效率: 服务器需要同时处理大量请求,服务器 OS 优化了资源调度和系统调用,以提高性能。
- 远程管理: 服务器通常部署在数据中心或机房,管理员需要通过网络进行远程管理,因此服务器 OS 提供了强大的远程管理工具(如 SSH)。
- 最小化安装: 服务器 OS 通常只安装必要的组件,以减少攻击面和资源占用。许多服务器 OS 默认甚至不安装图形界面。
1.2 Ubuntu Server:为服务而生
Ubuntu Server 是由 Canonical 公司开发的、基于 Debian 的 Linux 发行版 Ubuntu 的一个版本,专门为服务器环境设计。它继承了 Ubuntu 桌面版的易用性,同时又针对服务器需求进行了优化。
1.3 Ubuntu Server 的核心优势
为什么 Ubuntu Server 如此受欢迎?原因有很多:
- 免费与开源: 这是 Linux 操作系统的普遍优势。用户可以免费获取、使用和分发 Ubuntu Server,并可以查看其源代码,这提高了透明度和安全性。
- 强大的社区与支持: Ubuntu 拥有全球最庞大的 Linux 用户和开发者社区之一。这意味着当你遇到问题时,很容易在网上找到帮助、教程和解决方案。Canonical 也提供商业支持选项。
- 长期支持(LTS)版本: Ubuntu 提供 LTS(Long Term Support)版本,每两年发布一次,提供长达五年的免费安全更新和维护。这为需要长期稳定运行环境的用户提供了保障。当前流行的 LTS 版本包括 18.04 (已接近 EOL), 20.04, 22.04,以及最新的 24.04。对于生产环境,通常推荐使用最新的 LTS 版本。
- 易用性(相对于其他企业级 Linux): 虽然是命令行界面,但 Ubuntu 的软件包管理系统(APT)和标准化的配置方式使得软件安装、更新和系统管理相对直观。
- 广泛的软件仓库: Ubuntu 的软件仓库包含了几乎所有常见的服务器软件和工具,通过
apt
命令可以轻松安装和管理。 - 优秀的兼容性: Ubuntu Server 支持多种硬件架构(x86, ARM 等),并在主流的云平台(如 AWS, Azure, Google Cloud)和虚拟化平台(如 VMware, VirtualBox, KVM, Docker)上得到良好支持。
- 内置安全特性: Ubuntu 提供了AppArmor、UFW(防火墙)等安全工具,并且安全更新及时。
- 适用于各种场景: 从小型个人服务器到大型企业数据中心,Ubuntu Server 都能胜任,广泛应用于 Web 服务器、数据库服务器、文件服务器、容器宿主机(Docker/Kubernetes)、云计算平台等。
1.4 与桌面版 Ubuntu 的区别
新手可能会好奇,Ubuntu Server 和桌面版 Ubuntu 有什么不同?
最显著的区别在于 图形用户界面(GUI)。Ubuntu Server 默认不安装桌面环境,所有操作都通过命令行完成。这不仅减少了系统资源消耗,也降低了潜在的安全风险(图形界面有更多的服务和代码)。虽然可以在 Server 版上安装桌面环境,但这通常不推荐用于生产服务器。
此外,Server 版本在内核配置、默认安装的服务和工具等方面也针对服务器应用进行了优化。
1.5 与其他服务器操作系统的简要对比
- Debian: Ubuntu 基于 Debian,因此两者在很多方面非常相似。Debian 以其极致的稳定性和对自由软件的坚持著称,但其软件包版本可能不如 Ubuntu 新。
- CentOS/RHEL: Red Hat Enterprise Linux (RHEL) 及其社区版本 CentOS (现在转向 CentOS Stream 或 AlmaLinux/Rocky Linux) 是企业级 Linux 的另一大阵营。它们在企业市场占有重要地位,以其强大的稳定性和专业的企业支持闻名,但通常学习曲线更陡峭,社区版本策略有所变动。
- Windows Server: 微软的商业服务器操作系统,提供图形界面和基于域的管理方式。与 Linux 阵营采用完全不同的技术栈,主要用于运行 Windows 平台的服务和应用。是商业软件,需要购买授权。
对于新手和大多数非企业级应用场景,Ubuntu Server 通常是更容易入门、社区资源更丰富且功能强大的选择。
第二章:准备工作与安装指南
在开始安装 Ubuntu Server 之前,你需要做一些准备。
2.1 硬件要求
Ubuntu Server 的硬件要求相对灵活,取决于你计划运行的服务。基本要求如下:
- 处理器: 1 GHz 双核或更好的处理器。
- 内存: 2 GB RAM 或更多(对于运行数据库、虚拟化等服务,建议 4GB 或以上)。
- 硬盘空间: 25 GB 可用硬盘空间(建议更多,特别是用于存储数据或日志)。
- 网络连接: 有线或无线网卡(安装过程中通常推荐有线连接)。
- 安装介质: U 盘(推荐)或 DVD 刻录机。
2.2 下载 Ubuntu Server ISO 镜像
前往 Ubuntu 官方网站的下载页面(https://ubuntu.com/download/server)。推荐下载最新的 LTS (Long Term Support) 版本。例如,截至我知识更新的时间点,可能是 Ubuntu 22.04 LTS 或 24.04 LTS。
选择适合你硬件架构的镜像文件(通常是 amd64 架构)。下载到的文件通常是一个 .iso
格式的镜像文件。
2.3 制作安装介质
将下载的 .iso
文件写入 U 盘(或 DVD)以制作可引导的安装介质。
- 在 Windows 上: 可以使用 Rufus、Etcher 或 Universal USB Installer 等工具。
- 在 macOS 上: 可以使用 Etcher 或通过终端命令
dd
。 - 在 Linux 上: 可以使用 Etcher 或通过终端命令
dd
。
例如,使用 Etcher 是一款跨平台且易用的工具,只需选择 ISO 文件、目标 U 盘,然后点击开始即可。
重要提示: 制作安装介质会擦除 U 盘上的所有数据,请提前备份。
2.4 BIOS/UEFI 设置
将制作好的安装 U 盘插入要安装 Ubuntu Server 的计算机。开机时,通常需要按下特定的按键(如 F2, F10, F12, Del 等,具体取决于你的主板品牌)进入 BIOS 或 UEFI 设置界面。在启动顺序(Boot Order)设置中,将 U 盘(或 USB HDD/UEFI: [U 盘名称])设置为第一启动项。保存设置并退出,计算机将从 U 盘启动。
2.5 开始安装
从 U 盘启动后,你将看到 Ubuntu Server 的安装程序界面。以下是安装过程中的关键步骤概述:
- 选择语言: 选择你熟悉的安装语言。
- 键盘布局: 选择合适的键盘布局。
- 安装类型: 通常选择 “Ubuntu Server”(而不是 “Ubuntu Server (Legacy)” 或其他选项)。
- 网络配置: 安装程序会尝试通过 DHCP 自动获取 IP 地址。如果你的网络需要静态 IP,可以在这里手动配置。确保网络连接正常,因为安装过程中需要下载文件。
- 配置代理: 如果你的网络需要通过代理才能访问互联网,在这里配置。
- 配置 Ubuntu Archive Mirror: 选择一个距离你较近的软件仓库镜像源,通常安装程序会自动选择最佳的。
- 存储配置(硬盘分区): 这是最关键的一步。
- 使用整个磁盘 (Use An Entire Disk): 最简单的方式,安装程序会自动为你分区。对于新手和非特殊需求的场景,这是推荐的选项。
- 自定义存储布局 (Custom Storage Layout): 允许你手动创建、删除、修改分区。这是为有特定需求(如单独挂载 /home, /var, /opt 分区,或者配置 RAID, LVM 等)的高级用户准备的。对于新手,如果选择此项,至少需要创建一个根分区 (
/
) 和一个交换分区 (swap
)。文件系统类型通常选择 ext4。 - 重要: 确认你选择了正确的硬盘进行安装,避免误删其他系统或数据。
- 用户设置: 创建一个普通用户账户。你需要设置你的姓名、服务器名称、用户名以及 密码。务必记住这个密码。
- 启用 OpenSSH Server: 强烈建议勾选此选项。 这允许你在安装完成后通过 SSH 远程连接到服务器,这是服务器管理的主要方式。
- 导入 SSH 身份:如果你已经有 SSH 密钥对,可以在这里导入公钥,以便使用密钥认证登录(比密码更安全)。新手可以先跳过,安装后再设置。
- 精选服务器 snaps: 询问是否安装一些常用的服务器软件(如 Docker, Nextcloud 等)。新手可以暂时跳过,安装完成后再按需安装。
- 安装过程: 安装程序开始复制文件并安装系统。这需要一些时间。
- 安装完成: 提示安装完成后,移除安装介质,重启计算机。
2.6 初次登录
重启后,系统会引导进入新安装的 Ubuntu Server。你会看到一个登录提示符:
bash
Ubuntu 22.04 LTS
your-server-name login:
输入你在安装时创建的用户名,然后按回车。
输入你设置的密码,然后按回车(输入密码时屏幕上不会显示任何字符,这是正常的 Linux 安全机制)。
如果用户名和密码正确,你将成功登录,看到命令行的提示符(通常是 username@your-server-name:~$
)。恭喜你,你已经成功安装并登录到你的第一台 Ubuntu Server 了!
第三章:深入命令行界面(CLI)
登录成功后,你面对的是一个黑白的文本界面——命令行界面(CLI)。这与习惯了图形界面的用户体验截然不同,但它是管理 Linux 服务器的强大工具。所有的系统管理、软件安装、配置修改都将在这里完成。
3.1 什么是 Shell?
当你登录到命令行界面时,实际上是启动了一个称为 Shell 的程序。Shell 负责解释你输入的命令,并将结果显示给你。Ubuntu Server 默认使用的是 Bash (Bourne Again SHell)。提示符(如 username@your-server-name:~$
)是 Shell 准备好接受命令的标志。
username
是当前登录的用户。your-server-name
是服务器的主机名。~
表示当前所在的目录是用户的主目录(/home/username
)。$
表示这是一个普通用户的提示符。如果是管理员用户(root),提示符通常是#
。
3.2 基本命令操作
以下是一些新手必须掌握的 Linux 基本命令:
ls
(list): 列出当前目录下的文件和子目录。ls -l
: 显示文件的详细信息(权限、所有者、大小、修改日期等)。ls -a
: 显示包括隐藏文件(文件名以.
开头)在内的所有文件。ls -lh
: 以人类可读的方式显示文件大小(如 1.2K, 3.5M)。
cd
(change directory): 切换当前工作目录。cd /path/to/directory
: 切换到指定的绝对路径。cd directory_name
: 切换到当前目录下的子目录。cd ..
: 切换到上级目录。cd ~
: 切换到当前用户的主目录。cd -
: 切换到上一次所在的目录。
pwd
(print working directory): 显示当前所在的目录的完整路径。mkdir
(make directory): 创建新目录。mkdir new_directory
: 在当前目录下创建名为new_directory
的目录。mkdir /path/to/new_directory
: 在指定路径创建目录。mkdir -p /path/to/parent/child
: 创建多级目录,如果父目录不存在也会一并创建。
rm
(remove): 删除文件或目录。rm file_name
: 删除指定文件。rm -r directory_name
: 递归删除目录及其内容。慎用!rm -rf directory_name
: 强制递归删除目录及其内容,不提示。极其危险!在不确定时,绝不要使用!
cp
(copy): 复制文件或目录。cp source_file destination_file
: 复制文件。cp source_file /path/to/destination/
: 复制文件到指定目录。cp -r source_directory destination_directory
: 递归复制目录及其内容。
mv
(move): 移动或重命名文件/目录。mv old_name new_name
: 在同一目录下重命名文件/目录。mv source_file /path/to/destination/
: 移动文件到指定目录。
cat
(concatenate): 显示文件内容。cat file_name
: 在终端显示文件的全部内容。
less
/more
: 分页显示文件内容。对于大型文件非常有用。按空格翻页,按q
退出。nano
/vim
: 文本编辑器。nano
对新手更友好,界面简单;vim
功能强大但学习曲线陡峭。nano file_name
: 用 nano 打开文件进行编辑(如果文件不存在则创建)。按Ctrl+X
退出,按Y
保存修改,按回车确认文件名。
man
(manual): 查看命令的帮助手册。man command_name
: 显示指定命令的详细用法、选项等。按空格翻页,按q
退出。这是学习新命令的神器。
3.3 sudo
:以管理员权限执行命令
在 Linux 系统中,为了安全起见,普通用户默认没有执行某些需要系统权限的操作(如安装软件、修改系统配置、管理服务)的权利。这些操作需要以超级用户(root)的身份执行。
在 Ubuntu 中,通常不直接登录 root 用户,而是通过 sudo
(superuser do) 命令来临时获取 root 权限执行特定命令。在安装过程中创建的用户默认被添加到 sudo
用户组,因此可以使用 sudo
。
语法:sudo command
当你第一次使用 sudo
时,系统会要求你输入当前用户的密码(不是 root 密码)。成功验证后,该命令将以 root 身份执行。之后的几分钟内再次使用 sudo
通常不需要再次输入密码。
重要: sudo
提供了强大的能力,但也伴随着风险。误用 sudo
可能导致系统损坏。在执行任何 sudo
命令之前,请确保你理解该命令的作用。
示例:
* sudo apt update
: 更新软件包列表(需要 root 权限)。
* sudo systemctl restart apache2
: 重启 Apache Web 服务器服务(需要 root 权限)。
第四章:核心概念解析
4.1 文件系统层次结构标准 (FHS)
Linux 文件系统采用树状结构,所有目录都从根目录 /
开始。这与 Windows 的驱动器字母(C:, D:)概念不同。理解主要的目录及其用途对于管理服务器至关重要:
/
: 根目录,整个文件系统的起点。/bin
: 存放基本的用户命令(如 ls, cp, mv)。/sbin
: 存放系统管理员使用的基本命令(如 fdisk, ip)。/etc
: 存放系统配置文件(如网络配置、服务配置等)。这是你经常需要访问和修改的目录。/home
: 存放普通用户的主目录。每个用户都有一个以其用户名命名的子目录(/home/username
)。/root
: root 用户的主目录。/var
: 存放经常变化的文件,如日志文件 (/var/log
)、缓存文件 (/var/cache
)、软件包管理数据 (/var/lib
)、网站文件 (/var/www
) 等。/tmp
: 存放临时文件,系统重启时通常会被清空。/usr
: 存放用户安装的应用程序及其相关文件。大部分非系统基本命令和库都在这里。/usr/bin
: 用户应用程序的命令。/usr/sbin
: 系统管理的非基本命令。/usr/lib
: 应用程序库文件。
/opt
: 存放第三方独立软件包。/dev
: 存放设备文件,代表系统中的硬件设备(如硬盘/dev/sda
)。/proc
: 一个虚拟文件系统,存放系统进程信息和内核信息。/mnt
: 临时挂载文件系统(如 USB 驱动器)。/media
: 临时挂载可移动媒体(如光盘、U 盘)。
4.2 软件包管理系统 (APT)
软件包管理系统是 Linux 的一大亮点,它极大地简化了软件的安装、升级和卸载过程。Ubuntu 使用的是基于 Debian 的 APT (Advanced Package Tool)。
APT 通过软件仓库(Repositories)工作。软件仓库是存储软件包及其相关信息(版本、依赖关系等)的服务器。通过配置合适的软件仓库源,你可以方便地获取和管理大量软件。
主要的 apt
命令:
sudo apt update
: 必须经常运行! 更新本地软件包列表,获取仓库中最新软件包的信息,但不会安装或升级任何软件。sudo apt upgrade
: 升级所有已安装的、有新版本的软件包。在运行前,最好先运行sudo apt update
。sudo apt full-upgrade
: 比upgrade
更激进,会处理依赖关系的变化,可能删除旧的软件包或安装新的软件包以完成升级。sudo apt install package_name
: 安装指定的软件包及其依赖项。可以同时安装多个软件包:sudo apt install package1 package2
。sudo apt remove package_name
: 卸载指定的软件包,但保留其配置文件。sudo apt purge package_name
: 彻底卸载指定的软件包及其配置文件。sudo apt search keyword
: 搜索软件包仓库中包含指定关键字的软件包。sudo apt show package_name
: 显示软件包的详细信息(版本、依赖、大小、描述等)。sudo apt autoremove
: 删除不再被任何已安装软件包依赖的“孤立”软件包。这有助于释放磁盘空间。sudo apt clean
: 清理本地下载的软件包缓存文件(位于/var/cache/apt/archives/
)。
软件包来源文件: /etc/apt/sources.list
文件及其目录 /etc/apt/sources.list.d/
存放着 APT 获取软件包的仓库地址。通常,安装时会自动配置官方仓库,无需手动修改。
4.3 用户和组管理与权限
Linux 是一个多用户操作系统,用户和组是权限管理的基础。
- 用户 (Users): 每个用户都有一个唯一的用户名和用户 ID (UID)。
- 组 (Groups): 组是一组用户的集合。每个组都有一个唯一的组名和组 ID (GID)。用户可以属于一个或多个组。
文件权限 (File Permissions):
每个文件和目录都有所有者(Owner)、所属组(Group)以及其他用户(Others)三组权限。权限类型包括:
r
(read): 读取文件内容或列出目录内容。w
(write): 修改文件内容或在目录中创建/删除文件。x
(execute): 执行文件或进入目录。
使用 ls -l
命令查看文件权限,例如:
-rw-r--r-- 1 user group 1024 Jan 1 10:00 filename
解释:
* 第一个字符 -
表示文件类型(-
是文件,d
是目录)。
* 接下来三组字符 rw-
r--
r--
分别代表所有者、所属组、其他用户的权限。
* 所有者 (user
) 拥有 rw-
(读写) 权限。
* 所属组 (group
) 拥有 r--
(只读) 权限。
* 其他用户 (others
) 拥有 r--
(只读) 权限。
* 后面的数字 1
是硬链接数。
* user
是文件所有者。
* group
是文件所属组。
* 1024
是文件大小(字节)。
* Jan 1 10:00
是修改日期。
* filename
是文件名。
权限修改命令:
chown owner:group file_name
: 更改文件的所有者和所属组。需要使用sudo
。sudo chown new_owner file_name
: 更改所有者。sudo chown :new_group file_name
: 更改所属组。
chmod permissions file_name
: 更改文件权限。
chmod
权限可以用符号表示法或数字(八进制)表示法。
- 符号表示法:
u
(user),g
(group),o
(others),a
(all)。+
(添加权限),-
(移除权限),=
(设置权限)。chmod u+w file
: 给文件所有者添加写权限。chmod go-rw file
: 移除所属组和其他用户的读写权限。chmod a=rw file
: 设置所有用户都只有读写权限。
- 数字表示法(常用且强大): r=4, w=2, x=1。将对应权限的数字相加。
- 所有者权限 + 所属组权限 + 其他用户权限
rw-
是 4+2+0 = 6r--
是 4+0+0 = 4rwx
是 4+2+1 = 7---
是 0+0+0 = 0- 示例:
chmod 755 file
意味着所有者有 rwx (7),所属组有 r-x (5),其他用户有 r-x (5)。这是许多可执行脚本或目录的常见权限。 - 示例:
chmod 644 file
意味着所有者有 rw- (6),所属组有 r– (4),其他用户有 r– (4)。这是普通配置文件的常见权限。
用户和组管理命令(需要 sudo
):
sudo useradd username
: 创建新用户。sudo passwd username
: 为指定用户设置或更改密码。sudo usermod -aG groupname username
: 将用户添加到现有组。-aG
表示追加到组列表。sudo userdel username
: 删除用户(不删除主目录和邮件)。sudo userdel -r username
: 删除用户及其主目录和邮件。sudo groupadd groupname
: 创建新组。sudo groupdel groupname
: 删除组。
4.4 网络配置基础
服务器需要网络连接才能提供服务。了解如何查看和配置网络信息非常重要。
- 查看网络接口和 IP 地址:
ip addr show
或简写ip a
: 显示所有网络接口(如 eth0, ens33 等)及其 IP 地址、MAC 地址、状态等信息。- (较旧的命令,但在许多系统中仍可用)
ifconfig
: 功能类似ip addr show
。
- 测试网络连通性:
ping hostname_or_ip
: 向目标发送网络包,测试是否可达以及延迟。按Ctrl+C
停止。
- 查看路由表:
ip route show
或简写ip r
: 显示系统的路由信息,包括默认网关。- (较旧的命令)
route -n
: 功能类似。
- 查看 DNS 设置:
cat /etc/resolv.conf
: 显示 DNS 服务器的 IP 地址。
网络配置修改:
在现代 Ubuntu Server 版本中,网络配置通常由 Netplan 管理。配置文件位于 /etc/netplan/
目录下,通常是 .yaml
格式。
- 修改网络配置通常需要编辑 Netplan YAML 文件(例如
sudo nano /etc/netplan/00-installer-config.yaml
)。 - 修改后,使用
sudo netplan try
命令测试配置是否有效(会在指定时间后回滚,防止配置错误导致无法连接)。 - 测试成功后,使用
sudo netplan apply
命令应用新的网络配置。
SSH (Secure Shell):
SSH 是远程管理 Linux 服务器的事实标准协议。它提供加密的连接,用于执行命令、传输文件等。安装时如果选择了安装 OpenSSH Server,服务会默认启动。
- 从客户端连接: 在另一台计算机上使用 SSH 客户端(Linux/macOS 自带
ssh
命令,Windows 可以使用 PuTTY 或新的 Windows Terminal/PowerShell)。ssh username@server_ip_address
- 输入用户的密码即可登录。
更安全的 SSH 登录方式是使用密钥认证而不是密码,这需要生成 SSH 密钥对并将公钥上传到服务器用户的 ~/.ssh/authorized_keys
文件中。这是生产环境强烈推荐的做法。
4.5 服务管理 (systemd)
服务器的主要工作是运行各种服务(也称为守护进程 – daemons),如 Web 服务器 (Apache, Nginx)、数据库服务器 (MySQL, PostgreSQL)、SSH 服务器等。
现代 Ubuntu Server 使用 systemd 作为其服务管理器。你可以使用 systemctl
命令来控制和查看服务的状态。
常用的 systemctl
命令(通常需要 sudo
):
sudo systemctl status service_name
: 查看服务的状态(是否运行、进程 ID、最近的日志等)。sudo systemctl start service_name
: 启动服务。sudo systemctl stop service_name
: 停止服务。sudo systemctl restart service_name
: 重启服务。sudo systemctl reload service_name
: 重新加载服务的配置文件(如果服务支持),通常比重启更快且不中断连接。sudo systemctl enable service_name
: 设置服务开机自启。sudo systemctl disable service_name
: 取消服务开机自启。systemctl list-units --type=service
: 列出当前系统中所有已加载的服务单元。
示例:查看 SSH 服务状态 systemctl status sshd
或 systemctl status ssh
(取决于服务名称)。
第五章:基础安全实践
服务器暴露在网络上,安全性至关重要。作为新手,至少应该掌握以下基本安全实践:
5.1 及时更新系统
软件包更新通常包含安全修复。保持系统最新是防范已知漏洞的最有效方法之一。
定期运行以下命令:
bash
sudo apt update
sudo apt upgrade -y
-y
选项会自动确认所有提示,方便自动化。但对于重要升级,最好先不加 -y
检查将要执行的操作。
你还可以考虑设置自动安全更新。
5.2 配置防火墙 (UFW)
防火墙是阻止恶意流量访问服务器的屏障。Ubuntu 提供了 UFW (Uncomplicated Firewall),它是一个用户友好的 iptables 前端。
sudo ufw status
: 查看防火墙状态(默认是 inactive)。sudo ufw enable
: 启用防火墙。重要: 启用前请确保你已允许 SSH 端口,否则可能会把自己锁在外面!sudo ufw allow port_number
: 允许特定端口的入站连接。sudo ufw allow 22
: 允许 SSH (默认端口 22)。sudo ufw allow 80
: 允许 HTTP (Web 服务默认端口 80)。sudo ufw allow 443
: 允许 HTTPS (Web 服务默认端口 443)。
sudo ufw deny port_number
: 拒绝特定端口的入站连接。sudo ufw default deny incoming
: 设置默认拒绝所有入站连接(这是推荐的策略,然后按需允许特定端口)。sudo ufw default allow outgoing
: 设置默认允许所有出站连接(通常不需要改变)。sudo ufw status verbose
: 显示更详细的防火墙规则。
启用防火墙的步骤建议:
1. sudo ufw allow 22
(或你的 SSH 端口)。
2. sudo ufw enable
3. sudo ufw status verbose
确认规则已生效且 SSH 已允许。
4. 然后根据你需要运行的服务允许其他端口(如 80, 443, 3306 等)。
5.3 保护 SSH
SSH 是服务器的主要入口,必须加强保护。
- 禁止 Root 用户直接登录: 修改 SSH 配置文件
/etc/ssh/sshd_config
,将PermitRootLogin
设置为no
。然后使用sudo systemctl restart sshd
重启 SSH 服务。总是使用普通用户登录,然后通过sudo
获取权限。 - 使用 SSH 密钥认证: 创建 SSH 密钥对(公钥和私钥),将公钥上传到服务器。修改
/etc/ssh/sshd_config
文件,禁用密码认证(PasswordAuthentication no
),只允许密钥认证。这样可以大大提高安全性,避免弱密码被暴力破解。
第六章:常见应用场景概述
Ubuntu Server 可以用于搭建各种类型的服务器。这里简要列举一些常见的应用场景:
- Web 服务器: 搭建 LAMP (Linux, Apache, MySQL, PHP) 或 LEMP (Linux, Nginx, MySQL/PostgreSQL, PHP/Python/Node.js) 环境,托管网站和 Web 应用程序。
- 数据库服务器: 安装和运行 MySQL, PostgreSQL, MongoDB 等数据库系统。
- 文件服务器: 配置 Samba (用于 Windows 共享) 或 NFS (用于 Linux/Unix 共享) 提供文件存储和共享服务。
- 邮件服务器: 搭建 Postfix, Dovecot 等构建自己的邮件系统。
- DNS 服务器: 安装 Bind9 等提供域名解析服务。
- VPN 服务器: 搭建 OpenVPN 等实现安全远程访问。
- 容器化平台: 作为 Docker 或 Kubernetes 的宿主机,运行和管理容器化应用。
- 虚拟化平台: 使用 KVM, QEMU 等运行虚拟机。
- 开发/测试环境: 为开发者提供独立的开发或测试服务器。
针对不同的应用场景,你需要安装相应的软件包并进行配置。这通常是深入学习 Ubuntu Server 的后续方向。
第七章:进一步学习资源
恭喜你读到这里!你已经对 Ubuntu Server 有了扎实的基础认识。但服务器管理是一个持续学习的过程。以下是一些可以帮助你进一步提升的资源:
- 官方 Ubuntu Documentation: 最权威的文档来源,详细解释了 Ubuntu 的各个方面。(https://ubuntu.com/documentation)
- Ask Ubuntu: 一个 Stack Exchange 社区,你可以在这里提问和搜索 Ubuntu 相关的问题。(https://askubuntu.com/)
- Stack Overflow: 更广泛的编程和技术问答社区,包含大量 Linux 和服务器相关内容。(https://stackoverflow.com/)
- Linux 命令手册 (Man Pages): 使用
man command_name
命令在终端中随时查阅。 - 在线课程和教程: 许多在线平台(如 Coursera, Udemy, Bilibili, YouTube 等)提供了 Linux 和服务器管理的课程。
- 书籍: 有很多优秀的 Linux 和 Ubuntu Server 相关书籍。
- 实践: 最重要的学习方式是实践!在虚拟机、旧电脑或云服务器上安装 Ubuntu Server,不断尝试和练习本文章中介绍的命令和概念,然后尝试搭建一些简单的服务。犯错误并解决它们是成长的必经之路。
结论
Ubuntu Server 是一个强大、灵活且对新手相对友好的服务器操作系统。本文为你提供了一个全面的起点,涵盖了从理解基本概念、完成安装到掌握命令行操作、核心系统管理和基础安全实践的关键知识。
请记住,掌握 Ubuntu Server 并非一蹴而就。它需要时间和实践。从现在开始,登录你的 Ubuntu Server,勇敢地敲下命令,探索文件系统,安装和配置软件,解决遇到的问题。你会逐渐熟悉这个强大的环境,并能利用它来构建和管理各种服务。
祝你在 Ubuntu Server 的学习和使用之旅中一切顺利!不断学习,持续实践,你将成为一个熟练的 Linux 服务器管理者。