Logo agencije

Implementacija ("Deployment") PayloadCMS aplikacije na CloudPanel

Predviđeno Vrijeme: 45-60 minuta
Zadnje Ažurirano: Prosinac 2024

Uvod

PayloadCMS je moćan "headless CMS" koji developerima pruža potrebnu fleksibilnost, istovremeno osiguravajući izvrsno korisničko iskustvo za urednike sadržaja. U ovom vodiču proći ćemo kroz proces implementacije PayloadCMS aplikacije na CloudPanel, osiguravajući da vaš sustav za upravljanje sadržajem bude siguran, skalabilan i pravilno konfiguriran.

Preduvjeti

Prije početka, provjerite imate li:

  • A VPS running Ubuntu (22.04 or 24.04) or Debian (11 or 12) – other versions haven’t been tested, but should also work fine
  • Osnovno poznavanje Linuxa i rada s komandnom linijom
  • PayloadCMS projekt spreman za implementaciju (Ovaj vodič koristi Payload v3.0)
  • Instaliran Git
  • Node.js (Preporučena verzija 20.x ili novija)

Spremni? Onda krenimo!

Korak 1: Kreiranje CloudPanel Stranice

Prije nego što počnemo s implementacijom našeg projekta, moramo kreirati CloudPanel stranicu, koja će automatski kreirati SSH korisnika. Zatim ćemo koristiti tog korisnika za SSH pristup našem VPS-u i izvršavanje naredbi potrebnih za implementaciju naše aplikacije.

  1. Prijavite se u vašu CloudPanel nadzornu ploču
  2. Kreirajte novu stranicu:
    • Kliknite "Sites" → "Add Site" (ili ekvivalent istog na vašem jeziku)
    • Odaberite "Create a Node.js Site"
    • Unesite naziv vaše domene i port na kojem će aplikacija raditi (zadano, PayloadCMS aplikacija radi na portu 3000)
    • Odaberite preferiranu verziju Node.js-a (preporučena verzija 20 ili novija)
    • Zapamtite SSH lozinku za novog korisnika

Korak 2: Konfiguracija Baze Podataka

Ako ste upoznati s CloudPanelom, znate da postoje 2 opcije za upravljač baze podataka: MySQL i MariaDB. Ovo je dovoljno za većinu aplikacija, posebno WordPress, jer nam omogućuje kreiranje baza podataka izravno iz sučelja panela.

Nažalost, PayloadCMS trenutno podržava samo MongoDB, PostgreSQL i SQLite. To znači da ćemo morati ili koristiti usluge trećih strana (poput MongoDB Atlas, Supabase itd.), ili ćemo morati ručno instalirati upravljače baza podataka na naš VPS.

Budući da osobno preferiram imati sve podatke pod vlastitom kontrolom, odlučio sam se za lokalnu instalaciju baze podataka. Također, korištenje usluge baze podataka treće strane bi poništilo samu svrhu samostalnog hostanja Payload aplikacije – u tom slučaju bih radije koristio platformu poput Vercela.

Za početak instalacije i kreiranje inicijalnih baza podataka za našu aplikaciju, moramo se SSH-ati na naš VPS kao root korisnik. Nije moguće instalirati pakete kao korisnik stranice.

ssh root@vaša-vps-adresa

Nakon prijave kao root, moramo instalirati upravljač baze podataka koji želimo koristiti. Preferiram relacijske baze podataka pa sam se odlučio za PostgreSQL.

apt install postgresql

Nakon završetka instalacije, moramo pokrenuti i omogućiti postgresql servis, tako da se automatski pokreće čak i ako se naš VPS ponovno pokrene.

service postgresql enable
service postgresql start

Sada kada smo uspješno pokrenuli PostgreSQL upravljač, moramo kreirati našu bazu podataka.

First, we have to switch to the newly created postgres Prvo se moramo prebaciti na novostvorenog postgres korisnika, jer je to korisnik koji ima mogućnost kreiranja i modificiranja baza podataka.

su - postgres

Kada smo promijenili korisnika, moramo ući u psql, što je terminalno sučelje za PostgreSQL.

psql

Sada kada smo u psql načinu rada, imamo pune dozvole i mogućnost kreiranja i modificiranja baza podataka kako želimo.

Za našu aplikaciju, prvo moramo kreirati korisnika i postaviti lozinku – to će biti korisnik koji će moći modificirati našu bazu podataka.

CREATE USER payload WITH PASSWORD 'payload-db-lozinka';

Nakon toga, kreiramo našu bazu podataka i postavimo našeg korisnika kao vlasnika baze – to mu daje mogućnost modificiranja spomenute baze i sheme:

CREATE DATABASE payload_db;
ALTER DATABASE payload_db OWNER TO payload;
GRANT ALL PRIVILEGES ON DATABASE payload_db TO payload;

Ako dobijete grešku poput "permission denied for schema public" prilikom pokretanja vaše aplikacije, pokrenite i sljedeću naredbu:

GRANT ALL ON SCHEMA public TO payload; 

Korak 3: Implementacija Aplikacije

