Despliegue Ha en Línea

i18n.site oadopta peteĩ arquitectura aplicación peteĩ página rehegua , ha pe página jeikeha página web ha contenido página web rehegua oñemboguata ijehegui.

Ojejapo rire ñembohasa yvategua, ojejapóta kundaha htm ha v kundaha md/out/dev guýpe.

Ko’ápe, dev he’ise oñemopu’ãha oñemopyendáva .i18n/htm/dev.yml vore ñembohekorã rehe.

dev directorio :

Pe htm directorio ha’e pe página web jeikeha.

Pe v directorio oguereko contenido página web orekóva versión número.

Pe jehechaukaha tendápegua ndojepy’apýi pe versión papapy rehe ha okopia opaite vore out/dev/v/0.1.0 ryru’ípe.

Ojekuaauka hag̃ua oficialmente, umi archivo oñemoambuéva ojekopíta versión número pyahúpe.

Emombe’u Vore Ñembohekorã -c Ndive

Umi archivo configuración rehegua iñambuéva omoheñóita directorio ojoajúva out directorio-pe.

Techapyrã, .i18n/htm/main.yml omoheñóita out/main kundaha.

dev.yml ha main.yml haꞌehína umi configuración por defecto.

dev haꞌehína development ñemombyky, ohechaukáva tekoha ñemoheñói rehegua, ojeporúva jehechaukarã local-pe g̃uarã, ha avei haꞌehína vore ñembohekorã ñepyrũrã. ol haꞌehína online ñemombyky, ohechaukáva tekoha en línea, ojeporúva osẽ hag̃ua oficialmente Haꞌehína avei archivo configuración por defecto ojepuru jave parámetro línea de comandos -n guive npm peve ojepoi hag̃ua.

Ikatu avei ejapo ambue vore ñembohekorã Eipuru --htm_conf ñe’ẽmondo rape’ípe emombe’u hag̃ua vore ñembohekorã réra reipuru hag̃ua:

techapyrã ramo:

i18n.site --htm_conf dist --save

Ko’ápe --save ohechauka pe versión ñeguenohẽ ñembopyahu papapy.

Omoherakuã contenido npmjs.com-pe

Oñemoherakuãvo contenido npmjs.com -pe haꞌehína solución por defecto oñembohekopyréva (ehecha Front-end High Disponibilidad ).

npm &

Emoĩ nodejs , eike npm login reheve .

Emohenda md/.i18n/htm/main.yml ha emoambue md: YOUR_NPM_PACKAGE nde npm paquete réraicha Oimeraẽva paquete réra ndojeguerekóiva npmjs.com

Upéi ñamoambue md/.i18n/htm/main.package.json

Emongu’e i18n.site --npm térã i18n.site -n md ryru’ípe embohasa ha emoherakuã hag̃ua.

Eipurúramo peteĩ tekoha integración continuo emoherakuã hag̃ua, natekotevẽi emohenda nodejs Ekopia mante umi permiso ojeike ha oñemoherakuã hag̃ua ~/.npmrc tekohápe.

Emoambuéramo paquete réra v: en main.yml , eñangareko embogue raẽ .i18n/v/main ha upéi emoherakuã.

Servidor Proxy Omoherakuãva npm Rupive

Umi puruhára China continental-pegua ojuhúramo apañuãi red rehegua ha ndaikatúi omoherakuã npm paquete, ikatu omohenda variable tekoha rehegua https_proxy omohenda hag̃ua servidor proxy.

Ñaimo’ãramo ne puerto servidor proxy ha’eha 7890 , ikatu jahai:

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

Contenido Ojejapóva Ijehegui

Emohendaséramo ijeheguiete pe mba’ekuaarã, emohenda raẽ md/.i18n/htm/main.yml ha emoambue v: //unpkg.com/i18n.site nde URL ñepyrũrãme, ha’eháicha v: //i18n-v.xxx.com .

Eike md ryru ha emongu’e

i18n.site --htm_conf ol --save

térã abreviatura

i18n.site -c ol -s

Upéi, emohenda mba’e’oka oĩva md/out/main/v ryru’ípe URL ñepyrũrã rape oñemohendava’ekue v: -pe.

Ipahápe, emohenda caché aravo tape oñemohu’ãva /.v guive 1s peve , ndaupéichairamo ndaikatúi ojeike pya’e umi mba’ekuaarã osẽ pyahúvape.

Pe tiempo caché rehegua ambue tapekuérape g̃uarã ikatu oñemboguapy peteĩ arýpe térã hetave oñemboguejy hag̃ua mba’ejerure natekotevẽiva.

