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:
Amennyiben regisztrálunk a Keymetrics oldalon, kapunk egy webes felületet sok szép grafikonnal, ezt 2 szerverig ingyenesen használhatjuk.
É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:
`sh
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:
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:
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 moduloknpm update
, már telepített node modulok frissítésesudo gulp deploy --dest="/alkalmazas/helye/ahonnan/futni/fog"
, a fentebb említett Gulp deploy taskgulp 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:
A Node.js alkalmazás élőben megtekinthető: tools.gyengus.hu.
A forrása fent van GitHubon.