Telepítés És Online

i18n.site egyoldalas alkalmazásarchitektúrát alkalmaz, és a webhely belépési oldala és a webhely tartalma egymástól függetlenül kerül telepítésre.

A fenti fordítás futtatása után az htm és v könyvtár a md/out/dev könyvtár alatt jön létre.

Itt dev azt jelenti, hogy az .i18n/htm/dev.yml konfigurációs fájl alapján készült.

dev könyvtár :

A htm könyvtár a webhely belépési oldala.

A v könyvtár tartalmazza a webhely tartalmát verziószámokkal.

A helyi előnézet nem törődik a verziószámmal, és az összes fájlt a out/dev/v/0.1.0 könyvtárba másolja.

A hivatalos kiadáshoz a módosított fájlok az új verziószámú könyvtárba lesznek másolva.

Adja Meg a Konfigurációs Fájlt -c Val

A különböző konfigurációs fájlok megfelelő könyvtárakat hoznak létre a out könyvtárban.

Például .i18n/htm/main.yml létrehozza az out/main könyvtárat.

dev.yml és main.yml az alapértelmezett konfigurációk.

dev az development rövidítése, amely a fejlesztői környezetet jelzi, a helyi előnézethez használatos, és egyben az alapértelmezett konfigurációs fájl is. ol az online rövidítése, amely a hivatalos kiadáshoz használt online környezetet jelöli. Ez egyben az alapértelmezett konfigurációs fájl is -n npm ig terjedő parancssori paraméterek kiadásához.

Más konfigurációs fájlokat is létrehozhat. Használja --htm_conf a parancssorban a használni kívánt konfigurációs fájlnév megadásához:

például:

i18n.site --htm_conf dist --save

Itt --save a frissítés kiadásának verziószámát jelenti.

Tegye közzé a tartalmat az npmjs.com webhelyen

Az ajánlott alapértelmezett megoldás a tartalom közzététele a npmjs.com

npm & Post

Telepítse nodejs , jelentkezzen be npm login gyel.

Szerkessze md/.i18n/htm/main.yml npmjs.com változtassa meg az md: YOUR_NPM_PACKAGE -re a saját npm csomagnévként.

Ezután módosítsa md/.i18n/htm/main.package.json

Futtassa i18n.site --npm vagy i18n.site -n a md könyvtárban a fordításhoz és közzétételhez.

Ha folyamatos integrációs környezetet használ a közzétételhez, nincs szükség nodejs telepítésére. Csak másolja át a bejelentkezési és közzétételi engedélyeket ~/.npmrc a környezetbe.

Ha módosítja az v: a main.yml -ban csomagnevet, kérjük, először törölje .i18n/v/main , majd tegye közzé.

Proxyszervert Az npm Tette Közzé

Ha a kínai szárazföldi felhasználók hálózati problémákba ütköznek, és nem tudnak npm csomagot közzétenni, beállíthatják az https_proxy környezeti változót a proxykiszolgáló konfigurálásához.

Feltételezve, hogy a proxyszerver portja 7890 , a következőket írhatja:

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

Saját Hosztolt Tartalom

Ha saját maga szeretné tárolni a tartalmat, először szerkessze md/.i18n/htm/main.yml , és módosítsa v: //unpkg.com/i18n.site az URL-előtagra, például v: //i18n-v.xxx.com re.

Írja be a md könyvtárat, és futtassa

i18n.site --htm_conf ol --save

vagy rövidítése

i18n.site -c ol -s

Ezután állítsa be a md/out/main/v könyvtár tartalmát az v: -ben beállított URL előtag elérési útjára.

Végül állítsa be a /.v tól 1s ig végződő útvonal gyorsítótár idejét , különben az újonnan kiadott tartalom nem érhető el azonnal.

A többi útvonal gyorsítótárának ideje egy évre vagy többre állítható be a szükségtelen kérések csökkentése érdekében.

Tartalom Tárolása Az S3-Ban

