2KB项目,专业的源码交易网站 帮助 收藏 每日签到

使用 systemd 发布 Node.js 应用

  • 时间:2019-01-23 18:45 编辑:2KB 来源:2KB.COM 阅读:601
  • 扫一扫,手机访问
  • 分享
摘要:
systemd Node.js 英文原文:Deploying Node.js with systemd

2013年1月16日,我在“比利时node.js用户组” 讲过一个“用systemd部署Node.js”的话题。 下面是我所用幻灯片的注解版:

如果你更喜欢PDF(没有笔记),可以在此下载。

简介

Deploying Node.js with systemd. You can have the magic of the cloud too!

这次演讲的主题是“我们如何部署Node.js”。通过任一广泛使用的部署平台(如HerokuNodeJitsuJoyent Cloud),你都可以很快就得到一个非常高级和流行的平台。但如果你更愿意在自己的基础设施上去运行,我将会告诉你怎样得到那样的魔力。


nodejs-systemd.002

版本简介: 我所能做的只有一点。 版本可以读取页面的时间

nodejs-systemd.003

Flow Pilots 其实是一下两个企业中的一员:

  1. 企业客户开发实施移动应用完全围绕客户的需求
  2. 产品重用规模

这些都要求我们后端开发人员使用Node.js

nodejs-systemd.004

接下来,我们先看一下怎么样在Flow Pilots上部署Node.js,你将会发现为Nodo.js安装设定一个现代运行时间环境是容易的。所有这些都是在Linux上运行。这些都是相似的可适用于你自己的服务器或者你想在云端什么时候在某个地方运行它。

在你的服务器上安装Node.js

部署Node.js是有点复杂的。在我们深入以前,先看一下我们喜欢的编程语言。

nodejs-systemd.005

显而易见,它就是PHP,;-),我们曾今用的非常好,作为一个PHP程序员的生活中的每一天是相当的简单的,仅仅包括:写代码,上传和更新,再也没有其他事了。对于系统管理员来说也是如此,仅仅需要安装PHP模块就完成了,没有必要再一次接触服务器。

Node.js是不同的,它确实需要你有一个持续的运行Node过程。这就意味着你必须做:a)启动它,b)确保它持续运行。实现以上步骤的好处是我们可以实现一些高级的东西如websockets 或长时间运行的事件。这也是大家喜欢Node.js的原因之一。

nodejs-systemd.006

 

随便的在你的服务器上开始Node将会促使灾难发生,如果它崩溃(在某一时刻,它将会崩溃,node代码是完美的),你的服务将会被internet清除。

你可以使用工具如 mon ( TJ Holowaychuk开发) or forever. 这些工具可以在需要的时候使你的服务重新使用。

服务器重启发生了什么事情?谁启动了进程并进行监视管理?

几乎所有的linux发行版本都内置了init系统(初始化系统)。我们将深入了解进程管理 如何管理我们的node

nodejs-systemd.007

至于我们对systemd(Fedora)的分类,Systemdlinux一个现代服务管理器摒弃了sysvinit遗留的一些做法使linux成为流程管理方面前沿。当然它也存在着很多争议,主要因为很多开源社区的人们害怕改变。不过,我们不要为这个烦恼,systemd那么棒,如果不好好利用它那就显得太愚蠢了。

如果情况可能会有所不同你可以把它分类为其他任何类型都可以。

让我们看一下如何使用 Systemd 来启动和监控一个 Node.js 守护进程。首先,你需要写一个定义了你的服务的 Systemd 的 配置文件(systemd unit file):

nodejs-systemd.008

最开始的两个指令分别是:ExecStart,定义了将要运行什么(这里我们定义了完整的路径名,因为我们在同一平台下会有多个版本),Restart 定义了这个服务运行的策略。在这里:确认服务以 always 策略来运行。

在 Service 这节的其它行定义了包括日志、权限和环境等变量。我推荐大家在你所有的应用中都增加一个配置:变量名是: NODE_ENV,值是:production。这就像在 express.js 里用 caching 一样. 我们在后面也用到这个配置。

Install 这节定义了这个单元文件什么时候以怎样的方式被激活。在本例中,将随着系统启动而启动。

启用并启动服务,如下:

nodejs-systemd.009

你仅需在第一次使用时启动它,以后就会随着系统启动而启动(这就是我们为什么在配置文件里配置 install 这段的原因)。你可以通过使用 status 命令来验证你的应用的运行状态。如果你 kill 这个服务,这个服务将会由 systemd 来启动。 nodejs-systemd.010

 

注意上图里的 PID (进程 ID) 的改变。

就这样了。Systemd 现在正在运行并监控着我们的守护进程。现在,还有更好的事情我们可以做。

Socket 激活

nodejs-systemd.012

记得在 Flow Pilots 上,有两种不同类型的应用吗?作为产品的后端应用,非常常见

但作为客户端后端,那就是一种完全不同的情况:某些应用(及其后端应用)仅在一些特定的事件发生期间才会使用,这些特定的事件,可能一年只有几天会出现。其它的时间,我们都可以关掉这些应用。

本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接。 2KB翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。


2KB项目(www.2kb.com,源码交易平台),提供担保交易、源码交易、虚拟商品、在家创业、在线创业、任务交易、网站设计、软件设计、网络兼职、站长交易、域名交易、链接买卖、网站交易、广告买卖、站长培训、建站美工等服务

  • 全部评论(0)
资讯详情页最新发布上方横幅
最新发布的资讯信息
【计算机/互联网|】Nginx出现502错误(2020-01-20 21:02)
【计算机/互联网|】网站运营全智能软手V0.1版发布(2020-01-20 12:16)
【计算机/互联网|】淘宝这是怎么了?(2020-01-19 19:15)
【行业动态|】谷歌关闭小米智能摄像头,因为窃听器显示了陌生人家中的照片(2020-01-15 09:42)
【行业动态|】据报道谷歌新闻终止了数字杂志,退还主动订阅(2020-01-15 09:39)
【行业动态|】康佳将OLED电视带到美国与LG和索尼竞争(2020-01-15 09:38)
【行业动态|】2020年最佳AV接收机(2020-01-15 09:35)
【行业动态|】2020年最佳流媒体设备:Roku,Apple TV,Firebar,Chromecast等(2020-01-15 09:31)
【行业动态|】CES 2020预览:更多的流媒体服务和订阅即将到来(2020-01-08 21:41)
【行业动态|】从埃隆·马斯克到杰夫·贝佐斯,这30位人物定义了2010年代(2020-01-01 15:14)
联系我们

Q Q: 7090832

电话:400-0011-990

邮箱:7090832@qq.com

时间:9:00-23:00

联系客服
商家入住 服务咨询 投拆建议 联系客服
0577-67068160
手机版

扫一扫进手机版
返回顶部