如何在aws上的Amazon Linux AMI中自动启动node.js应用程序?

有一个简短的指南来解释如何在实例启动和运行时启动应用程序? 如果是通过yum安装的服务之一,那么我想我可以使用/sbin/chkconfig将其添加到服务。 (为了确定,这是正确的?)

不过,我只是想运行没有通过yum安装的程序。 要运行node.js程序,每当系统启动时,我将不得不在主目录中运行脚本sudo node app.js

我不习惯亚马逊Linux AMI,所以我没有find“正确”的方法来在每次启动时自动运行一些脚本。

有没有一个优雅的方式来做到这一点?

一种方法是创造一个新贵的工作。 这样,一旦Linux加载,你的应用程序将启动,如果崩溃,将自动重启,你可以通过启动/停止/重新启动它sudo start yourapp / sudo stop yourapp / sudo restart yourapp

这是开始的步骤:

1)安装新创公用程序(如果您使用标准的Amazon Linux AMI,可以预先安装):

 sudo yum install upstart 

对于Ubuntu:

 sudo apt-get install upstart 

2)为您的节点应用程序创build新贵的脚本:

/etc/init添加以下代码行的文件yourappname.conf

 #!upstart description "your app name" start on started mountall stop on shutdown # Automatically Respawn: respawn respawn limit 99 5 env NODE_ENV=development # Warning: this runs node as root user, which is a security risk # in many scenarios, but upstart-ing a process as a non-root user # is outside the scope of this question exec node /path_to_your_app/app.js >> /var/log/yourappname.log 2>&1 

3)启动你的应用程序通过sudo start yourappname

您可以使用forever-service将节点脚本configuration为服务,并在启动过程中自动启动。 下面的命令将做必要的,

 npm install -g forever-service forever-service install test 

这将永久地将当前目录中的app.js作为服务提供。 每次系统重新启动时,服务将自动重新启动。 当停下来,它会尝试一个优雅的停止。 这个脚本也提供了logrotate脚本。

Githuburl: https : //github.com/zapty/forever-service

截至目前永久服务支持亚马逊Linux,CentOS,红帽支持其他Linux发行版,Mac和Windows正在工作..

注:我是永远服务的作者。

快速解决scheme是从/etc/rc.local启动你的应用程序; 只需在那里添加你的命令。

但是,如果你想要优雅的方式,你将不得不打包你的应用程序在rpm文件,有一个启动脚本进入/etc/rc.d以便您可以在您的应用程序上使用chkconfig ,然后安装rpm在你的实例上。

也许这个或这个帮助。 (或只是谷歌“创buildrpm包”)

您可以创build一个脚本,可以启动和停止您的应用程序,并将其放置在/etc/init.d; 使脚本遵循chkconfig的约定(如下),然后使用chkconfig将其设置为在其他服务启动时启动。

您可以从/etc/init.d中select一个现有的脚本作为示例; 本文描述的要求,基本上是:

  • 标识所需shell的可执行脚本(即#!/ bin / bash)
  • 注释的forms#chkconfig:其中345是常用的,startprio表示服务启动的顺序,而stopprio是服务停止的顺序。 我通常会select一个已经存在的类似服务,并将其用作这些值的指导(例如,如果您有一个与Web相关的服务,则以与httpd相同的级别启动,具有类似的启动和停止优先级)。

一旦你的脚本设置好了,你可以使用

  chkconfig --add yourscript chkconfig yourscript on 

你应该很好走。 (有些发行版可能需要手动将脚本符号链接到/etc/init.d/rc.d,但是我相信当您启用脚本时,您的AWS发行版将为您执行此操作。

你可以使用screen 。 运行crontab -e并添加以下行:

 @reboot screen -d -m bash -c "cd /home/user/yourapp/; node app" 

使用Elastic Beanstalk :)提供对自动缩放,SSL终止,蓝/绿部署等的支持

一直在AWS上使用,它做得很好。 安装使用

  [sudo] npm install forever -g 

添加应用程序使用

  forever start path_to_application 

并停止应用程序的使用

  forever stop path_to_application 

这是一个有用的文章,帮助我设置它。