linux - instalacion - node js terminal
¿Cómo puedo iniciar automáticamente una aplicación node.js en Amazon Linux AMI on aws? (7)
He estado usando forever en AWS y hace un buen trabajo. Instalar usando
[sudo] npm install forever -g
Para agregar un uso de la aplicación
forever start path_to_application
y para detener el uso de la aplicación
forever stop path_to_application
This es un artículo útil que me ayudó a configurarlo.
¿Existe una breve guía para explicar cómo iniciar una aplicación cuando la instancia se inicia y se ejecuta? Si fuera uno de los servicios instalados a través de yum
entonces creo que puedo usar /sbin/chkconfig
para agregarlo al servicio. (Para asegurarse, ¿es correcto?)
Sin embargo, solo quiero ejecutar el programa que no fue instalado a través de yum
. Para ejecutar el programa node.js, tendré que ejecutar el script sudo node app.js
en el directorio personal cada vez que se inicie el sistema.
No estoy acostumbrado a Amazon Linux AMI, así que no me cuesta encontrar la manera "correcta" de ejecutar un script automáticamente en cada arranque.
¿Hay una manera elegante de hacer esto?
Puede crear un script que puede iniciar y detener su aplicación y colocarla en /etc/init.d; haga que el script se adhiera a las convenciones de chkconfig (abajo), y luego use chkconfig para configurarlo para que comience cuando se inicien otros servicios.
Puede elegir un script existente de /etc/init.d para usarlo como ejemplo; este artículo describe los requisitos, que son básicamente:
- Un script ejecutable que identifica el shell necesario (es decir, #! / Bin / bash)
- Un comentario de la forma # chkconfig: donde a menudo es 345, startprio indica dónde en el orden de los servicios para comenzar, y stopprio es donde en el orden de los servicios para detenerse. Generalmente selecciono un servicio similar que ya existe y lo uso como una guía para estos valores (es decir, si tiene un servicio relacionado con la web, comience en los mismos niveles que httpd, con prioridades de inicio y detención similares).
Una vez que su script está configurado, puede usar
chkconfig --add yourscript
chkconfig yourscript on
y deberías ser bueno para ir. (Algunas distribuciones pueden requerir que haga un enlace simbólico manual al script en /etc/init.d/rc.d, pero creo que su distribución de AWS lo hará por usted cuando active el script.
Puede usar el servicio para siempre para aprovisionar la secuencia de comandos de nodo como un servicio y comenzar automáticamente durante la inicialización. Los siguientes comandos harán lo necesario,
npm install -g forever-service
forever-service install test
Esto aprovisionará app.js en el directorio actual como un servicio por siempre. El servicio se reiniciará automáticamente cada vez que se reinicie el sistema. También cuando se detiene, intentará una parada elegante. Este script también logrotate script logrotate .
URL de Github: https://github.com/zapty/forever-service
A partir de ahora, el servicio para siempre admite Amazon Linux, CentOS, compatibilidad con Redhat para otras distribuciones de Linux, Mac y Windows están en funcionamiento.
NOTA: soy el autor del servicio para siempre.
Puedes usar la screen
. Ejecute crontab -e
y agregue esta línea:
@reboot screen -d -m bash -c "cd /home/user/yourapp/; node app"
Una forma es crear un trabajo advenedizo. De esta forma, su aplicación se iniciará una vez que Linux se cargue, se reiniciará automáticamente si se bloquea y podrá iniciar / detener / reiniciarla mediante sudo start yourapp
/ sudo stop yourapp
/ sudo restart yourapp
.
Aquí están los pasos iniciales:
1) Instale la utilidad advenediza (puede preinstalarse si usa una AMI Amazon Linux estándar):
sudo yum install upstart
Para Ubuntu:
sudo apt-get install upstart
2) Cree una secuencia de comandos upstart para su aplicación de nodo:
en /etc/init
agrega el archivo yourappname.conf
con las siguientes líneas de código:
#!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) inicia tu aplicación por sudo start yourappname
Una solución rápida para usted sería iniciar su aplicación desde /etc/rc.local
; solo agrega tu comando allí.
Pero si quiere ir de la manera más elegante, tendrá que empaquetar su aplicación en un archivo rpm, tener un script de inicio que se encuentre en /etc/rc.d
para que pueda usar chkconfig
en su aplicación, luego instale las rpm en tu instancia.
Tal vez this o this ayuda. (o simplemente google para "crear paquetes rpm")
Use Elastic Beanstalk :) Proporciona soporte para escalamiento automático, terminación SSL, implementaciones azul / verde, etc.