A tartalom saját üzemeltetéséhez a saját szerver használata mellett egy másik gyakori lehetőség CDN S3 +

rclone segítségével bejelentkezhet a S3 szerverre, majd tekintse meg és módosítsa a következő szkriptet, és csak a növekményes módosításokat másolja S3 -re minden kiadáshoz.

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/"

Ne felejtse el CDN úgy beállítani, hogy az /.v re végződő útvonal gyorsítótárideje 1s legyen, különben az újonnan kiadott tartalom nem érhető el azonnal.

Weboldal Közzététele

A webhely bárhol telepíthető github page és cloudflare page jó választás.

Mivel a webhely egyoldalas alkalmazásarchitektúrát használ, ne felejtse el átírni azokat az URL-útvonalakat, amelyek nem tartalmaznak . -t index.html re.

A webhely belépési oldalát csak egyszer kell üzembe helyezni, és nincs szükség a webhely belépési oldalának újratelepítésére a későbbi tartalomfrissítésekhez.

Telepítés a github Oldalon

Először kattintson github a szervezet létrehozásához . A következő szervezet neve példaként i18n-demo .

Ezután hozza létre a i18n-demo.github.io raktárt ehhez a szervezethez (kérjük, cserélje ki i18n-demo a létrehozott szervezet nevére):

Az előző cikkben szereplő tartalom közzétételekor out/main/htm keletkezett Kérjük, lépjen be ebbe a könyvtárba, és futtassa a :

ln -s index.html 404.html

Mivel github page nem támogatja az URL-útvonal átírását, helyette 404.html kerül felhasználásra.

Ezután futtassa a következő parancsot a htm könyvtárban (ne felejtse el lecserélni i18n-demo/i18n-demo.github.io.git a saját raktárcímére) :

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

A kód lenyomása után várja meg, amíg a github page telepítése sikeresen lefut (az alább látható módon), mielőtt hozzáférhetne.

A bemutató oldalt lásd:

https://i18n-demo.github.io

Telepítés a cloudflare Oldalon

github page hoz cloudflare page átírja az útvonalat, barátságosabb a szárazföldi Kínával szemben, és jobban elérhető.

A cloudflare page telepítése általában a fenti github page telepítésén alapul.

Hozzon létre egy projektet, és kösse össze a fenti i18n-demo.github.io raktárt.

A folyamat az alábbi ábrán látható:

Kattintson Add Account , hogy hozzáférést biztosítson az i18n-demo szervezethez.

Ha egy másik szervezet raktárát lekötötte, előfordulhat, hogy kétszer kell Add Account kattintania az engedélyezéshez, mielőtt az új szervezet megjelenik.

Ezután válassza ki a i18n-demo.github.io raktárt, majd kattintson Begin setup , és használja az alapértelmezett értékeket a további lépésekhez.

Az első bekötés után várnia kell néhány percet, mielőtt hozzáférhet.

A telepítés után egyéni tartománynevet köthet.

Az egyéni tartománynév összerendelése után lépjen a tartománynévre az egyoldalas alkalmazás útvonal-újraírásának konfigurálásához, az alábbiak szerint:

A fenti képen a i18n.site a következők.

(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")
)

Ezenkívül kérjük, konfigurálja a gyorsítótár szabályait az alábbiak szerint, és állítsa be a gyorsítótár időtartamát egy hónapra.

Kérjük, változtassa meg a fenti kép második lépésében szereplő domain nevet a kötött domain névre.

A Webhelyek Telepítésének Optimalizálása Kínában

Ha jobb akadálymentesítési teljesítményt szeretne elérni a szárazföldi kínai hálózati környezetben, először regisztráljon egy domain nevet .

Ezután használja a szárazföldi kínai felhőszolgáltatók objektumtárolását + CDN Telepítse a következő tartalmat out/main/htm .

Az élszámítással átírhatja az elérési utat az egyoldalas alkalmazásokhoz való alkalmazkodáshoz. Például a Baidu Smart Cloud CDN a következőképpen konfigurálható:

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
  // A válaszfejlécek beállíthatók hibakeresési kimenetre, például out.XXX = 'MSG';
})

