Requisits previs
Crea una partició d'intercanvi
Instal·leu el fil
Instal·leu la vostra aplicació Node.js
Instal·leu Process Manager 2
Afegiu la vostra sol·licitud com a procés
Inicieu la vostra aplicació automàticament a l'arrencada
Prova
Implementació de noves versions de l'aplicació
Exemple d'ús
Les aplicacions Node.js són populars per la seva capacitat d'escalar. L'execució de diversos processos simultàniament en diversos servidors produeix una menor latència i un major temps de funcionament. Quan gestioneu diversos servidors, és més fàcil que les aplicacions Node.js es reiniciin automàticament si es bloquegen. Aquest tutorial us mostrarà com configurar ràpidament la persistència de l'aplicació des d'una instància en blanc d'Ubuntu 16.04.
Requisits previs
- Creeu una instància Vultr de qualsevol mida amb Ubuntu 16.04 LTS x64.
- Si no sou l'usuari root, executeu
sudo -si introduïu la vostra contrasenya. Es requereix accés arrel per modificar el fitxer d'inici de manera que el gestor de processos s'iniciï a l'arrencada.
- Assegureu-vos que Node.js estigui instal·lat a la instància i que la versió de Node.js sigui 8.9.3 LTS o posterior, que és necessària perquè el gestor de persistència funcioni correctament. Utilitzeu-lo
node -vper comprovar la versió instal·lada. Si Node.js no té la versió correcta, les ordres següents l'instal·laran.
Instal·leu Node.js.
$ sudo apt-get update
$ curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
$ sudo apt-get install -y nodejs
Crea una partició d'intercanvi
Aquest pas és opcional, però recomanat per a la instal·lació. Les particions d'intercanvi són parts del disc dur que es dediquen a ajudar a complementar la memòria RAM. En instàncies Vultr més petites, com ara la instància de 512 MB de RAM, crear una partició d'intercanvi seria beneficiós per al rendiment. Per a una versió automatitzada del tutorial d'intercanvi, utilitzeu les ordres següents.
$ git clone https://github.com/teamtofu/server-tools.git tools
$ bash ./tools/swap.sh
En termes generals, l'ús d'intercanvi no seria necessari en casos amb 4 GB de RAM o més quan es configuren aplicacions persistents, tot i que pot millorar el rendiment de les aplicacions. La memòria RAM és més sensible que l'intercanvi, de manera que les instàncies amb més memòria RAM tendiran a donar millors resultats independentment de l'intercanvi.
Instal·leu el fil
Yarn és un gestor de paquets fàcil d'utilitzar de Facebook per als paquets Node.js. És més ràpid que NPM i també és determinista, cosa que és especialment útil quan es desplega diversos servidors.
$ curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
$ echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
$ sudo apt-get update && sudo apt-get install yarn
Tanmateix, es pot utilitzar NPM en lloc de Yarn i té ordres comparables a totes les d'aquest tutorial.
Instal·leu la vostra aplicació Node.js
Si la vostra aplicació està allotjada en un repositori git, cloneu-la i utilitzeu yarn install. La vostra aplicació hauria de tenir un fitxer d'entrada del servidor, normalment server.jso index.js, que s'utilitzarà en els passos següents.
Instal·leu Process Manager 2
Process Manager 2 és el paquet que reiniciarà automàticament l'aplicació. Process Manager 2 és molt popular i és utilitzat per Microsoft, PayPal i Intuit, de manera que és segur i fiable.
$ yarn global add pm2
Afegiu la vostra sol·licitud com a procés
L'aplicació es dimoniarà (executarà en segon pla) i es reiniciarà automàticament amb l'ordre d'inici.
$ pm2 start [path to your entry.js] -i max
Si voleu llançar el nombre màxim de processos automàticament, passeu l' -i maxargument. Si l'únic ús d'aquesta instància Vultr és servir l'aplicació, es recomana això. Per a les instàncies de Vultr amb més d'una CPU, es llançaran diversos processos i Process Manager 2 actuarà com a equilibrador de càrrega per a tots aquests processos individuals.
Inicieu automàticament la vostra aplicació a l'arrencada
Després d'iniciar l'aplicació, deseu la configuració de l'aplicació. A continuació, executeu l'ordre d'inici per executar automàticament Process Manager 2 en segon pla quan s'iniciï Ubuntu. Per a Ubuntu 16.04, Process Manager 2 s'unirà a systemd.
$ pm2 save
$ pm2 startup
Ara, si la vostra aplicació Node.js es bloqueja a causa d'un error, es reiniciarà, i si Ubuntu es bloqueja per qualsevol motiu, el procés es reiniciarà automàticament amb Ubuntu. Els processos es poden reiniciar amb pm2 gracefulReload alli Process Manager 2 amb pm2 update. Per evitar que Process Manager 2 s'iniciï a l'arrencada, executeu pm2 unstartup.
Prova
Proveu d'escriure rebooti comprovar si la vostra aplicació es publica després d'arrencar Ubuntu. Si l'aplicació és per a la web i es publica a través del port 80, curl http://localhost/mostrarà l'HTML de la pàgina d'inici. En el cas que no funcioni, l'ordre pm2 statusmostrarà els processos en execució i es pot tornar a emetre l'ordre d'inici.
Implementació de noves versions de l'aplicació
Si l'aplicació s'actualitza, com per exemple mitjançant un repositori git, s'ha d'emetre una ordre per actualitzar els processos de l'aplicació en execució.
$ pm2 update
Exemple d'ús
Parse Server , una plataforma popular de codi obert com a servei, serveix com a backend per a una aplicació. El backend pot fallar a causa d'errors en el codi o el volum de sol·licituds, però l'aplicació no experimentarà temps d'inactivitat perquè els altres servidors (i/o processos) continuen executant-se i el procés Parse Server es reinicia ràpidament.