Sodobne aplikacije v ogrodju Angular delujejo kot enostranske spletne aplikacije (Single Page Applications oz. SPA). Čeprav med razvojem tečejo na lokalnem strežniku Node.js (preko ukaza ng serve), za produkcijo posebnega Node.js okolja ne potrebujemo. Angular kodo prevede v standardne statične datoteke (HTML, JS, CSS), ki jih zlahka gosti vsako klasično cPanel gostovanje na strežnikih Apache ali Nginx. V tem vodniku si bomo ogledali postopek priprave, prevajanja ter pravilno konfiguracijo datoteke .htaccess.
Prevajanje projekta za produkcijo (Production Build)
Pred prenosom datotek na strežnik kodo prevedemo z orodjem Angular CLI. Ključen je parameter --base-href, ki določa pot do statičnih virov.
| Scenarij namestitve | Ukaz za prevajanje (Build) | Ciljna mapa na cPanelu | RewriteBase v .htaccess |
|---|---|---|---|
| Glavna domena | npx ng build --base-href / |
public_html/ |
/ |
| Samostojna poddomena | npx ng build --base-href / |
poddomena.domena.si/ |
/ |
| Podmapa obstoječe strani | npx ng build --base-href /aplikacija/ |
public_html/aplikacija/ |
/aplikacija/ |
Struktura izvoznih datotek v mapi dist
Po uspešnem prevajanju Angular ustvari mapo dist/ime-projekta/browser/. Na strežnik prenesemo izključno vsebino mape browser, tako da datoteka index.html leži neposredno v korenski mapi gostovanja.
- index.html: Glavna vstopna točka celotne aplikacije.
- main-[hash].js: Glavna zgoščena programska logika v JavaScriptu.
- styles-[hash].css: Združeni in optimizirani CSS slogi.
- assets/: Mapa s statičnimi viri (slike, pisave, ikone).
Konfiguracija strežnika: Datoteka .htaccess
Ker Angular uporablja usmerjanje na strani odjemalca (Client-side Routing), bo ob neposrednem obisku podstrani ali ob pritisku tipke F5 strežnik Apache vrnil napako 404 Not Found, saj fizična datoteka ne obstaja. Vse zahteve moramo preusmeriti na index.html.
# Konfiguracija za korensko domeno ali poddomeno (.htaccess)
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.html$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.html [L]
</IfModule>
Pogoste težave in rešitve pri namestitvi
Pri prvi namestitvi na produkcijsko okolje se pogosto srečamo s tremi tipičnimi izzivi:
- Bela stran po odprtju: V orodjih za razvijalce (F12 -> Console) preverite morebitne napake 404 za datoteke JS/CSS. Te pomenijo, da je bil parameter
--base-hrefnapačno nastavljen ob ukazu za gradnjo. - Napaka 404 ob osvežitvi: Preverite, ali je datoteka
.htaccessnaložena v isto mapo kotindex.html. V cPanel File Managerju v nastavitvah (Settings) obvezno vklopite možnost Show Hidden Files (dotfiles). - CORS težave z zaledjem: Če PHP API teče na drugi domeni ali poddomeni, mora PHP skripta vsebovati glavo
header("Access-Control-Allow-Origin: *");, klici pa morajo potekati preko varnega HTTPS protokola.