Linux基础 学习Linux前要准备什么
本文最后更新于 352 天前,如有失效请评论区留言。

本博客由ZGOCLOUD大力赞助!如何更快地访问本站?有需要可加电报群获得更多帮助。本博客用什么VPS?创作不易,请支持苯苯!推荐购买本博客的VIP喔,10元/年即可畅享所有VIP专属内容!

日志

  • 2023-05-09:优化VPS相关教程。

前言

此前,我们已经简单地讨论过Linux和Window的区别。我们现在就要开始玩Linux了!那么我们要做哪些准备工作呢?

我建议你掌握一些Linux基础,一方面是觉得作为另外一种操作系统,基于兴趣你可以了解一下,反正多学一些东西它不是坏事;另一方面呢,主要是因为Linux还可以很好地支持Docker

虽然我们还没有正式地学习Docker,但是还是可以简单地聊一下。首先,Docker是跨平台的(至少表面上是这样)。类似于Conda一样,你甚至可以在Windows里安装Docker。除了Windows,很多Network attached storage(NAS)操作系统,比如群晖、Unraid、TrueNAS/FreeNAS都不同程度地支持Docker。OpenMediaVault就不说了,就是一个披了NAS外衣的Debian系统嘛(Ubuntu也可以算是Debian系Linux发行版)!

掌握了一些Linux基础后,可以无压力阅读我的Docker系列博文。虽然Docker的部署是比较傻瓜式的,但是有一些Linux的基础将会让你玩Docker时如鱼得水;对于一些比较复杂的目标,比如将chevereto图床的数据从宝塔面板迁移到docker容器,就需要进入到容器Shell的内容控制mysql数据库;这时候Linux基础的功底将让你可以轻松地驾驭这些不寻常的操作。

在Linux下了解Docker是有好处的。根据我的经验,Linux Docker的通用性比较强。我之前曾经在一个用Unraid的小伙伴那里,通过Shell使用Docker,毫无违和感。这也许是因为Docker与Linux内核的交互性比较强吧,所以它的拓展性也很强。不管怎样,如果你以前没有怎么接触过Docker或者是NAS,那么你一定会被Docker的可玩性深深折服!

本博客也是通过WordPress的Docker镜像布署的。是不是很帅呐! 当然啦,如果你跟着我的节奏学习,可能要比较晚才接触到相关的知识。这里不得不提一句,WordPress个人博客也是个深坑,里面讲究的东西多着呢!

Markdown

Typora教程详见《Typora 地表最强Markdown编辑器之一

无论学习什么编程语言,包括学习Linux,我个人强烈建议你先了解markdown。实际上,对于任何一个进行与文本处理有关工作或者学习的人,markdown都是一个非常不错的工具。

对于我来说,markdown在我的工作体系中是非常基础和低层的,大量的文本都是基于markdown。本博客的所有文章都是用markdown来编写的(少数WordPress页面除外)。

markdown主要是用于快速而有条理地进行文本记录。如果你只追求文本的层次感而不特别在意文本的特效,markdown就是你的菜了 🙂 。

Markdown有以下优点:

  • 本身是免费的。某些编辑器可能会收费。如果你介意,完全可以找到免费的替代品。
  • 在程序员群体中被广泛使用:Github仓库的READNE文档的默认格式也是markdown。Reddit、Github或者是很多社区论坛、个人博客都支持markdown语法。简书也支持markdown写作。
  • 优秀的代码展示:本博客的代码高亮等效果都依赖于markdown的渲染。这应该也是Github、众多平台/论坛和个人博客都支持markdown语法的主要原因之一吧!
  • 与html良好交互:markdown生成的网页一点违和感都没有,看本博客可一窥其效果。你在某些网页复制下来的内容甚至可以直接粘贴成markdown格式。
  • 丰富的表情包: :stuck_out_tongue_winking_eye: :stuck_out_tongue_winking_eye: :stuck_out_tongue_winking_eye: :stuck_out_tongue_winking_eye: :heart: :heart: :heart: :heart: :sparkles: :sparkles: :sparkles: :sparkles: 。这算不算优点呀(~ ̄▽ ̄)~ 。
  • 其它:百度Google了解吧。