Oñemohenda Contenido S3-Pe

CDN hag̃ua ijeheguiete, ojepuru hag̃ua nde servidor tee, ambue opción jepivegua haꞌehína ojepuru S3 +

Ikatu eipuru rclone eike hag̃ua S3 servidor-pe, upéi ehecha ha emoambue ko’ã script, ha ekopia umi ñemoambue incremental S3 -pe añoite peteĩteĩva ñeguenohẽme g̃uarã.

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

Penemandu’áke pemohenda hag̃ua CDN ikatu hag̃uáicha pe tiempo caché rehegua tape oñemohu’ãva /.v -pe ha’e 1s , ndaha’éiramo upéicha ndaikatúi ojeike pya’e umi mba’e’oka osẽ pyahúvape.

Omoherakuã Página Web

Pe página web ikatu oñemboguata mamove github page ha cloudflare page ha’e jeporavo porã.

Pe ñanduti renda oipurúgui peteĩ arquitectura purupyrã peteĩ página rehegua , nemandu’ava’erã ehai jey hag̃ua URL rape ndoguerekóiva . guive index.html peve.

Pe página web jeikeha tekotevẽ oñemboguata peteĩ jeýnte, ha natekotevẽi oñembohasa jey pe página web jeikeha oñembopyahu hag̃ua upe rire.

Oñemosarambi github Página-Pe

Ñepyrũrã eity github emoheñói hag̃ua peteĩ organización i18n-demo

Upéi ejapo almacén i18n-demo.github.io ko organización guýpe (emyengovia i18n-demo organización réra remoheñóiva rehe):

Oñemoherakuãvo contenido artículo ohasava'ekuépe, out/main/htm ojejapo Eike ko directorio-pe ha emongu'e :

ln -s index.html 404.html

github page ndoipytyvõigui URL rape jehai jey, ojepuru 404.html hendaguépe.

Upéi emongu’e ko tembiapoukapy htm ryru’ípe (nemandu’áke emyengovia hag̃ua i18n-demo/i18n-demo.github.io.git nde dirección almacén rehegua) :

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

Emoinge rire kódigo, ehaꞌarõ github page ñembohasa oñemboguata porã (ojehechaháicha iguýpe) ikatu mboyve reike ipype.

Página demostración rehegua ehecha:

https://i18n-demo.github.io

Oñemosarambi cloudflare Página-Pe

cloudflare page github page

Pe cloudflare page ñemboguata oñemopyenda jepi github page ñemboguata yvateguápe.

Ejapo peteĩ proyecto ha embojoaju i18n-demo.github.io almacén yvate gotyo.

Pe proceso ojehechauka ta anga iguýpe:

Emboguejy Add Account eme'ẽ hag̃ua jeike organización i18n-demo .

Rembojoajúramo ambue organización almacén, ikatu tekotevẽ remboguejy mokõi jey Add Account reautorisa hag̃ua mokõi jey ojehechauka mboyve organización pyahu.

Upe rire, eiporavo almacén i18n-demo.github.io , upéi eñemboguejy Begin setup , ha eipuru umi valor por defecto umi paso oúvape g̃uarã.

Embojoaju rire peteĩha jey, reha’arõva’erã unos minutos ikatu mboyve reike ipype.

Oñemosarambi rire, ikatu embojoaju peteĩ dominio réra jeporupyre.

Embojoaju rire dominio réra jeporupyre, eike dominio rérape emohenda hag̃ua tape jehai jey purupyrã peteĩ página rehegua, ojehechaukaháicha ko’ápe:

Umi tembiapoukapy oĩva taꞌãngamýi yvateguápe haꞌehína koꞌãva Emyengovia i18n.site oĩva peteĩha línea iguýpe pe dominio réra rembojoajúva reheve.

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

Avei, emohenda umi regla caché rehegua, ojehechaukaháicha ko’ápe, ha emohenda caché pukukue peteĩ jasy.

Emoambue dominio réra ojoajúva mokõiha tembiaporãme taꞌãngamýi yvateguápe dominio réra rembojoajúvape.

Oñemohenda Porãvo Despliegue Sitio Web China Continental-Pe

Ehupytyséramo rendimiento accesibilidad iporãvéva entorno red China continental-pe, ehai raẽ peteĩ dominio réra .

Upéi, eipuru objeto ñeñongatuha umi ñemuha arai rehegua China continental + pe CDN Emosarambi ko’ã contenido out/main/htm .

