Predviđeno Vrijeme: 45-60 minuta
Zadnje Ažurirano: Prosinac 2024
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.
Prije početka, provjerite imate li:
Spremni? Onda krenimo!
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.
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;
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).
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:
pm2 logs ime-vaše-aplikacije
pm2 monit
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.