总之,markdown对于学习编程来说是个必备神器,学习Linux也是同样的。它与LaTexJupyter Notebook等重要工具也有密切的联系。学R语言的人如果用过RMarkdown的话,也一定会被它的简单高效所震惊。

所以,强烈建议你花1个小时左右学习一下markdown的语法和相关的快捷键,非常简单。这甚至可能是你人生最美好的1小时!至于进阶的使用,比如mermaid之类的,以后自然慢慢就会了解了。我平时的写作,一般也只需要用到最基本的语法。

在电脑端推荐使用Typora编辑器进行markdown的写作,三大电脑操作系统(Windows/Mac/Linux)的版本都有。用过的人都说好喔!最近正式版收费了,但也不用很贵,估计也有破解版。不过为了支持开源社区,我已经买了正式版了,89元有一个可以使用3次的激活码。如果在意它不是免费的,选其它编辑器(比如obsidian)也行!估计选择只能用“多如牛毛”来形容了!

不过,markdown要搭配在线图床使用才有最佳效果。至于在线图床的搭建可见本博客的相关教程,在此不再赘述。在刚刚开始使用时,你可以将图片托管到本地电脑的一个固定目录,以后搭建好图床可以一键上传;或者你可以先了解一下如何利用Github或者Gitee搭建免费的个人图床。

VPS

温馨提醒:互联网不是法外之地,大家不要利用VPS来做违法犯罪的勾当喔!

简介

Virtual Private Server(VPS, 虚拟专用服务器)主要是基于操作系统级的虚拟技术而开发出来的一种服务。一般就叫VPS,也有人叫“小鸡”之类的,因为个人买的VPS配置往往是比较差的。在个人层面上讨论的“阿里云”、“腾讯云”狭义上就是VPS。

那么新手玩Linux为什么需要VPS呢?有以下几个理由:

  • VPS常态化:很多互联网公司都提供VPS服务,比如阿里云,腾讯云。国外也有很多。
  • 资费便宜:一般一年50-100远左右的VPS就可以玩很多东西了。
  • 可控性强:VPS有一个独立的管理后台,可以随时关闭、销毁和重装系统,适合新手折腾。
  • 网络扩展性强:VPS通常有一个固定的公网ip(类似于118.69.33.74这样的),并且开放443端口,这在家用宽带里通常是不可用的。固定的公网ip和开放的443端口对于新手入门一些互联网服务(基于https)更加容易。家用宽带就算是特别去申请,也只能用一个动态的公网ip,需要运用动态域名解析(DDNS)的相关操作可以稳定使用互联网服务,这对新手来说不是很友好。
  • 使用方便:不用像物理主机那样花时间精力去管理硬件和交电费。

注册个帐号,交几十块钱,马上就有一个完整的系统给你玩。还要什么自行车啊? :relaxed:

VPS那么好,为什么还有人要在家里搭NAS呢?首先,VPS的网络资源往往是有所限制的,主机的配置也比较差。对于家庭影音之类的对带宽要求较高的应用场景是不合适布署在VPS上的。而且呢,如果你买的VPS如果和NAS一样配置,价格可能要贵上十几二十倍。家用NAS,或者是某些公司的NAS,多数是在局域网中运行,与VPS相比对于网络安全的管理要求更低一些(如果有互联网服务,那么也要考虑网络安全的问题)。

有些人可能不放心自己的数据托管在VPS中,就会选择自建NAS托管个人数据。毕竟VPS是一个公司的服务,你的个人数据可能会被他们利用,也有可能泄露给其它人。像Facebook这样的大公司也曾经出现过严重的数据泄露。不过新手应该暂时不用考虑这种问题,毕竟网络和数据安全可是一个很大的话题呢,相关的讨论可以看本博客的相关文章。

更重要的是,家用NAS的容量基本上是吊打VPS的。家用NAS的容量往往是以TB为计量单位,有一些工作室的NAS容量甚至达到PB级。它们往往通过一种叫做磁盘阵列的技术,将多块硬盘的容量融合到一起(暂时可以这么理解,哈哈)。ZFS文件系统是个有趣的东西,以后有机会我会单独地讨论它的使用。在存储上,新手用VPS暂时只需要考虑容量问题。

总之,对于新手来说,VPS是入门Linux的一个不错的选择。你也可以选择在个人电脑上搭建一个VM虚拟机来爽一把,不过我觉得体验上VPS要好一些。而且在VM虚拟机上很难进行互联网服务的测试,因为它会受限于你的个人宽带,而家用宽带会存在前面所提及的一些限制。