Nakon pokretanja upravljača baze podataka i kreiranja baze koja će se koristiti za aplikaciju, vrijeme je za implementaciju same aplikacije.

Za početak, prijavite se na vaš VPS kao korisnik stranice koji je kreiran prilikom kreiranja stranice.

ssh vaš-korisnik@vaša-ip-adresa

Nakon prijave kao korisnik, moramo učitati datoteke aplikacije u "root" direktorij naše aplikacije. Root direktorij može se naći unutar CloudPanel područja:

Prebacite se u direktorij:

cd /home/vaš-korisnik/htdocs/domena-stranice

Najlakši način za učitavanje datoteka naše aplikacije je kloniranje Github repozitorija:

git clone https://github.com/vaše_korisničko_ime/vaš-repo.git .

Zatim, jednostavno izlistamo datoteke u direktoriju kako bismo se uvjerili da je naša aplikacija uspješno klonirana.

ls -la

Voila – naše datoteke su sada ovdje, na našem VPS-u. Sada je samo jednostavan slučaj instaliranja ovisnosti, izgradnje i pokretanja naše aplikacije.

Međutim, prije izgradnje aplikacije, moramo postaviti ENV varijable. To uključuje URI naše baze podataka, tajni string koji Payload koristi za enkripciju i dekripciju JWT tokena i javni URL aplikacije, koji se koristi za konfiguraciju CORS-a, formatiranje linkova i više. Za to, kopirajte primjer .env datoteke:

cp .env.example .env

I zatim unesite vaše varijable:

nano .env
DATABASE_URI=postgresql://korisnik:[email protected]:5432/ime-baze
PAYLOAD_SECRET=VAŠ_TAJNI_KLJUČ
NEXT_PUBLIC_SERVER_URL=https://vašadomena.com

Sljedeće, moramo instalirati sve "ovisnosti" (eng. dependencies) naše aplikacije, što se može učiniti putem upravitelja paketa po vašem izboru. Radi jednostavnosti, koristimo npm, ali yarn i pnpm su također moguće opcije – samo ćete ih prvo morati instalirati:

npm install

Nakon instaliranja ovisnosti, moramo izgraditi našu aplikaciju za produkciju:

npm run build

Kada je naša aplikacija izgrađena za produkciju, jednostavno moramo pokrenuti naš server

npm run start

Ako je sve prošlo uspješno, vidjet ćete ovu poruku u vašem terminalu:

To je izuzetno dobar znak – to znači da naša aplikacija radi ispravno. Sjetite se, ranije smo kreirali Node.js aplikaciju i specificirali port 3000 – to je port koji naša aplikacija koristi, tako da bismo sada trebali moći jednostavno posjetiti našu domenu kako bismo vidjeli aplikaciju.

Naša aplikacija je sada živa i vidljiva cijelom internetu. Međutim, možda ste primijetili mali problem – ne možemo više koristiti naš terminal bez zatvaranja aplikacije. Ovo nije nešto što će funkcionirati, pa hajdemo to popraviti.

Ovo se može popraviti instaliranjem pm2, što je upravitelj daemon procesa koji će vam pomoći upravljati i održavati vašu aplikaciju online 24/7. Moramo ga instalirati putem npm-a:

npm install --global pm2

Zatim, jednostavno pokrenite sljedeću naredbu za pokretanje pm2 (pazite da zamijenite ime aplikacije svojim):

pm2 start npm --name "ime-vaše-aplikacije" -- start

Ovo će održavati našu aplikaciju pokrenutom 24/7 (naravno, osim ako cijeli naš VPS ne padne).

Česti Problemi i Rješenja

  • Problemi s povezivanjem baze podataka: Provjerite sadrži li URI vaše baze podataka ispravne vjerodajnice i ime baze
  • 502 Bad Gateway: Provjerite radi li vaša Node.js aplikacija i "sluša" li na ispravnom portu
  • Greške s dozvolama datoteka: Pobrinite se da vaše datoteke aplikacije imaju ispravno vlasništvo i dozvole, iako bi trebale biti u redu prema zadanim postavkama
  • Neuspjesi izgradnje: Provjerite jesu li sve ovisnosti pravilno instalirane i je li verzija Node.js-a kompatibilna

Održavanje i Ažuriranja

Za ažuriranje vaše aplikacije:

git pull origin main
npm install
npm run build
pm2 restart ime-vaše-aplikacije

Pobrinite se da redovito obavljate zadatke održavanja:

  • Praćenje zapisa: pm2 logs ime-vaše-aplikacije
  • Provjera sistemskih resursa: pm2 monit
  • Ažuriranje SSL certifikata: Automatski se obnavljaju, ali provjerite datume isteka

Zaključak

Sada imate produkcijski spremnu PayloadCMS instancu koja radi na CloudPanelu. Ne zaboravite pratiti performanse vaše aplikacije, održavati ovisnosti ažuriranima i održavati redovite sigurnosne kopije vaših podataka.

Dodatni resursi i reference

Spremni otključati puni potencijal svog poslovanja?