Debian 11安装与基本配置

背景

最近我手上有一个基于WordPress的项目要进行开发测试工作。考虑到直接购买云服务器或虚拟主机在线上搭建一个环境出来还需要在备案上花费额外的时间,同时我也不清楚这个项目到底会吃掉多少系统资源,购买服务器时该选择哪种规格,所以我的计划是先在本地的虚拟机上跑项目,等开发完成后再把数据从测试环境直接怼到线上去。这样做可以让客户延缓服务器费用的支出,而我则能在本地留下一个测试环境。打死我都不会说是因为我不想垫付服务器费用的🙂

主题下的相关文章

服务器操作系统的选择

为什么不选择CentOS

2020年12月8日,CentOS官方宣布停止维护CentOS,并推出了CentOS Stream项目。

对比一下Win7你就知道,最迟在2024年6月30日以后,这对于CentOS用户意味着什么。CentOS Stream是一个滚动升级的版本,无法保障系统稳定性与兼容性,所以CentOS Stream并不是生产环境的一个可选方案。

为什么不选择Ubuntu

Ubuntu一方面通过其易用性吸引了大量初级用户,另一方面它又轻率不严肃地修改关键代码,造成与其它发行版不兼容的局面。这就导致了初级用户可能会遇到一些其它发行版并没有出现的问题,又或是在遇到其它发行版存在的共同问题时无法获取其它发行版的帮助,初级用户将因此而不得不购买Ubuntu的服务。如果这样说不好理解的话,你可以类比一下,如果核酸检测能让你挣钱的话,你会希望疫情过去吗?

我对Ubuntu的看法是:如果将它用作桌面操作系统来使用还行,毕竟GitHub上有很多开源软件的开发者在用Ubuntu进行开发,在相同的环境下开展开发工作可能更好的解决问题。但作为服务器操作系统的话,还是洗洗睡吧。
话说回来,Arch Linux具有拥好的wiki文档,想学习Linux的同学放弃Ubuntu桌面转向Arch可能会是更好的选择。

Debian系统简介

  • Debian是一个通用操作系统,即它支持多种计算机架构
  • Debian以其稳定性闻名(注:但凡说到稳定,就意味着它的套件有可能会是过时的,这些过时的套件只会有必要的安全更新而没有功能更新);
  • Debian主要关注自由和开源软件,它提供的内核不包括专有驱动程序和固件
  • Debian是一个真正的社区项目,它由社区成员管理。用户可以在Debian论坛中寻求帮助或提出建议。它没有提供付费支持服务(企业用户想花钱的话就自己养团队吧,提供更多的就业岗位能更好地展现企业的经济实力)。

Debian一直维护着至少三个发行版:不稳定版(unstable)、测试版(testing)和稳定版(stable)。对每个稳定版,用户可以得到三年的完整支持以及额外两年的长期支持。当前(2022年5月11日)最新的稳定版是Debian 11.3,代号Bullseye。它在2026年7月结束支持。

Debian 11安装过程

光盘镜像选择

Debian官方提供了3种安装镜像类型,它们分别是:

  • 普通镜像
  • Live版镜像
  • 云镜像

其中普通镜像又分为网络安装(netinst)镜像和完整镜像:网络安装镜像只包含了安装基本系统所需的最少软件,剩下的软件包都通过网络进行下载;而完整镜像包含了更多的软件包,以便在无法联网的机器上完成安装。当你点击Debian官网的下载按钮时,它提供的是最小化的网络安装镜像,此镜像没有非开源的固件。如果你在使用最小化镜像安装系统时遇到网卡或其它硬件无法识别的情况,你需要下载的是另外一个单独包含固件的非自由镜像。

Live镜像是一个live系统,之所以称它为系统,是因为这个镜像中包含了已预先安装的完整系统。你只需要下载后把它刻录进光盘或者写入到U盘,插入电脑后开机,在BIOS启动选项中选择从光盘或U盘启动,就可以直接进入系统开始工作。这时你并没有安装任何东西到你的硬盘上去,所有的程序都是直接从光盘或U盘上执行的。它非常适合新用户来体验Debian系统。强烈推荐普通桌面用户选此镜像安装Debian:在新手安装Debian过程中,聪明地采用此镜像,就已经成功一半了。

云镜像主要用于云服务器的部署。其中适用于OpenStack的qcow2/raw格式的镜像可以通过转换来用于VMware虚拟机。