最后,建议有条件的小伙伴去办一张Visa信用卡,这样购买海外的服务会比较简单。

国内 or 国外?

根据经验,我强烈推荐新手在选择VPS的时候最好选择海外的机房。理由如下:

  • 免备案:国内VPS要玩互联网服务的时候需要备案,这通常会花费2周到1个月的时间;国外VPS则没有这种限制。
  • 高配置:相同价格条件下,国外VPS的带宽和流量往往更大。
  • 网络无限制:国外VPS的网络没有限制,Github/Docker等各种开源平台和库可以随便访问;搭建特殊服务(比如自建ChatGPT)的时候不容易被限制
  • 评论、赞赏无限制:虽然没有管制,可以通过一些技术手段控制有害评论。赞赏这个功能其实形同虚设,基本上是没有人赞赏的 Σ( ° △ °|||)︴
  • 与Cloudflare互动更好:由于Cloudflare并没有完全进入中国市场,国内VPS不能使用Cloudflare——一个为免费用户提供强大服务的网络服务商。另外,国外VPS与Cloudflare的边缘网络连接的延迟更低。这对于使用Cloudflare的用户来说是非常友好的。
  • 稳定性佳:国外VPS甚至可以当作一台正式的主机来部署服务,这也是我正在做的事。
  • 支付方便:某些品牌的海外VPS也可以支付宝和微信支付,挺方便的。

如果大家还没有自己的国外VPS,可以到这里选购一台,有低/中/高配的选择,我已经详细地说明不同配置的适用场景,大家按需选择即可。等完成基础知识的学习,以后对建站有更高的要求,比如极致的响应速度和SEO优化,再转战国内VPS不迟。不过,据我了解,大部分使用国外VPS的小伙伴基本上是不会再回去了——和爱不爱国无关,主要是性价比太香!

VPS容量

玩Docker的话,推荐ssd至少20G以上,内存1G或以上,CPU差一点都没关系。

我之前用的是一个小Racknerd VPS,是10G固态硬盘空间。布署了几个docker应用后,有一天我发现我的网站登陆后显示“连接数据库错误”(是英文的,具体是什么当时没截图)。其实在前一两天我就发现一些奇怪的事情,那就是当我部署一个docker container的时候,另外一个docker container出现数据库连接错误。当时我无法理解这个事,因为docker提供了进程级隔离,不应该出现这种状况。不过,当我看了mysql的错误日志后,它提示空间不足时,我就意识到可能有一些暗藏的巨大文件(夹)。

我直接在根目录运行ncdu命令,发现了一个docker相关的大文件夹overlay2:如图所示:

image-20220418093954060

而我只是装了这一点应用:

image-20220418094157094

在互联网上,docker的overlay2占用巨额磁盘资源是一个被频繁提问的问题。截止本文写成之时,我暂未有十分妥善的解决方案。这里我做了一个小检测:

# 查看文件夹内所有子文件,并展示容量排名前10位的文件
du -Sh /var/lib/docker/overlay2 | sort -nr | head -n10

输出结果如下:

1012K   /var/lib/docker/overlay2/dec91c65475c0a5838d3a23d1e830eb46cf2c27037a21b9fe5a02a73b8ac5a0f/diff/var/cache/debconf
1008K   /var/lib/docker/overlay2/ba3a7e92a61f5c76c3e25fa37c750cbac947c4a0e8fceb80088c19e2a5828602/merged/opt/certbot/lib/python3.7/site-packages/setuptools
1008K   /var/lib/docker/overlay2/8ffeb14c1d8b77e15b21d2489090d9169990e78c575e7579cf4f178ec27386bd/diff/opt/certbot/lib/python3.7/site-packages/setuptools
1008K   /var/lib/docker/overlay2/85b27ebc3c8bb3ea1e124ef9ab07ac68fe35f01f0f6fa94d2ccf72881174aee7/diff/tmp/openresty/build/nginx-1.19.9/objs/src/event
1008K   /var/lib/docker/overlay2/4c9beda74ed14a677330556b35731aeb0e17c406ebfc878369f4ab062ce77b8d/diff/usr/local/lib/python3.7/dist-packages/setuptools
1000K   /var/lib/docker/overlay2/cea540335b98a07364735f6cc32d5f7c23c191280be74d695ead72e311e4625b/merged/usr/lib/apt/methods
1000K   /var/lib/docker/overlay2/c3f4b9167b48a31ee19c64620330ade3297da0d7d466bd6675a2f38b22ba3b53/merged/usr/lib/apt/methods
1000K   /var/lib/docker/overlay2/8903b219f07ee7806e4e0d731fb8d090ef1a6972a30156ac181f6dc3b4783bec/merged/usr/lib/apt/methods
1000K   /var/lib/docker/overlay2/20839a224f7d55cc6fa5f69d4dcc133876f4ed190862356801360d134e859d15/merged/usr/lib/x86_64-linux-gnu/security
1000K   /var/lib/docker/overlay2/155e139374af71f0f3fe0edf3b1acfcaecdbd309226908034bbabae1abe19430/diff/usr/lib/apt/methods