Mivel a MX rekord és az CNAME rekord nem létezhet együtt, ha egyidejűleg szeretne domain névvel kapcsolatos e-maileket kapni, akkor a CNAME szintű scripttel kell cname_flatten a A rekorddal.

Ezen túlmenően, mivel a szárazföldi Kínában a felhőszolgáltatók tengerentúli forgalmi díjai viszonylag drágák, ha optimalizálni szeretné a költségeket, használhatja a Huawei DNS ingyenes földrajzi felbontását és Cloudflare for SaaS egyéni domainnevét (lásd alább). forgalom elterelése──Forgalomirányítás a szárazföldi Kínában Baidu Cloud CDN , a nemzetközi forgalom cloudflare .

Ezek a telepítés-optimalizálási megoldások összetettebbek, és a jövőben külön fejezetekben kerülnek bemutatásra.

Általános Domain Név Átirányítás

Ha i18n.site használ egy webhely létrehozásához fő webhelyként, akkor általában be kell állítania a pándomain átirányítást, azaz át kell irányítania a hozzáférést *.xxx.com -re (beleértve www.xxx.com is) xxx.com -ra.

Ez a követelmény az Alibaba Cloud CDN EdgeScript ( angol dokumentum / kínai dokumentum ) segítségével teljesíthető .

Adja hozzá a domain nevet az Alibaba Cloudban CDN és mutasson rá *.xxx.com -ról CNAME -re az Alibaba Cloud CDN -ben.

Például a fenti képen a *.i18n.site pándomainnév-átirányítási konfiguráció a következő:

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

Telepítés Nginx-Szel

Kérjük, adjon out/main/htm /root/i18n/md/out/main/htm , server következőhöz hasonló konfigurációt a nginx

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;
  }
}

github action Folyamatos Integráció Alapján

A github action konfigurálásához a következőkre hivatkozhat:

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 }}

Amint az a konfigurációban látható, ez a munkafolyamat akkor indul el, amikor main és az dist ágra toljuk.

A munkafolyamat az ág nevének megfelelő konfigurációs fájlt fogja használni a dokumentum közzétételéhez. Itt .i18n/htm/main.yml és az .i18n/htm/dist.yml lesz a közzétételi konfiguráció.

A következő bevált módszereket javasoljuk a dokumentumkiadási folyamathoz:

Ha a változtatásokat a main ágra tolja, a dokumentum felépítésre és telepítésre kerül az előnézeti állomáson (az előnézeti állomás elérhető github page ).

Miután megerősítette a dokumentum helyességét az előnézeti webhelyen, a kód összevonódik és a dist ágba kerül, és a hivatalos összeállítás és telepítés online lesz.

Természetesen a fenti folyamat megvalósításához több konfiguráció írása szükséges.

A munkafolyamat-szkriptekhez hivatkozhat a tényleges projektre github.com/fcdoc/doc

A konfigurációban secrets.I18N_SITE_TOKEN és secrets.NPM_TOKEN megköveteli a titkos változók konfigurálását a kódbázisban.

I18N_SITE_TOKEN i18n.site/token

NPM_TOKEN az npm csomag közzétételi tokenje a konfigurációban npmjs.com és hozzon létre egy tokent közzétételi engedéllyel (lásd alább).

Címtárszerkezet

public

A webhely statikus fájljai, például favicon.ico , robots.txt stb.

Az itt található ikonfájlok a realfavicongenerator.net

.i18n

A .i18n könyvtár alatt találhatók az i18n.site konfigurációs fájlok, fordítási gyorsítótár stb.. A részleteket lásd a következő „Konfiguráció” fejezetben.

en

Forrásnyelvi könyvtár, amely megfelel en .i18n/conf.yml konfigurációs fromTo

i18n:
  fromTo:
    en: zh

Kérjük, olvassa el a fordítás konfigurációját i18