--- title: 谈谈我的「数字文具盒」 - 运行平台 description: 我的数据文具盒之路以及生产力工具的搭建 keywords: - 数字文具盒 - 生产力工具 - 运行平台 tags: - 数字文具盒 authors: - 7Wate date: 2022-11-28 --- 数字基建准备工作完成以后,就要准备搭建运行平台;简单来说运行平台是云服务器与应用服务的中间层起着承上启下的作用。例如操作系统的选择、运行模式的规划、数据存储的模式、系统安全的完善。 因为我只有一台性能有限的云服务器,所以运行平台达到的最终**目的是应用服务高内聚,低耦合**。 ## 操作系统 ### Windows Server Windows Server 是 Microsoft 专门创建用于服务器的一系列操作系统,旨在持续运行并为其他计算机提供资源。其提供便捷的 GUI 界面,Winodws 用户学习成本较低,可以快速上手。 **除非特殊需求,绝大部分情况下都很少使用 Windows Server 系列操作系统。** 因为其系统资源占用相对于 Linux 较高,通用性稍差以及社区文档支持较少。同时 Windows Server 作为一款商业化操作系统,高昂的授权费用也是令人头痛。但并不是不能用,只是我没有尝试过所以就不深入展开讲述了。 ### Linux Linux 是一种自由和开放源码的类 UNIX 操作系统。该操作系统的内核由林纳斯·托瓦兹在 1991 年 10 月 5 日首次发布。**Linux 具有跨平台、低资源占用、可靠的安全性、社区的支持以及开源授权等优点**,在服务器操作系统领域让众多 ITer 爱不释手。Linux 在低性能云服务器领域几乎是绝对的王者,同时 Linux 丰富的发行版本和社区支持,基本上可以满足你 90% 的需求。Linux 发行版本最明显的差异就是社区的运营方式,可以分为开源基金支持和商业化运营。 ### Linux 那个发行版本好? **选择你最喜欢的,综合来说 Debian、Ubuntu 的使用率更高。** 我会在不同的情况下选择不同的社区版本使用,目前最常用的就是 Debian。 > [Linux 主流社区](https://wiki.7wate.com/devops/Linux/%E6%96%87%E5%8C%96/Linux%20%E4%B8%BB%E6%B5%81%E7%A4%BE%E5%8C%BA) ### Linux 怎么安装软件? **根据发行版本,使用包管理器可以方便快捷安装软件!** Linux 不同于 Windows 的图形化界面,大部分服务器管理方式也都是黑黑的命令行终端。但是 Linux 的日常系统更新,软件安装却只需要一条命令即可。 ```shell # apt 安装 git apt install git ``` ### Linux 安装软件很慢 **可以设置境内 Linux 镜像源或者使用代理服务。** 因为大部分 Linux 的官方源的服务器都在境外,所以境内使用 Linux 官方源安装软件就会超级慢,使用体验和百度云没开会员差不多。国内的开源爱好者为了解决这个问题,维护了《[一键更换国内软件源](https://gitee.com/SuperManito/LinuxMirrors)》仓库。 ```shell # root 用户 bash <(curl -sSL https://gitee.com/SuperManito/LinuxMirrors/raw/main/ChangeMirrors.sh) # Sudo 用户 sudo bash <(curl -sSL https://gitee.com/SuperManito/LinuxMirrors/raw/main/ChangeMirrors.sh) ``` ## 运行模式 云服务器的操作系统安装完成后,规划合理的运行模式依旧很重要。因为我的**目的是应用服务高内聚,低耦合**,所以我使用的是容器模式;最常用的就是大名鼎鼎的 Docker。除了容器模式,还有裸机运行模式;同时低门槛上手,文档完善的管理面板就是[宝塔](https://www.bt.cn/new/index.html)了。可以结合实际情况来选择,但是我真的不建议用宝塔。🤐🤐🤐 ### 裸机 裸机模式就是应用服务直接跑在操作系统上,**性能利用率高、性能损耗少**。但是**环境管理难**,容易出现莫名其妙的问题而且还不容易找到原因。而且你需要面对黑黑的命令行管理终端,面对新手朋友及其不友好。 我就曾遇见一个网友学习使用 MySQL,当时他安装了两个版本的 MySQL,端口分别是 3306,3307。然后在数据库管理软件使用的 3307,命令行终端使用的 3306。最后命令行终端执行的 SQL 操作语句,在数据库管理软件中完全查不到数据。向我们提问这是为什么?最后真的无力吐槽了······ #### 宝塔 [宝塔面板](https://www.bt.cn/new/index.html)作为国内一款安全高效的服务器运维面板,宝塔提供的 Web 管理页面让运维简单高效。可以一键配置:LAMP/LNMP、网站、数据库、FTP、SSL,通过 Web 端轻松管理服务器。**但是但是它翻过车,曾有一个更新导致众多站长的数据库被爆,损失惨重!** 虽然曾经翻过车,但是宝塔的学习成本低,上手容易入门快。所以就**结合实际情况,理性使用。** ### 容器 > **容器** (Container) 是一种基础工具。泛指任何可以用于容纳其它物品的工具,可以部分或完全封闭,被用于容纳、储存、运输物品。物体可以被放置在容器中,而容器则可以保护内容物。 [Docker](https://www.docker.com/) 是一个开放源代码的开放平台软件,用于开发应用、交付应用、运行应用。Docker 允许用户将基础设施中的应用单独分割出来,形成更小的颗粒,从而提高交付软件的速度。 Docker 容器与虚拟机类似,但二者在原理上不同。容器是将操作系统层虚拟化,虚拟机则是虚拟化硬件,**因此容器更具有便携性、高效地利用服务器。** **Dokcer 容器的特性就是虚拟化,提供一个隔离的环境。** 例如你可以运行多个版本的应用服务,其环境不会产生任何冲突。现在绝大部分的应用服务都提供了 Docker 镜像,可以方便快捷的搭建、运行应用服务;例如搭建一个 nginx 服务: ```shell docker run --name nginx -d nginx ``` ## 数据存储 因为数据就如同水一样,应用服务缺失了数据也就失去了它的意义,所以数据存储尤为重要。数据库的选择,静态资源的管理备份等。数据存储备份还可以减少数据损失造成的价值损坏最小化。 > 小心使得万年船,常备份,多备份! ### 数据库 数据库,简而言之可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的资料执行新增、截取、更新、删除等操作。所谓数据库是以一定方式储存在一起、多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合。 #### MySQL / MariaDB 哪个好? **应用服务需要那个就用那个,尽量选择通用版本。** MariaDB 是 MySQL 关系数据库管理系统的一个复刻,由社区开发,有商业支持,旨在继续保持在 GNU GPL 下开源。简单来说 MariaDB 就是 MySQL 的儿子。 #### 其他的数据库管理系统可以用么? **结合实际情况;** 虽然数据库管理系统千千万,但是常用的就是那几个呀。 ### 备份 **数据一样要多备份、常备份!** 所有云厂商的云服务器都提供了相对基础的数据备份,但是他们不会保证你的数据一定不会损坏丢失。所以可以通过以下方式低成本备份: - 下载备份电脑里。 - 下载备份硬盘里。 - 加密备份云盘里。 总之就是一定要多备份,常备份!管它冷备、热备、异地多活总之就是多备份,一定不会错。淘宝上 500GB 的机械硬盘 25 元左右一块,买 4 块回来都做成冷备;公司扔一块、学校扔一块、家里扔一块、老家扔一块,理论上来说数据全部丢失损坏的机率为 (2^4+N)≤6.25%。 ## 系统安全 系统安全是老生常谈的话题了,但是系统安全门槛高,各种问题层出不穷;最后也许你也不知道该怎么做好系统安全。基本从下面的两方面出发就可以快速杜绝大部分系统安全问题。 ### 网络防火墙 网络服务最常用的端口,例如:22、80、443 等;如果你购买的是云服务器,那么你可以**利用云服务商的防火墙管理面板只放开应用服务的端口**。在使用 nginx 做代理的情况下,所有的应用服务基本都可以走 80 或 443 端口,那么服务器就可以只打开这两个端口,其他的包括 22 端口需要用到的时候再打开。Docker 容器模式下更可以使用网桥做内外网隔离,纵使攻击者进入了服务器,能进行的操作也只是有限的。 最最最坏的一种情况就是,全军覆没了。这种情况下,如果你做好了完全的、充分的数据备份,任由它随便攻击。 无所谓 ~ 谁会爱上谁 ~ ### DDOS 网络攻击最有效,最常见的一种方法就是分布式拒绝服务攻击(DDOS)。其目的在于使目标电脑的网络或系统资源耗尽,使服务暂时中断或停止,导致其正常用户无法访问。这种情况下我们可以通过使用 CDN 来隐匿云服务器真实物理 IP 地址,让攻击者找不到攻击目标从而放弃攻击。 ## 引用 > 来源:[容器 - 维基百科,自由的百科全书](https://zh.wikipedia.org/wiki/%E5%AE%B9%E5%99%A8);仅学术引用,著作权归作者所有。 > 来源:[Docker - 维基百科,自由的百科全书](https://zh.wikipedia.org/wiki/Docker);仅学术引用,著作权归作者所有。 > 来源:[拒绝服务攻击 - 维基百科,自由的百科全书](https://zh.wikipedia.org/wiki/%E9%98%BB%E6%96%B7%E6%9C%8D%E5%8B%99%E6%94%BB%E6%93%8A);仅学术引用,著作权归作者所有。