可见并没有容量十分集中的文件。

所以docker的overlay2占用巨额磁盘资源是一个复杂的问题,背后有很多可能的成因,并不像网络上的答案那样那么容易解决。值得一提的是,docker并不是一个轻量级应用,它需要足够的磁盘容量去支持;或许我可以尝试做好备份,然后清空一波image和contrainer,重新再上线docker应用。不过目前打算先观察一下,毕竟在删除一些文件后它还是可以被使用。

家用NAS用户应该不会发现这个问题。因为家用NAS的容量都是以T来计算的。这丁点容量连一部蓝光电影都比不上。提问者大概率是VPS用户,因为VPS的容量往往很小(一般只有几十G)。但是你如果使用VPS,容量管理就会变得非常重要。

Domain(域名)

如果你想用VPS搭建一些互联网服务(个人图床、个人博客),那么你还需要一个域名,类似baidu.comgoogle.com这样的。一般.com结尾的域名会贵一些(一年几十块这样),新手可以选一些冷门的,比如.top啥的,一年几块钱就行了。

国内一般是选阿里云腾讯云托管域名,而国外的话可以选择cloudflare。其它的服务商我也没有用过,但都是大同小异的,哪个有名哪个常用就选哪个就是了。选常用的域名托管商有一些好处:

  • 使用Nginx Proxy Manager的时候,如果你需要用DNS challenge的方式申请证书,可以很方便地添加token。
  • 好的域名服务商会有很多高级服务的,对于安全性或者企业级环境可能是很重要的,不过这方面我了解也比较有限。

总之就是花一点小钱买个域名嘛,一般是按年收费的。好处多多的 :satisfied: 。你买了域名后短时间内暂时还用不上的,等以后需要布署互联网服务的时候才用得上。你也可以等那个时侯再买域名。

至于域名购买、公网ip解析这些基本操作我就不一一说明了,每个服务商都大同小异,网上教程太多了,自己百度Google一下。如果你还没有什么个人选择,建议你和我一样,在Cloudflare上托管你的境外域名。这样,你就可以在个人博客建设VPS网络安全里得到我的相关建议了!

不过,如果你的域名使用了cloudflare的proxy模式,你的站点访问可能会受到cloudflare的网络波动。在国内,偶尔会无法正常地访问cloudflare。我也不知道为什么。

如果你的域名中包含非英文和数字格式的字符(比如大可爱.com),建议在Punycode converter之类的网站里进行格式转换后再申请ssl证书(来自@Derek的经验)。

Shell客户端

假设你已经有了一个VPS,有一个公网ip/帐户/密码,你要怎么远程地访问它呢?

我们可以在windows系统上装xShell、FinalShell、Putty、MobaXterm之类的软件。它们工作时大致长这样:

image-20220417200538230

对,主界面就是一个黑乎乎的东西,这就是所谓的Shell了。在上面执行命令来控制Linux系统。

我提到的几个软件都用过,目前用的是一个叫MobaXterm的软件。它的全功能版应该是要付费的,我是在淘宝花几块钱买了个破解版,用360查一下没问题就开始用了(对安全要求严格的人不要学我,哈哈 :stuck_out_tongue_closed_eyes: )