关于镜像的其他问题,可以访问Debian官方常见问答集

为了更好的演示安装过程,这次我们不选择通过云镜像来安装,我们选择普通镜像。两种普通镜像在安装过程中几乎没有出入,请根据自己掷出的骰子随意选择。

安装用的虚拟机环境说明

虚拟机资源分配

虚拟机NAT网络默认设置

  • 虚拟机软件:VMware Workstation
  • 虚拟机的CPU分配:1个CPU,2个核心
  • 虚拟机磁盘大小:20G
  • 虚拟机的网络连接方式:NAT(默认网段192.168.88.0/24,DHCP默认开启)

本文与实体机安装可能存在的差异

本文是基于虚拟机安装Debian书写的。实体机的安装可能存在差异:

  • 虚拟机直接通过iso文件启动,而现实中你需要将iso通过Rufus(Windows平台)或Etcher(Windows/Linux平台)工具制成启动U盘,并需要进行一些设置操作来完成通过U盘来启动电脑;
  • 虚拟机在没有操作系统的时候会直接通过iso启动,而现实中你可能需要在电脑开机显示制造商标识的时候,按下F2F10F12等键进入开机引导设置界面(不同的的制造商在按键和界面上会有一些差异);
  • 有些实体机启用了安全启动(secure boot)功能,它不允许引导Linux安装光盘。如果是这种情况,请从BIOS设置里禁用安全启动
  • 在实体机上进行安装,你可能还需要额外了解一些MBR与GPT传统的BIOS与UEFI的知识;
  • 实体机安装Debian,请优先选用Live镜像,请优先选用Live镜像,请优先选用Live镜像。重要的事情说三遍。

详细安装记录

Debian 11 installer menu

从镜像启动虚拟机,进入安装选项界面。前两个选项分别是图形化安装(Graphical install)和终端安装(Install),它们的安装步骤都是类似的。在终端下安装无法使用鼠标进行操作,推荐新人选择图形化安装。

语言选择

接下来是语言选择界面,这个语言选择控制的不只是安装过程中界面上显示的文字,也是操作系统安装完成后默认的系统语言。因为我是把它作为服务器来使用的,安装后并没有图形界面,都是在命令行下执行操作的,而在直连的终端下使用中文可能会有显示问题(SSH连接的话应该是没有问题的),所以为了不在安装完成后重新进行设置,我在这里选择了默认的English。新手可以选择中文,不用担心,系统安装完成后是可以修改语言的。毕竟弄明白是怎么回事儿更重要。

地域选择 - other

地域选择 - Asia

地域选择 - China

接下来是选择地域,这一步会影响到后面安装源的选择,为了加快源的下载速度,可以根据服务器的实际位置来选择。这里我选择other-Asia-China。

系统本地化设置

这里需要对系统的本地化进行额外的设置。由于我们前面选择的是使用English语言,位置在China,而系统里面没有自带en_CN.UTF-8这个选项,所以需要我们自己选择一个合适的选项。默认选择的en_US.UTF-8就很OK。

键盘布局选择

键盘布局选择,如果键盘上按键位置与其他国内到处可见的键盘一致,选择默认的American English即可。

主机名设置

主机名设置,它的作用是在局域网中标识你的主机(就好像在互联网中使用域名来标识一台服务器一样)。由于这是一台本地测试服务器,不需要什么公司统一的命名规范,随便起一个能让自己快速明白它的作用,且与网络中其它主机不重复的名称即可。

域名设定

主机域名设定。我们的电脑只是用于家庭网络,所以随便选个名字就行。这里采用系统默认的名称localdomain。

注:因为我们把虚拟机的网络设置成了NAT,虚拟机所在的网络是有DHCP服务器的,所以这里你看到的情况可能会和你实际操作中遇到的界面不太一样,这里是因为Debian安装程序会自动检测主机连接的网络情况,自动配置了网络参数。

管理员密码设置

设置管理员用户root的密码,连续输入两次。

添加新用户

除了root之外,我们还需要为系统添加一个普通用户,这里我们要输入的是用户全名。注意,这不是用户登录系统使用的用户名。就好像现实中有一个人名字叫张三,他电脑登陆的用户名却叫luoxiang。这里输入的是他自己喜欢的名字:张三,或者法外狂徒。

设置新用户登陆名

