Linux服务--创建个人云服务器的分步指南
一个广为人知的事实是,Linux服务器显然可以运行多年而不需要重新启动。由于这个原因,Linux是服务器相关工作和任务中使用最多的平台。
几十年来,Linux一直在StackOverflow调查的最常用平台列表中处于领先地位,直到Windows推出WSL(Windows Subsystem for Linux)才超越了Linux。
这只是策划这篇文章的一个简单原因,它有助于向你介绍Linux的电源使用世界。自动化是Linux实现的另一个关键功能,在这篇文章中,我们将谈及以下内容
- 为什么选择Linux?
- 什么是Linux服务?
- Systemctl和其他基本的服务管理命令
- 创建一个NodeJS服务
- 服务的创建
为什么选择Linux?
正如开头所提到的,Linux拥有各种特性,使其在服务器和服务提供方面脱颖而出。根据w3techs的调查,超过77%的在线服务器运行Linux,90%的公共云运行Linux,几乎所有最好的云主机都使用它,全球前100万台服务器中有96.3%运行在Linux上。
之所以能够这样,是因为以下几点。
- 稳定性:Linux可以运行很长时间而不需要重新启动。
- 安全性:这是Linux的一个特点,为什么防御性的安全专家和进攻性的各种方式都提供了通道。各种Linux发行版(distros)都是为了防御性的,而其他许多发行版则是为了进攻性的,还有一些则是结合了这两种能力。这是一个由Linux提供的安全策略,但没有其他平台。
- 开放源代码:这是Linux拥有大量个人和企业办公桌的流行原因之一。免费提供代码库以方便定制,这对平台的使用有更大的作用。
- 可访问性:Linux的代码库对每个人都是可用的,这使得用户可以创建最能解决他们问题的东西。创建特殊用途的操作系统的能力通过Linux成为可能。
- 终端:这是一个由Linux提供的特殊功能,用于与运行在它上面的服务进行交互。众所周知,许多服务器没有提供图形用户界面(GUI),由于这些原因,终端是与服务器互动的唯一手段。Linux终端包含SHELL,无论是Bourne Again Shell(BASH)、Bourne Shell(SH Shell)、Z shell(zsh)和CShell(tcsh或csh)。所有这些都提供了一个与服务交互的界面,以取代一般的图形用户界面(GUI)。
什么是Linux服务?
云服务是作为一种服务提供的,你知道为什么吗?因为它们是由服务器组成的。由Linux运行和管理的可用资源被称为服务。能够确保所安装程序的服务器正在运行,并自动遵循逻辑启动顺序,这些都是Linux中服务配置的行动的例子。
有时与资源互换的单元是一组由Linux管理和运行的进程。每个单元都被清楚地定义在一个叫做单元文件的文件中,该文件以其扩展名来称呼。
例如,filename.service单元将被称为service单元,filename.socket被称为socket单元,以此类推。所有这些单元都在Linux上一个非常独特的位置,叫做systemd里面的系统目录,可以在/etc/systemd/system 。
systemd。这是一个软件套件,为Linux操作系统提供了一个单元和组件列表。它容纳了所有的单元和服务配置。服务管理器和系统是init系统的主要组成部分。
该系统的PID(进程ID)始终为1,这使得它有权利成为开机后第一个运行的进程,并作为其他程序的进入点提供服务。要检查系统中是否有systemd,请运行下面的命令,你会得到一个整数2733 。
bash
pidof system
要检查进程结构和当前运行的进程树,请运行下面的命令。
bash
ptree -p
创建一个服务是非常简单的,但它需要运行和执行某个预定义的程序,在这种情况下,就是我们尚未建立的Node.js应用程序。这个应用程序将为我们的用户返回 "Hello World",他们将准备好向我们支付一百万美元来检查它)。
为了跟上进度,你可以创建你自己的程序,打算提供给你的用户,或者在GitHub上抓取我们的应用程序的源代码,这里。如果你从GitHub上下载或克隆该应用程序,请确保你已经安装了Node.js。
完成后,你可以通过在克隆的项目目录下打开终端并运行来测试该应用程序。
bash
node myhelloapp
这应该会产生这样的输出:<{message: “Hello, World!”}> 。如果你得到除此以外的任何东西,请按照错误信息进行修复,完成后再跟着做。
创建服务
接下来是创建一个服务来管理创建的应用程序。第一步:在/etc/systemd/system目录下创建一个名为myhelloapp的文件
bash
touch myhelloapp.service
第2步:将以下内容复制粘贴到文件中。
service
[Unit]
Description=My Million Dollar App
Documentation=https://github.com/Taiwrash/myhelloapp/readMe.md
[Service]
Type=notify
ExecStart=
ExecStartPre=
ExecStartPost
Restart=always
[Install]
WantedBy=multi-user.target
这到底是什么,是什么?
服务单元总是被分成几个部分,每个部分总是住在一个方括号里。在这个例子中,我们有三个部分,单位、服务和安装部分。首先,什么是单位部分。
单位部分
这是定义我们正在创建的服务的描述和文档的地方。在这个单元部分下还有其他声明,如After、BlindsTo、After、Wants、Requires等。它们就像HTML中的元标签。
服务部分
这个服务部分包含了为我们的服务启动和运行所需的命令。它总是包含ExecStart, Type, ExecStartPre, ExecStartPre, Restart, StartLimitInterval等等。
安装部分
这由允许服务在完成启动后立即运行的命令组成。
第三步:执行启动服务的命令。 i. 将应用程序的模式改为可执行,导航到应用程序目录并运行。
bash
chmod a+x myhelloapp.js
ii.为了通知内核一个新的服务已经被创建,运行。
bash
sytemctl daemon-reload
iii.要启动该服务,请运行。
bash
sytemctl start myhelloapp
iv.检查状态 运行:
bash
sytemctl status myhelloapp
v.要停止服务运行。
bash
sytemctl stop myhelloapp
vi.配置它在开机时启动运行。
bash
systemctl enable myhelloapp
vii.要配置成在启动时不启动。
bash
systemctl disable myhelloapp
结论
完成这些后,我们就可以启动你的系统了,你的应用服务器将自动重启并运行,无需手动重启服务器。你现在已经在你的系统上运行该服务了。
接下来,我们将通过如何使它在互联网上可用,并开始提供类似docker的服务。