如何在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
这是一个有用的文章,帮助我设置它。