如何在服务器启动时运行nginx和Node.js?
为了使用AWS Auto Scaling启动亚马逊EC2,我必须直接连接到EC2来运行nginx和Node.js。
Auto Scaling可以做到这一点吗?
在亚马逊EC2中,我想通过Auto Scaling在EC2启动时使用Node.js运行nginx。
EC2被设置为使用图像的弹性伸缩组。我想运行由Auto Scaling启动的EC2 Node.js应用程序和nginx,以及EC2服务器启动。
对于nginx,我可以使用chkconfig
运行可执行文件,但是Node.js应用程序将以pm2身份运行,使用package.json编写的代码。
如何在EC2启动的情况下运行nginx和Node.js,并让新的EC2 --启动时使用Auto Scaling --正确响应?
评论回复:
我不想使用“node.js app.js”命令运行节点。
我想通过package.json (脚本)运行node.js
例如。
"start": "NODE_ENV=production PORT=3000 pm2 start server.js -i -1"
我该怎么做呢?
您的建议是使用linux服务器初始化脚本文件。
但是,我想设置NODE_ENV和端口,并使用pm2命令。
解决方案
我解决了这个问题。
当Linux启动时,我尝试使用脚本文件自动运行node.js。
我创建了脚本文件,并使shell脚本在linux启动后自动运行,但这似乎不是一个好主意。
或者,可以使用pm2启动和ecosystem.config.js来灵活地解决问题。
感谢您的回复。
发布于 2019-03-25 15:02:19
这与自动缩放无关。它通常与自动缩放器启动EC2实例时使用的EC2 AMI (Amazon Machine Image)有关,也可能与您在启动时传递给实例的“用户元数据”有关。只有这两件事会影响EC2实例在启动时和之后执行的操作,直到它开始与外部世界通信为止。
因此,您需要做的是创建一个AMI,并对其进行设置,以便在从该AMI启动EC2实例时启动正确的内容。您要做的是将想要使用的AMI作为起点,将该AMI启动到一个实例中,进行所需的更改和安装,然后保存一个新的AMI。然后更改您的自动伸缩组以使用新的AMI启动新的实例。
你也可以在你的“用户元数据”中发送一个脚本来启动一些东西,但这很少是你想要做的。
您也可以使用某种启动后配置程序,如Chef、Ansible或Chef Habitat。如果你是,那就是你设置所有这些东西的地方。您会希望该系统完成您所描述的工作。但是如果你这样做了,我之前说的仍然适用。要实现这一点,您通常还需要构建一个自定义AMI,其中已经内置了部分供应系统,以便该系统可以连接到该AMI并对其进行供应。这些系统也可以从通用AMI开始。这取决于系统。
https://stackoverflow.com/questions/55332508
复制相似问题