Ikatu eipuru computación borde rehegua ehai jey hag̃ua tape eñemboheko hag̃ua umi aplicación peteĩ página rehegua Techapyrã, Baidu Smart Cloud CDN ikatu oñemboheko kóicha:

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
  // Ikatu emohenda ñembohovái iñakãrapu’ãva emboheko hag̃ua osëva, taha’e out.XXX = 'MSG';
})

Pe registro MX ha registro CNAME ndaikatúigui oiko oñondive, rehupytyséramo peteĩ jave umi correo CNAME dominio réra A , tekotevẽ reñomoirũ script cname_flatten

Avei, umi cargo de tráfico ultramar-pegua umi cloud ñemuha China continental-pe hepyeterei rupi, remoporãséramo umi Cloudflare for SaaS , ikatu reipuru Huawei Cloud DNS desvío de tránsito──Enrutamiento tráfico China continental-pe Baidu Cloud CDN , tráfico internacional oho cloudflare .

Ko’ã solución optimización despliegue rehegua ikomplikadove ha oñembohasáta capítulo separado-pe tenonderãme.

Redirección Dominio Réra Genérico Rehegua

Eipurúramo i18n.site emoheñói hag̃ua peteĩ ñanduti renda nde ñanduti renda tenondegua ramo, jepive tekotevẽ remohenda pan-domain redirección, he’iséva, rembohasa jeike *.xxx.com -pe ( www.xxx.com oikehápe) xxx.com -pe.

Ko mba'e ojejeruréva ikatu ojehupyty Alibaba Cloud CDN EdgeScript pytyvõ rupive ( kuatia inglés / kuatia chino ) .

Emoĩ dominio réra Alibaba CDN -pe ha ehechauka dominio réra *.xxx.com guive CNAME peve Alibaba Cloud CDN -pe.

Techapyrã, pan-domain réra redirección ñemboheko *.i18n.site taꞌãngamýi yvateguápe haꞌehína kóicha:

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

Oñemosarambi nginx Ndive

Emoĩ peteĩ ñemboheko ojoguáva /root/i18n/md/out/main/htm server párrafo nginx 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;
  }
}

Oñemopyendáva github action Integración Continuo Rehe

Ikatu ehecha ko'ã mba'e emohenda hag̃ua nde github action :

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

Ojehechaháicha configuración-pe, ko tembiaporã rape oñembohape oñembohasávo rama main ha rama dist .

Tembiaporã rape oipurúta vore ñembohekorã okorrespondéva rama rérape oñemoherakuã hag̃ua kuatia Koꞌape, ojeporúta .i18n/htm/main.yml ha .i18n/htm/dist.yml ñemboheko ñembohekorã ramo.

Ro’e porã ko’ã tembiapo iporãvéva kuatia ñeguenohẽ rembiaporãme g̃uarã:

Oñemonguꞌe jave umi ñemoambue rama main -pe, oñembohape kuatia oñemopuꞌa ha oñembohasa hag̃ua estación jehechaukarãme (pe estación jehechaukarã oĩ github page ).

Oñemoañete rire kuatia oĩ porãha pe tenda jehechaukarãme, oñembojoajúta pe código ha oñembohasáta rama dist -pe, ha pe construcción ha despliegue oficial ohóta en línea.

Añetehápe, oñemboguata hag̃ua pe proceso yvategua tekotevẽ ojehai hetave configuración.

Ikatu ehecha proyecto añeteguáva github.com/fcdoc/doc

secrets.I18N_SITE_TOKEN ha secrets.NPM_TOKEN ñembohekorãme ojerure oñemboheko hag̃ua umi mbaꞌekuaarã ñemigua kódigo base-pe.

I18N_SITE_TOKEN i18n.site/token

NPM_TOKEN haꞌehína token ñemoherakuãrã paquete npm rehegua Visita npmjs.com

Directorio Ñemohenda

public

Umi archivo estático página web rehegua, haꞌeháicha favicon.ico , robots.txt , ha mbaꞌe.

Umi vore icono rehegua ko’ápe ikatu oñemboheko realfavicongenerator.net

.i18n

.i18n ryru guýpe oĩ umi vore ñembohekorã, ñembohasa ryru, hambaꞌe i18n.site Ehecha ambue kapítulo "Ñemohenda" reikuaa hag̃ua.

en

Ñe’ẽ ypykue ryru, okorrespondéva en fromTo apytégui .i18n/conf.yml vore ñembohekorã

i18n:
  fromTo:
    en: zh

Ehechamína pe ñembohasa ñemboheko i18