为刚刚我们新建的用户指定一个登陆系统使用的用户名。因为Debian安装之后默认不允许使用root进行SSH登录,在创建别的用户之前,这里创建的新用户是唯一能通过SSH登录的用户,请务必牢记当前创建的登陆名和密码。

设置新用户登陆密码

为新用户指定登陆系统使用的密码,重复两次。

磁盘分区

这一步是磁盘分区。这里要进行的操作可能会稍微专业那么一丢丢。很多对Linux不熟悉的朋友在物理机安装Linux的时候导致硬盘分区丢失就是在这一步。不过我们选择知难而退,直接让系统帮我们把整个磁盘(entire disk)进行分区。分区的时候我们选择第二个选项,使用LVM。

LVM是Logical Volume Manager的缩写,中文一般翻译为“逻辑卷管理”,它是Linux下对磁盘分区进行管理的一种机制。系统管理员可以利用LVM在不重新对磁盘分区的情况下动态的调整分区的大小。如果系统新增了一块硬盘,通过LVM就可以将新增的硬盘空间直接扩展到原来的磁盘分区上。例如:未来我们觉得之前分配给系统的磁盘小了不够用了,我们可以直接通过VMware添加一块磁盘给虚拟机,再通过一系列指令来扩大原来分配的磁盘大小。

如果是在虚拟机中来为现实安装做练习,你可以尝试下第四个选项,手动配置。练习前可以看看鸟哥的文档-主机规划与磁盘分区

选择分区磁盘

给系统解释一下,我们说的整块磁盘,到底是哪块磁盘。「你给我翻译翻译,什么他妈的是他妈的惊喜」

自动分区策略

这里是指定一个自动分区的策略,我们是否要把一些挂载点单独分出来。单独分出来的话,在现实中是有好处的,如果硬盘出现问题,你可以把这些分区单独挂载出来,执行导数据等一系列操作。我们当前的出发点是做测试环境,实际借助的是VMware的快照功能。我们实际需要做的是加强我们本地实体机的硬盘抗灾能力,而非虚机。所以这里我们大胆的选择,请把全部文件放在一个分区下——我是Python用户,一个采取扁平化方式看待世界的人。

硬盘分区动作确认

吃红色药丸(Yes),还是吃蓝色药丸(No)?选择了Yes,硬盘上的数据就要说拜拜了您呐。选择了No,过会儿它再来问你一次。

Debian默认使用ext4文件系统。ext4是什么,你可以参照Windows使用NTFS格式对磁盘进行格式化这个概念来进行对比理解。

卷组大小设置

确认一下卷组大小。默认值(整个磁盘大小)即可。

LVM执行确认

再确认一下,确认后系统就要搞事儿了。勿谓言之不预也~

基础系统安装

安装最小系统。等待读条。

扫描其他安装光盘

是否还有其它的安装光盘?因为后续我们会通过网络来下载所需的软件包,所以此处我们选No。如果对这一步有疑问,请留言。

选择距离您最近的本地镜像源

选择你要使用的本地镜像源,请选择距离你位置最近的地区。这里选了China。

本地镜像源选择

我选择163镜像源。

代理设置

你上网是否需要使用代理?不需要的留空。

APT包管理器配置读条

配置APT包管理器。等读条……

使用反馈选项

是否参加匿名的使用反馈?你决定。

软件安装选择

选择需要安装的软件包。我们是服务器用途,所以我们就不安装桌面环境了(毕竟我只给它分配了2G的内存,要啥自行车!这是任性的时候么,都要是资源的)。但是我们要远程使用SSH工具登陆系统,所以我们选择SSH Server选项。最后一项——标准的系统工具集——我们继续保持默认选中状态。

安装引导

是否在本地磁盘上安装引导。我们本机没有别的操作系统安装的引导程序,也不想每次通过光盘来引导系统启动,所以这一步我们选择Yes。

安装引导

选择把引导安装在哪块磁盘上。我只且仅有一块硬盘,所以直接选择/dev/sda。第一个选项是手工输入,需要自己手敲键盘,敲的内容还是/dev/sda,会多消耗8次键盘敲击的能量。现实中用户如果想实现Windows-Linux双系统共存,可以先安装Windows再安装Linux,这样可能会在引导程序这个问题上减少工作量。不过如果只有一块磁盘又想双系统,那之前的分区操作就需要你多花点时间来深入了解一下,毕竟不能再任性地擦除整块硬盘数据了。

