Node.js alkalmazás automatikus telepítése

Az előző részben (Node.js web alkalmazás Express keretrendszerrel) említettem a tools.gyengus.hu nevű Node.js web alkalmazásomat. Ebben a cikkben rajta keresztül mutatom meg a PM2-t és, hogy hogyan oldottam meg az automatikus deployt.

PM2

A PM2 egy process manager Node.js alkalmazásokhoz. Segítségével monitorozhatjuk is az alkalmazást. A process listát elmenthetjük, így a szerver következő indulásakor automatikusan elindítja az általa kezelt alkalmazásokat.
Az alkalmazásokhoz szükséges konfigurációt megadhatjuk parancssori paraméterként is, vagy json fájlban. Pl, így néz ki a tools.gyengus.hu konfigurációja:

Konzolon belépve a pm2 list parancs segítségével kérhetjük le a futó alkalmazások listáját:
pm2_list_screenshot

Amennyiben regisztrálunk a Keymetrics oldalon, kapunk egy webes felületet sok szép grafikonnal, ezt 2 szerverig ingyenesen használhatjuk.
keymetrics_screenshot
Érdemes végigkattintgatni a felületet és nézegetni az alsó tutorial fület. Ha a Node.js alkalmazásunkban használjuk a PMX modult, akkor nagyon sok információt láthatunk a webes felületen.

Gulp taskok

A deploy funkcióhoz Gulp taskokat hoztam létre.
A deploy task előfeltétele a build task, tehát előbb azt és annak függőségeit fogja elindítani a Gulp. A deploy task annyit csinál, hogy rsync-el átmásolja a Node.js alkalmazás fájljait a paraméterül kapott könyvtárba, majd PM2 használatát feltételezve újraindítja az alkalmazást és – a biztonság kedvéért – elmenti a process listát.

Készítettem egy másik taskot is ami ellenőrzi, hogy fut-e a Node.js alkalmazás. A configurációs fájlból beolvassa a portot, majd http.get-el lekéri az alkalmazás kezdőoldalát. Amennyiben a válasz státusz kódja 200-as, minden oké, különben hibát dob. Ezt a Jenkins indítja a deploy folyamat zárásaként.

Jenkins

A Jenkins egy nyílt forráskódú CI (continuous integration) szerver.
Az alábbi parancsokkal lehet telepíteni Debian alatt:

wget -q -O – https://jenkins-ci.org/debian/jenkins-ci.org.key | sudo apt-key add –
sudo sh -c ‘echo deb http://pkg.jenkins-ci.org/debian binary/ > /etc/apt/sources.list.d/jenkins.list’
sudo apt-get update
sudo apt-get install jenkins

Bővebb információt, a Jenkins Wiki-ben találsz.

Telepítés után a Jenkins webes felülete az adott szerver 8080-as portján lesz elérhető.
Fel kell telepíteni a GIT plugint, mivel a Node.js alkalmazás forrása GitHub repositoryban van. Tehát: Jenkins Kezelése -> Kiegészítők kezelése -> Elérhető fül, itt kell bepipálni a GIT plugint, majd a “Telepítés újraindítás nélkül” gombra kattintva települ.
A Jenkins főoldalán hozzunk létre egy új elemet:
jenkins_new_item_screenshot
Mint látható a fenti képen adni kell a neki egy nevet és a “Freestyle project”-et választottam ki.
A következő képen láthatóak a projekt beállításai:
jenkins_item_screenshot
Engedélyeztem a régi buildek törlését, csak az utolsó 7 marad meg.
A verziókezelő rendszernél ki kell választani a Git-et. Meg kell adni a Node.js alkalmazás repositoryjának linkjét. A “Poll SCM” beállítást bepipáljuk, az ütemezéshez “H/5 * * * *“-ot írva, a Jenkins 5 percenként fogja ellenőrizni, hogy módosultak-e a fájlok. Amennyiben volt commit, elindítja a build folyamatot, ami a következőképpen néz ki jelen esetben:

  • npm install, hogy feltelepüljenek a szükséges node modulok
  • npm update, már telepített node modulok frissítése
  • sudo gulp deploy --dest="/alkalmazas/helye/ahonnan/futni/fog", a fentebb említett Gulp deploy task
  • gulp check, ellenőrzi, hogy elindult-e a Node.js alkalmazás

A build folyamatot kimenetét élőben vagy utólag is meg lehet nézni:
jenkins_console_output_screenshot

A Node.js alkalmazás élőben megtekinthető: tools.gyengus.hu.
A forrása fent van GitHubon.

Kategória: Programozás Címke: , , , ,