Bereitstellung Und Online

i18n.site verwendet eine Single-Page-Anwendungsarchitektur , und die Website-Eingangsseite und der Website-Inhalt werden unabhängig voneinander bereitgestellt.

Nach dem Ausführen der obigen Übersetzung werden die Verzeichnisse htm und v im Verzeichnis md/out/dev generiert.

Hier bedeutet dev , dass es auf der Grundlage der Konfigurationsdatei .i18n/htm/dev.yml erstellt wird.

dev Verzeichnis :

Das htm Verzeichnis ist die Einstiegsseite der Website.

Das Verzeichnis v enthält Website-Inhalte mit Versionsnummern.

Die lokale Vorschau kümmert sich nicht um die Versionsnummer und kopiert alle Dateien in das Verzeichnis out/dev/v/0.1.0 .

Für die offizielle Veröffentlichung werden geänderte Dateien in das neue Versionsnummernverzeichnis kopiert.

Geben Sie Die Konfigurationsdatei Mit -c An

Verschiedene Konfigurationsdateien erstellen entsprechende Verzeichnisse im Verzeichnis out .

Beispielsweise erstellt .i18n/htm/main.yml das Verzeichnis out/main .

dev.yml und main.yml sind die Standardkonfigurationen.

dev ist die Abkürzung von development und gibt die Entwicklungsumgebung an, die für die lokale Vorschau verwendet wird, und ist auch die Standardkonfigurationsdatei. ol ist die Abkürzung für online und gibt die Online-Umgebung an, die für die offizielle Veröffentlichung verwendet wird. Sie ist auch die Standardkonfigurationsdatei, wenn die Befehlszeilenparameter -n bis npm für die Veröffentlichung verwendet werden.

Sie können auch andere Konfigurationsdateien erstellen. Verwenden Sie --htm_conf in der Befehlszeile, um den Namen der zu verwendenden Konfigurationsdatei anzugeben:

Zum Beispiel:

i18n.site --htm_conf dist --save

Hier steht --save für die Versionsnummer des Update-Releases.

Veröffentlichen Sie Inhalte auf npmjs.com

Die Veröffentlichung von Inhalten in npmjs.com ist die empfohlene Standardlösung (siehe Front-End-Hochverfügbarkeit ).

npm Anmelden & Beitrag

Installieren Sie nodejs , melden Sie sich mit npm login an.

Bearbeiten Sie md/.i18n/htm/main.yml npmjs.com ändern Sie den Wert von md: YOUR_NPM_PACKAGE als Ihren eigenen npm Paketnamen.

Dann ändern Sie md/.i18n/htm/main.package.json

Führen Sie i18n.site --npm oder i18n.site -n im Verzeichnis md aus, um zu übersetzen und zu veröffentlichen.

Wenn Sie zum Veröffentlichen eine kontinuierliche Integrationsumgebung verwenden, ist keine Installation von nodejs erforderlich. Kopieren Sie einfach die Anmelde- und Veröffentlichungsberechtigungen ~/.npmrc in die Umgebung.

Wenn Sie den Paketnamen v: in main.yml ändern, löschen Sie bitte zuerst .i18n/v/main und veröffentlichen Sie es dann.

Von npm Veröffentlichter Proxyserver

Wenn Benutzer auf dem chinesischen Festland auf Netzwerkprobleme stoßen und keine npm Pakete veröffentlichen können, können sie die Umgebungsvariable https_proxy festlegen, um den Proxyserver zu konfigurieren.

Unter der Annahme, dass der Port Ihres Proxyservers 7890 ist, können Sie Folgendes schreiben:

https_proxy=http://127.0.0.1:7890 i18n.site -n

Selbstgehostete Inhalte

Wenn Sie den Inhalt selbst hosten möchten, bearbeiten Sie zunächst md/.i18n/htm/main.yml und ändern Sie v: //unpkg.com/i18n.site in Ihr URL-Präfix, z. B. v: //i18n-v.xxx.com .

Geben Sie das Verzeichnis md ein und führen Sie es aus

i18n.site --htm_conf ol --save

oder Abkürzung

i18n.site -c ol -s

Konfigurieren Sie dann den Inhalt im Verzeichnis md/out/main/v für den in v: festgelegten URL-Präfixpfad.