我选择它的理由是:

  • 通过1个主密码来管理所有的服务器密码
  • ssh和sftp服务耦合在一起。在某些shell软件中是分开的,个人觉得不太方便。
  • 自动监测系统环境
  • 跟踪终端文件夹
  • 自动复制:当你用鼠标选择Shell里的某一段文本时,不需要通过Ctrl+Shift+C进行复制。

其实新手可以随便选一个用一下,以后熟悉了再比较多个,然后选择其中一个就行了。我个人觉得MobaXterm最好用

其它的就不过多地介绍了。师傅带进门,修行靠搜索引擎!

小结

关于Linux学习前的准备工作大概就是这些,是不是特别简单?其实Linux入门从来不是一件很难的事喔!

虽然好像要花点小钱,但这也是表示自己认真对待的一种象征吧!教学费又不是第一次了。况且不是还有苯苯在保驾护航嘛!:grinning:

基于Linux的知识体系既广且深,回味无穷。相信你如果步入正轨的话,就会有一种相见恨晚的感觉,就好像初恋一样! :laughing:

扩展阅读

---------------
完结,撒花!如果您点一下广告,可以养活苯苯😍😍😍

感谢ZGOCLOUD友情赞助 (ฅ´ω`ฅ) 本博客基于m2w创作。版权声明:除特殊说明,博客文章均为Bensz原创,依据CC BY-SA 4.0许可证进行授权,转载请附上出处链接及本声明。VIP内容严禁转载!由于可能会成为AI模型(如chatGPT)的训练样本,本博客禁止将AI自动生成内容作为文章上传(特别声明时除外)。如有需要,请至学习地图系统学习本博客的教程。加Telegram群可获得更多帮助喔! | 博客订阅:RSS | 广告招租请留言 | 博客VPS | 致谢渺软公益CDN |

评论

  1. wohaoe
    Windows Edge 110.0.1587.63
    1 年前
    2023-3-05 15:07:14

    学习到这里了,打个卡。下一站linux基础

    • 博主
      wohaoe
      Windows Edge 110.0.1587.63
      1 年前
      2023-3-05 16:11:49

      加油 (ฅ´ω`ฅ)

  2. Windows Edge 107.0.1418.62
    1 年前
    2022-12-06 22:51:28

    MobaXterm我有pj工具,最新版也可以pj,但汉化是个问题。MobaXterm太臃肿,百分之80的功能用不到,我现在主要用xshell跟xftp,现在都免费了,自己做了去广告弹窗

    • 博主
      Windows Edge 107.0.1418.62
      1 年前
      2022-12-06 22:52:18

      我直接买的破解版也是汉化的 (~ ̄▽ ̄)~

  3. leoneoo
    Windows Edge 106.0.1370.37
    2 年前
    2022-10-11 22:00:34

    对于本人来说,万事俱备只欠东风–学习的可持续性

    • 博主
      leoneoo
      Windows Edge 106.0.1370.37
      2 年前
      2022-10-11 22:04:18

      坚持就是胜利,加油喔!

  4. sgx
    Windows Chrome 102.0.0.0
    2 年前
    2022-6-18 17:03:23

    大佬,您给的vps服务器的链接里可以选操作系统,是要选ubuntu还是默认的almalinux呢?我想用它来做rss,家里有一个闲置的树莓派3b,弄rss够用吗?

    • 博主
      sgx
      Windows Chrome 102.0.0.0
      2 年前
      2022-6-18 17:06:01

      一般先Ubuntu就可以啦! 你弄RSS,是指你想安装RSShub TTRSS之类的吗?那完全没问题。。。我装了20多个容器 都还有很多剩余的。性能完全够用!!ヾ(≧∇≦*)ゝ

  5. cye
    Macintosh Chrome 102.0.5005.61
    2 年前
    2022-6-05 4:00:44

    很好的介绍。留个言表扬一下哈哈哈。有的表情没有正确显示,得脑补一下?

    • 博主
      cye
      iPhone Chrome 102.0.5005.87
      2 年前
      2022-6-05 7:08:10

      可能是编辑器的问题,我也发现了,所以在后面的文章都很少使用表情了♪(๑ᴖ◡ᴖ๑)♪

    • 博主
      cye
      iPhone Chrome 102.0.5005.87
      2 年前
      2022-6-05 7:14:02

      忽然发现个问题…你小子大半夜的不睡觉的嘛

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