安装引导

Debian 11 installation complete

完成安装,系统要求移除光盘后重启——不移除光盘的话,如果系统还是从光盘引导而不是硬盘引导的话,会再次进入系统安装过程。不过VMware会在重启后尝试从磁盘启动系统的,所以我们在此并不需要实际做些什么。直接Continue。

完成安装

系统重启,安全地看到系统启动引导界面。泪流满面。

Debian 11安装后的基本配置

root无法通过SSH登录

在新完成安装的Debian系统上,root用户是无法直接通过SSH登录的,我们只能通过在安装过程创建的用户进行SSH的登录(这里说的是SSH远程登陆,不是直接在电脑前操作。在电脑前root用户可以直接登陆)。

如果希望root用户登陆SSH的话,需要修改SSH的配置文件。实际上不以root用户直接登陆系统可能是更安全的选项,而且在有需要的时候可以通过身份变换的方式来运行指令。所以我们在此就不设置允许root SSH登陆了。

sudo命令找不到

testu@bogon:~$ su -                      <--切换到root用户,并加载root用户的环境变量!
Password:                                <-- 输入root的密码
root@bogon:~# apt install sudo           <-- 执行sudo的安装
root@bogon:~# sudo -V | grep path        <-- 确定sudoers文件位置
root@bogon:~# cat /etc/sudoers           <-- 查看系统默认的可执行sudo指令的用户群组
root@bogon:~# id testu                   <-- 查看testu用户当前所在的群组
root@bogon:~# usermod -a -G sudo testu   <-- 给testu用户加入sudo群组
root@bogon:~# id testu                   <-- 验证testu用户成功加入群组
root@bogon:~# exit                       <-- 退出root切换
testu@bogon:~# exit                      <-- 退出testu后重新登陆testu,即可拥有sudo权限

执行系统更新

testu@bogon:~$ sudo apt update   <-- 检查更新
[sudo] password for testu:       <-- 输入的是testu的密码,而不是执行su时输入的root密码
testu@bogon:~$ sudo apt upgrade  <-- 执行更新(如果有更新的话再执行)
testu@bogon:~$ man sources.list  <-- 查看如何配置软件源的系统手册
testu@bogon:~$ cat /etc/apt/sources.list   <-- 系统软件源配置文件,如有deb cdrom的条目可以在此文件中使用sudo vi /etc/apt/sources.list命令来编辑注释该行

设定命令alias

testu@bogon:~$ alias                            <-- 查看当前已有的命令alias
testu@bogon:~$ cat /etc/shells                  <-- 查看当前系统有哪些shell可用
testu@bogon:~$ cat /etc/passwd | grep `whoami`  <-- 查看自己账号使用的shell
testu@bogon:~$ man bash                         <-- 当前我用的是bash,看一下帮助手册
testu@bogon:~$ cat ~/.bashrc                    <-- 查看~/.bashrc文件
testu@bogon:~$ vi ~/.bashrc                     <-- 编辑此文件,在此处取消一些alias注释
testu@bogon:~$ source ~/.bashrc                 <-- 重新加载~/.bashrc使修改生效
testu@bogon:~$ alias                            <-- 可以确认新设置的alias已经生效了
testu@bogon:~$ cat /etc/bash.bashrc             <-- 这里只是告诉你这是系统全局的bashrc

系统防火墙配置

nftables是Debian 11默认的防火墙,它替换了之前使用的iptables。系统安装完后,防火墙是默认没有启用的。直接启用后里边也是没有默认规则的。由于我是测试用途,所以就不配置防火墙了。

下面放置一些基本资料,有需要的朋友请自行研究或者留言告诉我。有需要的人多了,我再出个文档。

官方wiki:https://wiki.debian.org/nftables

testu@bogon:~$ systemctl status nftables          <-- 查看防火墙状态
testu@bogon:~$ cat /etc/nftables.conf             <-- 查看当前防火墙的配置
testu@bogon:~$ sudo systemctl start nftables      <-- 开启防火墙
testu@bogon:~$ sudo nft list ruleset              <-- 查看当前的防火墙规则
testu@bogon:~$ sudo systemctl enable nftables     <-- 设置开机启动

其他学习资料

想要更好地学习Debian,可参考Debian参考手册。请不要盲目追求系统性的学习,立足于遇到的每一个实际问题,坚持上手实践就会有巨大进步的。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注