Implementacija Astro stranice s Traefik i Systemd
Ovaj vodič vas vodi kroz postupak uvajanja vaše Astro Starlight stranice na produkcijski poslužitelj. Po završetku ćete imati potpuno funkcionalnu web stranicu s automatskim SSL certifikatima, uravnoteživanjem opterećenja i automatskim upravljanjem usluga. Vodič pretpostavlja da imate osnovno znanje Linux naredbenog retka i pristup poslužitelju s Debian/Ubuntu te instaliranim Docker i Docker Compose.
Preduvjeti
Odjeljak naslovljen „Preduvjeti”- Poslužitelj s Debian/Ubuntu
- Instalirani Docker i Docker Compose
- Naziv domene (npr.
<example.com>) - Osnovno znanje Linux naredbenog retka
- Node.js 18.17 ili noviji
Postavljanje vašeg Astro projekta
Odjeljak naslovljen „Postavljanje vašeg Astro projekta”Ako još nemate Astro projekt, kreirajte ga koristeći službeni CLI:
npm create astro@latest my-siteČarobnjak će vas voditi kroz izbore (zadano: Starlight, prazna konfiguracija, itd.). Kad je kreiran, prijeđite u direktorij projekta:
cd my-sitePregled arhitekture
Odjeljak naslovljen „Pregled arhitekture”Internet → Traefik (SSL/Port 443) → Busybox httpd (Statičke datoteke) ↓ Systemd upravljanje uslugama- Traefik: Rukuje SSL certifikatima, usmjeravanjem i uravnoteživanjem opterećenja
- Busybox httpd: Lagani web poslužitelj koji servira statičke Astro datoteke
- Systemd: Upravlja životnim ciklusom usluge i automatskim ponovnim pokretanjima
Korak 1: Izgradite svoju Astro stranicu
Odjeljak naslovljen „Korak 1: Izgradite svoju Astro stranicu”-
Instalirajte ovisnosti i izgradite
Terminal window npm installnpm run build -
Provjerite izlaz izgradnje
Terminal window ls -la dist/Trebali biste vidjeti statičke datoteke svoje stranice u mapi
dist/.
Korak 2: Pripremite mapu za uvajanje
Odjeljak naslovljen „Korak 2: Pripremite mapu za uvajanje”-
Stvorite mapu za uvajanje
Terminal window sudo mkdir -p /etc/docker-compose/<your_site> -
Kopirajte datoteke izgradnje
Terminal window sudo cp -r dist /etc/docker-compose/<your_site>/ -
Stvorite Docker datoteke Stvorite sljedeće datoteke u
/etc/docker-compose/<your_site>/:
compose.yaml
Odjeljak naslovljen „compose.yaml”services: traefik: image: traefik:latest command: - "--api.insecure=true" - "--providers.docker=true" - "--providers.docker.exposedbydefault=false" - "--entrypoints.web.address=:80" - "--entrypoints.web.http.redirections.entrypoint.to=websecure" - "--entrypoints.web.http.redirections.entrypoint.scheme=https" - "--entrypoints.websecure.address=:443" - "--certificatesresolvers.letsencrypt.acme.httpchallenge=true" - "--certificatesresolvers.letsencrypt.acme.httpchallenge.entrypoint=web" - "--certificatesresolvers.letsencrypt.acme.email=<your_email>" - "--certificatesresolvers.letsencrypt.acme.storage=/letsencrypt/acme.json" ports: - "80:80" - "443:443" - "8080:8080" volumes: - /var/run/docker.sock:/var/run/docker.sock:ro - letsencrypt:/letsencrypt networks: - web restart: unless-stopped
web: image: busybox:1.36 command: httpd -f -p 80 -h /www volumes: - /etc/docker-compose/<your_site>/dist:/www:ro labels: - "traefik.enable=true" - "traefik.http.routers.<your_site>.rule=Host(`<example.com>`)" - "traefik.http.routers.<your_site>.entrypoints=websecure" - "traefik.http.routers.<your_site>.tls.certresolver=letsencrypt" - "traefik.http.services.<your_site>.loadbalancer.server.port=80" networks: - web restart: unless-stopped
volumes: letsencrypt:
networks: web: driver: bridgeKorak 3: Konfigurirajte Systemd uslugu
Odjeljak naslovljen „Korak 3: Konfigurirajte Systemd uslugu”-
Stvorite systemd predložak usluge
Terminal window sudo tee /etc/systemd/system/docker-compose@.service > /dev/null <<EOF[Unit]Description=docker-compose %i serviceRequires=docker.service network-online.targetAfter=docker.service network-online.target[Service]WorkingDirectory=/etc/docker-compose/%iType=simpleTimeoutStartSec=15minRestart=alwaysExecStartPre=/usr/bin/docker compose pull --quietExecStartPre=/usr/bin/docker compose buildExecStart=/usr/bin/docker compose up --remove-orphansExecStop=/usr/bin/docker compose down --remove-orphansExecReload=/usr/bin/docker compose pull --quietExecReload=/usr/bin/docker compose build[Install]WantedBy=multi-user.targetEOF -
Ponovno učitajte systemd
Terminal window sudo systemctl daemon-reload
Korak 4: Konfigurirajte DNS
Odjeljak naslovljen „Korak 4: Konfigurirajte DNS”-
Dodajte A zapis Usmjerite svoju domenu (
<example.com>) na IP adresu svog poslužitelja. -
Provjerite širenje DNS-a
Terminal window nslookup <example.com>
Korak 5: Pokrenite uslugu
Odjeljak naslovljen „Korak 5: Pokrenite uslugu”-
Pokrenite uslugu
Terminal window sudo systemctl start docker-compose@<your_site> -
Omogućite pri pokretanju
Terminal window sudo systemctl enable docker-compose@<your_site> -
Provjerite status
Terminal window sudo systemctl status docker-compose@<your_site>
Korak 6: Provjerite uvajanje
Odjeljak naslovljen „Korak 6: Provjerite uvajanje”-
Provjerite Traefik nadzornu ploču Posjetite
http://<your_server_ip>:8080da vidite Traefik nadzornu ploču. -
Testirajte HTTPS Posjetite
https://<example.com>- trebali biste vidjeti svoju Astro stranicu s valjanim SSL certifikatom. -
Provjerite zapisnike
Terminal window sudo journalctl -u docker-compose@<your_site> -f
Ažuriranje svoje stranice
Odjeljak naslovljen „Ažuriranje svoje stranice”-
Izgradite novu verziju
Terminal window npm run build -
Ažurirajte datoteke uvajanja
Terminal window sudo cp -r dist/* /etc/docker-compose/<your_site>/dist/ -
Ponovno učitajte uslugu
Terminal window sudo systemctl reload docker-compose@<your_site>
Rješavanje problema
Odjeljak naslovljen „Rješavanje problema”Usluga se ne pokreće
Odjeljak naslovljen „Usluga se ne pokreće”# Provjerite Docker statussudo systemctl status docker
# Provjerite compose zapisnikesudo docker compose -f /etc/docker-compose/<your_site>/compose.yaml logsProblemi s SSL certifikatom
Odjeljak naslovljen „Problemi s SSL certifikatom”# Provjerite Traefik zapisnikesudo docker logs traefik
# Provjerite usmjeravanje domenecurl -I https://<example.com>Problemi s dozvolama
Odjeljak naslovljen „Problemi s dozvolama”# Ispravite dozvolesudo chown -R $USER:$USER /etc/docker-compose/<your_site>/Sigurnosni razmatranja
Odjeljak naslovljen „Sigurnosni razmatranja”- Promijenite zadana vrata Traefik nadzorne ploče (8080) u produkciji
- Koristite jaka lozinke za sve izložene usluge
- Držite Docker i Traefik ažurirane
- Redovito nadzirajte zapisnike
Zaključak
Odjeljak naslovljen „Zaključak”Sada imate produkcijsko spremno uvajanje Astro stranice s:
- Automatskim SSL certifikatima
- Uravnoteživanjem opterećenja i usmjeravanjem
- Nadzorom usluge i automatskim ponovnim pokretanjem
- Jednostavnim ažuriranjima i održavanjem
Sljedeći koraci:
- Provjerite Traefik dokumentaciju za napredne konfiguracije
- Pogledajte Docker Compose dokumentaciju za više opcija
- Razmislite o dodavanju nadzora s alatima poput Prometheus ili Grafana