官术网_书友最值得收藏!

Turning our simple code into a service using upstart

Since we started the node application manually in the Terminal, closing the SSH connection or hitting Ctrl + C on the keyboard will stop the node process, and therefore our Hello World application will not work anymore. Amazon Linux, unlike a standard Red Hat-based distribution, comes with a system called upstart.

This is fairly easy to use and provides a couple of extra features that traditional System-V bootup scripts don't have, such as the ability to respawn a process that died unexpectedly. To add an upstart configuration, you need to create a file inside /etc/init on the EC2 instance.

Here is the code to insert it in /etc/init/helloworld.conf:

description "Hello world Daemon"

# Start when the system is ready to do networking. Start on started elastic-network-interfaces

# Stop when the system is on its way down. Stop on shutdown

respawn script
exec su --session-command="/usr/bin/node /home/ec2-user/helloworld.js" ec2-user
end script
Why start on elastic network interfaces? If you are familiar with upstart outside of AWS, you might have used start on run level [345]. In AWS, t he problem with that is that your network comes from Elastic Network Interface ( ENI ), and if your application starts before this service, it might not be able to connect to the network correctly.
[ec2-user@ip-172-31-22-52 ~]$ 
sudo wget https://raw.githubusercontent.com/yogeshraheja/Effective-DevOps-with-AWS/master/Chapter02/helloworld.conf -O /etc/init/helloworld.conf
--2018-08-19 13:09:39-- https://raw.githubusercontent.com/yogeshraheja/Effective-DevOps-with-AWS/master/Chapter02/helloworld.conf
Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 151.101.200.133
Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|151.101.200.133|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 301 [text/plain]
Saving to: ‘/etc/init/helloworld.conf’

/etc/init/helloworld.conf 100%[=====================================================================================>] 301 --.-KB/s in 0s

2018-08-19 13:09:39 (54.0 MB/s) - ‘/etc/init/helloworld.conf’ saved [301/301]


[ec2-user@ip-172-31-22-52 ~]$

We can now simply start our application, as follows:

[ec2-user@ip-172-31-22-52 ~]$ sudo start helloworld
helloworld start/running, process 2872
[ec2-user@ip-172-31-22-52 ~]$

As expected, http://your-public-dns-name:3000 still works, and this time we can safely close our SSH connection.

主站蜘蛛池模板: 北川| 衡水市| 唐海县| 四子王旗| 林芝县| 定陶县| 余庆县| 贺兰县| 博乐市| 肇东市| 民权县| 深水埗区| 尼勒克县| 汝阳县| 砀山县| 遂平县| 扶沟县| 呼伦贝尔市| 湛江市| 邵武市| 石家庄市| 连山| 福贡县| 明星| 禹城市| 五峰| 通辽市| 新田县| 玉屏| 北辰区| 黄石市| 沂源县| 龙海市| 虎林市| 鄂托克旗| 嘉荫县| 凌源市| 平舆县| 清镇市| 从江县| 涪陵区|