Konfigurieren Sie abschließend die Cache-Zeit des Pfads, der mit /.v endet, auf 1s , da sonst nicht sofort auf den neu veröffentlichten Inhalt zugegriffen werden kann.

Die Cache-Zeit für andere Pfade kann auf ein Jahr oder mehr eingestellt werden, um unnötige Anfragen zu reduzieren.

Hosten Sie Inhalte Auf s3

Um Inhalte selbst zu hosten, ist neben der Verwendung Ihres eigenen Servers auch die Verwendung S3 + CDN .

Sie können sich mit rclone beim S3 Server anmelden, dann auf das folgende Skript verweisen und es ändern und nur die inkrementellen Änderungen für jede Version auf S3 kopieren.

i18n.site -c ol -s
s3=your-s3
bucket=your-bucket
ver=$(head -1 .i18n/v/main/v.hash | cut -c 2-)
rclone copy --overwrite-dir out/main/htm/v/$ver $s3:/$bucket/$ver
rclone copy out/main/v/.v "$s3:/$bucket/"

Denken Sie daran, CDN zu konfigurieren, damit die Cache-Zeit des Pfads, der mit /.v endet, 1s beträgt, da sonst nicht sofort auf den neu veröffentlichten Inhalt zugegriffen werden kann.

Website Veröffentlichen

Die Website kann überall eingesetzt werden, github page und cloudflare page sind eine gute Wahl.

Da die Website eine Single-Page-Anwendungsarchitektur verwendet, denken Sie daran, URL-Pfade neu zu schreiben, die nicht . bis index.html enthalten.

Die Website-Einstiegsseite muss nur einmal bereitgestellt werden und es besteht keine Notwendigkeit, die Website-Einstiegsseite für spätere Inhaltsaktualisierungen erneut bereitzustellen.

Auf Der Github-Seite Bereitstellen

Klicken Sie zuerst hier github um eine Organisation zu erstellen . Der folgende Organisationsname ist beispielsweise i18n-demo .

Erstellen Sie dann Lager i18n-demo.github.io unter dieser Organisation (bitte ersetzen Sie i18n-demo durch den von Ihnen erstellten Organisationsnamen):

Beim Veröffentlichen des Inhalts im vorherigen Artikel wurde out/main/htm generiert. Bitte geben Sie dieses Verzeichnis ein und führen Sie es aus :

ln -s index.html 404.html

Da github page das Umschreiben von URL-Pfaden nicht unterstützt, wird stattdessen 404.html verwendet.

Führen Sie dann den folgenden Befehl im Verzeichnis htm aus (denken Sie daran, i18n-demo/i18n-demo.github.io.git durch Ihre eigene Lageradresse zu ersetzen) :

git init
git branch -M main
git remote add origin [email protected]:i18n-demo/i18n-demo.github.io.git
git push -u origin main -f

Warten Sie nach dem Pushen des Codes, bis die Bereitstellung von github page erfolgreich ausgeführt wurde (wie unten gezeigt), bevor Sie darauf zugreifen können.

Die Demoseite finden Sie unter:

https://i18n-demo.github.io

Bereitstellung Auf Der Cloudflare-Seite

cloudflare page Im Vergleich zu github page bietet es eine Pfadumschreibung und ist für das chinesische Festland benutzerfreundlicher. Es wird empfohlen, es zu verwenden.

Die Bereitstellung von cloudflare page basiert normalerweise auf der Bereitstellung von github page oben.

Erstellen Sie ein Projekt und binden Sie das i18n-demo.github.io Warehouse oben.

Der Vorgang ist in der folgenden Abbildung dargestellt:

Klicken Sie bitte auf Add Account um der Organisation i18n-demo Zugriff zu gewähren.

Wenn Sie das Lager einer anderen Organisation angebunden haben, müssen Sie möglicherweise zweimal auf Add Account klicken, um zweimal zu autorisieren, bevor die neue Organisation angezeigt wird.

Wählen Sie als Nächstes Lager i18n-demo.github.io aus, klicken Sie dann auf Begin setup und verwenden Sie die Standardwerte für die nachfolgenden Schritte.

Nach der ersten Bindung müssen Sie einige Minuten warten, bevor Sie darauf zugreifen können.

