Implementacija Astro strani s Traefik in Systemd
Ta vodila vas vodi skozi postopek uvajanja vaše Astro Starlight strani na produkcijski strežnik. Po končanju boste imeli popolnoma funkcionalno spletno stran z avtomatskimi SSL certifikati, uravnoteženjem obremenitve in avtomatskim upravljanjem storitev. Vodila predpostavlja, da imate osnovno znanje Linux ukazne vrstice in dostop do strežnika z Debian/Ubuntu ter nameščenimi Docker in Docker Compose.
Predpogoji
Razdelek z naslovom „Predpogoji”- Strežnik z Debian/Ubuntu
- Nameščena Docker in Docker Compose
- Domena (npr.
<example.com>) - Osnovno znanje Linux ukazne vrstice
- Node.js 18.17 ali novejše
Nastavljanje Astro projekta
Razdelek z naslovom „Nastavljanje Astro projekta”Če še nimate Astro projekta, ga ustvarite s privzetim predlogo:
npm create astro@latest my-siteVodič vas bo poprosil za izbire (privzeto: Starlight, prazna konfiguracija itd.). Ko je ustvarjen, pojdite v imenik projekta:
cd my-sitePregled arhitekture
Internet → Traefik (SSL/Vrata 443) → Busybox httpd (Statične datoteke) ↓ Systemd upravljanje storitev- Traefik: Obravnava SSL certifikate, usmerjanje in uravnoteženje obremenitve
- Busybox httpd: Lahka spletna strežnica, ki servira statične Astro datoteke
- Systemd: Upravlja življenjski cikel storitve in avtomatske ponovne zagon
Korak 1: Zgradite svojo Astro stran
Razdelek z naslovom „Korak 1: Zgradite svojo Astro stran”-
Namestite odvisnosti in zgradite
Terminal window npm installnpm run build -
Preverite izhod gradnje
Terminal window ls -la dist/Videti bi morali statične datoteke vaše strani v mapi
dist/.
Korak 2: Pripravite mapo za uvajanje
Razdelek z naslovom „Korak 2: Pripravite mapo za uvajanje”-
Ustvarite mapo za uvajanje
Terminal window sudo mkdir -p /etc/docker-compose/<your_site> -
Kopirajte datoteke gradnje
Terminal window sudo cp -r dist /etc/docker-compose/<your_site>/ -
Ustvarite Docker datoteke Ustvarite naslednje datoteke v
/etc/docker-compose/<your_site>/:
compose.yaml
Razdelek z naslovom „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 storitev
Razdelek z naslovom „Korak 3: Konfigurirajte Systemd storitev”-
Ustvarite systemd predlogo storitve
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 naložite systemd
Terminal window sudo systemctl daemon-reload
Korak 4: Konfigurirajte DNS
Razdelek z naslovom „Korak 4: Konfigurirajte DNS”-
Dodajte A zapis Usmerite svojo domeno (
<example.com>) na IP naslov vašega strežnika. -
Preverite širjenje DNS
Terminal window nslookup <example.com>
Korak 5: Zaženite storitev
Razdelek z naslovom „Korak 5: Zaženite storitev”-
Zaženite storitev
Terminal window sudo systemctl start docker-compose@<your_site> -
Omogočite ob zagonu
Terminal window sudo systemctl enable docker-compose@<your_site> -
Preverite status
Terminal window sudo systemctl status docker-compose@<your_site>
Korak 6: Preverite uvajanje
Razdelek z naslovom „Korak 6: Preverite uvajanje”-
Preverite Traefik nadzorno ploščo Obiščite
http://<your_server_ip>:8080za ogled Traefik nadzorne plošče. -
Preizkusite HTTPS Obiščite
https://<example.com>- videti bi morali svojo Astro stran z veljavnim SSL certifikatom. -
Preverite dnevnike
Terminal window sudo journalctl -u docker-compose@<your_site> -f
Posodabljanje vaše strani
Razdelek z naslovom „Posodabljanje vaše strani”-
Zgradite novo različico
Terminal window npm run build -
Posodobite datoteke uvajanja
Terminal window sudo cp -r dist/* /etc/docker-compose/<your_site>/dist/ -
Ponovno naložite storitev
Terminal window sudo systemctl reload docker-compose@<your_site>
Odpravljanje težav
Razdelek z naslovom „Odpravljanje težav”Storitev se ne zažene
Razdelek z naslovom „Storitev se ne zažene”# Preverite Docker statussudo systemctl status docker
# Preverite compose dnevnikesudo docker compose -f /etc/docker-compose/<your_site>/compose.yaml logsTežave z SSL certifikatom
Razdelek z naslovom „Težave z SSL certifikatom”# Preverite Traefik dnevnikesudo docker logs traefik
# Preverite usmerjanje domenecurl -I https://<example.com>Težave z dovoljenji
Razdelek z naslovom „Težave z dovoljenji”# Popravite dovoljenjasudo chown -R $USER:$USER /etc/docker-compose/<your_site>/Varnostni premisleki
Razdelek z naslovom „Varnostni premisleki”- Spremenite privzeta vrata Traefik nadzorne plošče (8080) v produkciji
- Uporabite močna gesla za vse izpostavljene storitve
- Ohranite Docker in Traefik posodobljena
- Redno spremljajte dnevnike
Zaključek
Razdelek z naslovom „Zaključek”Sedaj imate produkcijsko pripravljeno uvajanje Astro strani z:
- Avtomatskimi SSL certifikati
- Uravnoteženjem obremenitve in usmerjanjem
- Spremljanjem storitve in avtomatskim ponovnim zagonom
- Enostavnimi posodobitvami in vzdrževanjem
Naslednji koraki:
- Preverite Traefik dokumentacijo za napredne konfiguracije
- Oglejte si Docker Compose dokumentacijo za več možnosti
- Razmislite o dodajanju monitoringa z orodji kot Prometheus ali Grafana