A Quick Guide To Linux Servers
相比于 Windows,Linux 免费、开源、安全、灵活、稳定、便于开发,所以更受开发人员青睐,甚至 90% 以上 的企业应用都是基于 Linux 服务器部署的。无论是前端、后端、算法、测试、运维等……都建议学习下 Linux,大有裨益~~~
相关博文系列:
Windows Subsystem for Linux (WSL) on Windows 10/11
Linux Disk Partitions And File Systems
Ubuntu Server: Quick Configuration Guide
CentOS Server: Quick Configuration Guide
Linux Installs and Configures the SSH Service For Remote Login
打造高效 Terminal 工作流 CMD/Shell: Oh My Zsh + Tmux + Vim
如果文中有表述不正确的地方,望各位大佬不吝指正~~~
Linux Introduction
通常我们所说的 Linux 指的是基于 Linux 内核的操作系统。
Linux 是在 Unix 的基础上发展起来的,是一套 类 Unix 的操作系统。
Unix Vs Linux
Linux 是开放源代码(开源)的自由软件(自由),Unix 是对源代码具有知识产权保护的传统的商业软件。
但需要注意,自由软件是权利问题,不是价格问题(非免费)!!!Linux 用户有很高的自主权,可以对源代码进行自由的编写和修改;Unix 用户享有付费后的使用权,没有修改权。
↓↓↓↓↓↓ Linux 和 Unix 的其它区别 ↓↓↓↓↓↓
- Unix 系统通常是与大型计算机捆绑配套销售;Linux 则是单独购买或者免费使用的,可以运行在多种终端平台上,包括运行在 X86 体系的微型计算机;
- Unix 的商业化产品发行版主要有 IBM 的 AIX、HP 的 HP-UX、Sun 的 Solaris,以及 X86 平台的 SCO Unix/UNIXware 等;而 Linux 的商业化产品发行版主要有 Debian、RedHat、SuSe 等;
- Linux 内核是免费的,自由开源的,Unix 内核是保密的。
Linux Kernel
Linux OS 的核心部分 >>>> Linux Kernel(Linux 内核),是 Linux 操作系统的核心(Core)。
Linux 操作系统中,由内核(Linux Kernel)来管理和分配计算机硬件和软件资源(包括:管理和控制设备驱动,内存管理,虚拟文件系统,系统进程等比较核心和底层的工作)。
👇👇👇 关于 Linux 内核版本号 👇👇👇
Linux Kernel 版本号由:主版本号、次版本号、修订版本号构成,例如:6.7.6。
其中,次版本号如果是偶数,则表示内核是正式版;如果是奇数,则表示内核是内测版。
当前最新内核版本号查看地址 >>>> https://www.kernel.org/。你可以通过 View Linux-Distr Version Info 来查看当前 Linux 操作系统的内核信息。
一个操作系统只有内核的话,一般用户是没有办法使用的,需要配套相应的应用软件(例如 GNU 程序库和工具、Shell 工具、图形界面的 X Window 系统和相应的桌面环境,以及其它数千种应用软件),以及相关说明文档。
Linux 操作系统的完整组成 >>> Linux Kernel && Free Software && Documents。
Linux Distribution
Linux 发行版,就是打包好的 Linux 内核和应用软件集合。
Red Hat & Debian & SUSE
由于打包方式的不同,Linux 发行版出现了几个大的家族:Red Hat、Debian、SlackWare 等等,然后在每个大的家族里又有不同的发行版本:
| ================================================== Split Line =============================================== |
👇👇👇 Debian 家族 👇👇👇
Debian 是社区类 Linux 的典范,在服务器(Server)和桌面电脑(Desktop)领域都有着广泛的应用,最具特色的是 apt-get/dpkg(Debian Package) 包管理方式。
Ubuntu 是基于 Debian 发展而来,囊括了大量精选自 Debian 发行版的软件包,同时保留了 Debian 强大的软件包管理系统。具有全面的硬件支持,界面友好,易于上手,比较适用于桌面系统。其本身又有很多不同的版本,比如基于 KDE 的 Kubuntu,基于极致轻量的 LXDE 的Lubuntu,中国定制版的 Ubuntu Kylin 等。
Linux Mint 基于 Ubuntu 衍生,是专注于个人用户的桌面系统,界面更加美观(强烈推荐专注于 Ubuntu Desktop 的小伙伴)。
| ================================================== Split Line =============================================== |
👇👇👇 Red Hat 家族 👇👇👇
Red Hat 红帽公司,是目前世界上最知名的 Linux 厂商之一。
Red Hat 公司产品主要包括:
RHEL (Red Hat Enterprise Linux),是商业企业版本,源代码公开(技术支持需要付费,提供原厂服务)。
Fedora 是基于 Red Hat Linux 的社区版,由 Fedora Project 社区开发、红帽公司赞助。Fedora 会采用最新的技术,尝试很多新功能、新特性,取得成功后会应用到 RHEL 版本中,可以理解为是 RHEL 的个人桌面版和前期测试版。
CentOS(Community Enterprise Operating System),可以理解为是 RHEL 的社区克隆版,稳定性较好,免费开源。其独有的 yum 命令支持系统在线升级,可以即时更新。
| ================================================== Split Line =============================================== |
👇👇👇 SlackWare 家族 👇👇👇
SUSE Linux Enterprise Server(SLES),企业版,由 SuSE Linux AG 公司基于 SlackWare Linux 发展而来。
OpenSuse 是 SUSE 的社区版本,比较适用于桌面系统,它和 SLES 有点类似于 Fedora和 RHEL 的关系。
Linux-Distr Selection
如何选择一个合适的 Linux 发行版:
- 如果需要一个稳定的服务器:可以使用 CentOS7+(免费,使用广泛),或者使用 RHEL(付费,大厂支持,保证商业应用);
- 如果想用个人桌面系统来替代 Windows 的话,推荐使用 Ubuntu 的不同版本,例如 Linux Mint;
GUN/Linux
通常所说的 Linux OS,指的是 GNU/Linux ,即采用 Linux Kernel 的 GNU 操作系统。
Unix 系统被发明之后,大家用的很爽,但是后来开始收费和商业闭源了。一个叫 RMS 的大佬觉得很不爽,于是发起 GNU 计划/运动(GNU’s Not Unix),模仿 Unix 的界面和使用方式,从头做一个开源的版本。
接下来,很多的开源爱好者(用爱发电)纷纷在 GNU 计划下做了很多的工作和项目,包括核心的 GCC 和 Glibc,基本实现了当初的计划。但是 GNU 系统一直缺少操作系统内核(各种原因)。
然后,又有一个叫 Linus 大佬为了在 PC 上运行 Unix,在 Minix 的启发下,开发了 Linux(遵循 GNU GPL 协议)。需要注意的是,Linux 只是一个系统内核,系统启动之后使用的仍然是 GCC 和 Bash 等软件。
最后,大家突然发现,这玩意不正好是 GNU 计划缺的么!!!于是合在一起打包发布叫 GNU/Linux。
实际上 Debian,RedHat 等 Linux 发行版中内核只占了很小一部分容量。
| ================================================== Split Line =============================================== |
👇👇👇 GUN GPL 自由软件协议 👇👇👇
GNU GPL(GNU General Public License),GNU 通用公共许可协议,是一个广泛被使用的自由软件许可协议。
GPL 授予程序接受人以下权利,或称“自由”:
- 以任何目的运行此程序的自由;
- 再发行复制件的自由;
- 改进此程序,并公开发布改进的自由。
相反地,随版权所有软件的最终用户许可协议,几乎从不授予用户任何权利(除了使用的权利),甚至可能限制法律允许的行为,比如逆向工程。
Application Scenarios
Linux 由于其廉价、灵活性、高效以及 Unix 背景使得它适合于更广泛的应用:
- 服务器系统;
- 移动设备的嵌入式系统;
- 个人桌面(依靠 X Windows 桌面系统,越来越多的 Windows 软件也开始支持 Linxu)。
以支持:网络服务器(WWW、FTP、Mail、Proxy)、数据库服务器、手机系统(IOS 类 Unix,Android 基于 Linux)等应用。
传统上,以 Linux 为基础的 LAMP(Linux + Apache + MYSQL + Perl/PHP/Python)/ LEMP(Linux + Nginx + MYSQL + Perl/PHP/Python)技术,除了已在开发者群体中广泛使用,也成为了提供网站服务供应商最常用的平台。
Desktop Environment
谈到 Linux,桌面环境(Desktop Environment,DE)是个大问题。
Linux 桌面环境构成了图形用户界面(GUI),以及你在 Linux 发行版上得到的一组应用。你可以通过 解释什么是桌面环境的文章 了解。
选择一个好的桌面环境可以帮助你提高生产力、工作流程、易用性和整体体验。
| ================================================== Split Line =============================================== |
X Window System
刚开始使用 Linux 桌面环境,你可以会困惑于 X Windows System
& Xorg
& X11
& X Server
& Wayland
等术语。
事实上,
X Window System,Version 11(X11),是一套操作系统视窗显示标准,提供了一个基本抽象库(可以理解为:未实现,提供标准)。
| >>> X11
X11
采用 Client/Server 模式,最底层的 X-Server
负责输入(键盘、鼠标)并将它交给 X-Client
作出反馈,X-Client 根据输出信息提供一个完整的 GUI 界面,负责与用户的直接交互。而而衔接 X-Server 与 X-Client 的就是 X-Protocol
、它的任务是充当这两者的沟通管道。
| >>> Xorg
Xorg
,桌面环境(后端)服务器,是 X11 免费、开源的代码实现。故,Xorg Server
,也可以称为 X11 Server
,是 Xorg 的处理前端,用来处理用户输入和系统输出的指令。
| >>> Wayland
Wayland
与 X Window System 是对等的概念,是 X11(已经老了)的下一代产品,是新一代的显示处理标准。目的是用现代,安全和简单的窗口系统代替 X Window System。
补充 >>>> 为了方便开发人员编写 X-Client,使用 Xlib 来封装 X-Protocol;Xlib 提供了创建图形用户界面的基本工具。还不够方便,于是就有了 QT 和 GTK。
GNOME/KDE/XFCE/Unity/LXDE
GNOME(GTK)、KDE(QT)是一个桌面环境,可以看作是一个 X-Client,说看作是因为其包括一系列应用程序:显示管理器,窗口管理器,Firefox 浏览器等都是 X-Client。
一般 Linux 默认桌面环境使用的是 GNOME,当然你也可以安装其它桌面环境。关于桌面环境选择,你可以参考 最佳桌面环境 进行选择。
了解了 Linux 的基本概念之后,我们来看如何搭建 Linux 以体验全新的 Linux 环境:
Linux Environment Experience
这里,我们提供几种常见的 Linux 环境的搭建方式:
- ⭐ 虚拟机(Virtual Machine)
- ⭐ 云服务器(Cloud Server)
- ⭐ Physical Machine(Real PC)
- Windows Subsystem For Linux(WSL)
- Docker
- Linux Online Tools
Linux Setup
关于虚拟机(VM)和实体机(Real PC)中 Linux 系统环境的体验教程,请参见系列博文:【Linux Installation tutorial】中描述。
云服务器中 Linux 的安装依赖于各个云平台,根据 Linux 发行版版本即可实现自动安装,支持公网 Ip 访问。
关于 Windows Subsystem For Linux(WSL)中 Linux 环境的体验,请参见系列博文:【Windows Subsystem for Linux (WSL) on Windows 10/11】中描述。
Linux 环境在线体验工具 >>>> 【Never Install】。
Remote Connection
A Quick Guide To Linux Servers
https://www.orangeshare.cn/2015/01/25/a-quick-guide-to-linux-servers/
install_url
to use ShareThis. Please set it in _config.yml
.