Nach der Bereitstellung können Sie einen benutzerdefinierten Domänennamen binden.

Nachdem Sie den benutzerdefinierten Domänennamen gebunden haben, gehen Sie bitte zum Domänennamen, um die Pfadumschreibung der Single-Page-Anwendung zu konfigurieren, wie unten gezeigt:

Die Regeln im obigen Bild lauten wie folgt. Bitte ersetzen Sie i18n.site in der ersten Zeile unten durch den von Ihnen gebundenen Domainnamen.

(http.host in {"i18n.site"}) and not (
substring(http.request.uri.path,-3) in {".js" ".gz"} or
substring(http.request.uri.path,-4) in {".htm" ".rss" ".css" ".svg" ".ico" ".png" ".xml" ".txt"} or
substring(http.request.uri.path,-5) in {".html" ".avif" ".json"} or
ends_with(http.request.uri.path,".webmanifest")
)

Konfigurieren Sie außerdem die Cache-Regeln wie unten gezeigt und legen Sie die Cache-Dauer auf einen Monat fest.

Bitte ändern Sie den passenden Domainnamen im zweiten Schritt im Bild oben in den Domainnamen, den Sie gebunden haben.

Optimierung Der Website-Bereitstellung Auf Dem Chinesischen Festland

Wenn Sie eine bessere Zugänglichkeitsleistung in der Netzwerkumgebung des chinesischen Festlandes erzielen möchten, registrieren Sie bitte zuerst einen Domainnamen .

Dann nutzen Sie den Objektspeicher von Cloud CDN + Sie den folgenden Inhalt bereit out/main/htm .

Sie können Edge Computing verwenden, um den Pfad zur Anpassung an Single-Page-Anwendungen neu zu schreiben. Baidu Smart Cloud CDN kann beispielsweise wie folgt konfiguriert werden:

const uri = r.uri, p = uri.lastIndexOf(".");
if (
  p < 0 ||
  !"|js|css|htm|html|md|avif|json|ico|xml|rss|gz|mp4|png|svg|txt|webmanifest|".includes(
    "|" + uri.slice(p + 1) + "|",
  )
) {
  const ua = r.headersIn["User-Agent"].toLowerCase()
  if (/facebookexternalhit|slurp|bot|spider|curl/.test(ua)) {
    r.return(
      302,
      (/baidu|yisou|sogou|360|byte/.test(ua) ? "/zh" : "/en") + r.uri + ".htm",
    )
  } else {
    r.uri = "/index.html"
  }
}

r.respHeader(() => {
  const t = [], out = r.headersOut;
  ["Content-MD5", "Age", "Expires", "Last-Modified"].forEach(
    i => delete out[i]
  )
  r.rawHeadersOut.forEach(i => {
    const key = i[0].toLowerCase()
    if (key.startsWith("x-") || key.startsWith("ohc-")) {
      delete out[key]
    }
  })
  out["Cache-Control"] = "max-age=" + 9e5
  // Sie können den Antwortheader festlegen, um die Ausgabe zu debuggen, z. B. out.XXX = 'MSG';
})

Da Datensatz MX und Datensatz CNAME nicht nebeneinander existieren können, müssen Sie, wenn Sie gleichzeitig Domainnamen-E-Mails empfangen möchten, mit dem cname_flatten -Skript auf Ebene CNAME in Datensatz A kooperieren.

Da die Gebühren für den Auslandsverkehr von Cloud-Anbietern auf dem chinesischen Festland außerdem relativ hoch sind, können Sie die kostenlose geografische Auflösung von Huawei DNS und den benutzerdefinierten Domainnamen von Cloudflare for SaaS (wie unten gezeigt) verwenden, um die Kosten zu optimieren Verkehrsumleitung──Verkehrsweiterleitung auf dem chinesischen Festland Baidu Cloud CDN , internationaler Verkehr geht cloudflare .

Diese Lösungen zur Bereitstellungsoptimierung sind komplexer und werden in Zukunft in separaten Kapiteln vorgestellt.

Generische Domänennamenumleitung

Wenn Sie i18n.site verwenden, um eine Website als Ihre Hauptwebsite zu generieren, müssen Sie normalerweise eine domänenübergreifende Umleitung konfigurieren, dh den Zugriff von *.xxx.com (einschließlich www.xxx.com ) auf xxx.com umleiten.

Diese Anforderung kann mit Hilfe von Alibaba Cloud CDN EdgeScript ( englisches Dokument / chinesisches Dokument ) erreicht werden.

Fügen Sie den Domänennamen in Alibaba CDN hinzu und verweisen Sie den Domänennamen *.xxx.com auf CNAME in Alibaba Cloud CDN .

Die domänenübergreifende Namensumleitungskonfiguration *.i18n.site im Bild oben sieht beispielsweise wie folgt aus:

rewrite(concat('https://i18n.site',$uri), 'redirect',301)

Mit nginx Bereitstellen

Bitte fügen Sie im server -Absatz von nginx Bitte ändern Sie /root/i18n/md/out/main/htm in den Pfad Ihres eigenen Projekts out/main/htm :

location / {
  root  /root/i18n/md/out/main/htm;
  add_header Cache-Control "max-age=9999999";
  if ($uri !~* \.(avif|css|html|ico|js|json|png|svg|txt|webmanifest|xml)$) {
     rewrite ^ /index.html last;
  }
}

Basierend Auf github action Kontinuierlicher Integration

Zur Konfiguration Ihres github action können Sie auf Folgendes zurückgreifen:

name: i18n.site

on:
  workflow_dispatch:
  push:
    branches:
      - main
      - dist

jobs:
  i18n:

    permissions:
      repository-projects: write
      contents: write

    runs-on: ubuntu-latest

    steps:
      - name: checkout
        uses: actions/checkout@v4

      - name: https://i18n.site
        uses: i18n-site/github-action-i18n.site@main
        with:
          I18N_SITE_TOKEN: ${{ secrets.I18N_SITE_TOKEN }}
          NPM_TOKEN: ${{ secrets.NPM_TOKEN }}

Wie in der Konfiguration zu sehen ist, wird dieser Workflow beim Pushen auf Branch main und Branch dist ausgelöst.

Der Workflow verwendet die Konfigurationsdatei, die dem Zweignamen entspricht, um das Dokument zu veröffentlichen. Hier werden .i18n/htm/main.yml bzw. .i18n/htm/dist.yml als Veröffentlichungskonfiguration verwendet.

Wir empfehlen die folgenden Best Practices für den Dokumentenfreigabeprozess:

Wenn Änderungen an Zweig main übertragen werden, wird die Erstellung und Bereitstellung des Dokuments auf der Vorschaustation ausgelöst (die Vorschaustation ist verfügbar github page ).

Nachdem auf der Vorschauseite bestätigt wurde, dass das Dokument korrekt ist, wird der Code zusammengeführt und in den Zweig dist verschoben, und der offizielle Build und die Bereitstellung werden online geschaltet.

Natürlich erfordert die Implementierung des oben genannten Prozesses das Schreiben weiterer Konfigurationen.

Für die Workflow-Skripterstellung können Sie sich auf das aktuelle Projekt beziehen github.com/fcdoc/doc

secrets.I18N_SITE_TOKEN und secrets.NPM_TOKEN in der Konfiguration erfordern, dass Sie geheime Variablen in der Codebasis konfigurieren.

I18N_SITE_TOKEN i18n.site/token

NPM_TOKEN ist das Veröffentlichungstoken von Paket npm in der Konfiguration. Besuchen Sie npmjs.com und erstellen Sie ein Token mit Veröffentlichungsberechtigungen (wie unten gezeigt).

Verzeichnisstruktur

public

Statische Dateien der Website, wie favicon.ico , robots.txt usw.

Die Icon-Dateien hier können mit realfavicongenerator.net generiert werden.

.i18n

Unter dem Verzeichnis .i18n befinden sich die Konfigurationsdateien, der Übersetzungs-Cache usw. von i18n.site Einzelheiten finden Sie im nächsten Kapitel „Konfiguration“ .

en

Quellsprachenverzeichnis, entsprechend en von fromTo in .i18n/conf.yml Konfigurationsdatei

i18n:
  fromTo:
    en: zh

Bitte beachten Sie die Konfiguration der Übersetzung i18