Deployment Ken Online

i18n.site ket mangadaptar ti maymaysa a panid nga arkitektura ti aplikasion , ken ti panid ti iseserrek ti website ken ti linaon ti website ket naipakat nga agwaywayas.

Kalpasan ti panangpataray ti patarus iti ngato, dagiti direktorio htm ken v ket mapataudto iti baba ti direktorio md/out/dev .

Ditoy, dev ket kayatna a sawen a daytoy ket naibangon a naibatay iti .i18n/htm/dev.yml a file ti panagisaad.

dev nga direktorio :

Ti htm a direktorio ket isu ti panid ti iseserrek ti website.

Ti v a direktorio ket aglaon ti linaon ti website nga addaan kadagiti numero ti bersion.

Ti lokal a preview ket saan a maseknan ti numero ti bersion ken kopiaenna amin a papeles iti out/dev/v/0.1.0 a direktorio.

Para iti opisial a pannakairuar, dagiti nabaliwan a papeles ket makopia iti baro a direktorio ti numero ti bersion.

Ibaga Ti File Ti Konfigurasion Nga Addaan Iti -c

Dagiti nadumaduma a file ti panagisaad ket mangpartuat kadagiti maitunos a direktorio iti out a direktorio.

Kas pagarigan, .i18n/htm/main.yml ket mangpartuat ti out/main a direktorio.

dev.yml ken main.yml ti default a konfigurasion.

dev ket ti abbreviation ti development , a mangipakpakita ti aglawlaw ti panagrang-ay, a maus-usar para iti lokal a preview, ken isu pay ti default a file ti panagisaad. ol ket ti abbreviation ti online , a mangipakpakita ti online nga aglawlaw, a maus-usar para iti opisial a pannakairuar Daytoy pay ti default a file ti panagisaad no agus-usar kadagiti parametro ti linia ti bilin -n aginggana ti npm tapno mairuar.

Mabalinmo pay ti mangpartuat kadagiti sabali a file ti panagisaad Usaren --htm_conf iti linia ti bilin tapno mangibaga ti nagan ti file ti panagisaad nga usaren:

Kas pangarigan:

i18n.site --htm_conf dist --save

Ditoy ti --save ket mangibagi ti numero ti bersion ti pannakairuar ti update.

Ipablaak ti linaon iti npmjs.com

Ti panagipablaak ti linaon iti npmjs.com ket isu ti mairekomendar a default a solusion (kitaen ti Front-end High Availability ).

Aglog npm in & Post

I-install nodejs , ag-log in babaen ti npm login .

Urnosen md/.i18n/htm/main.yml ken baliwan ti pateg ti md: YOUR_NPM_PACKAGE a kas ti bukodmo a npm a nagan ti pakete iti npmjs.com

Kalpasanna baliwan ti md/.i18n/htm/main.package.json

Ipataray i18n.site --npm wenno i18n.site -n iti md a direktorio tapno maipatarus ken maipablaak.

No agus-usar ka ti agtultuloy nga aglawlaw ti panagtipon tapno mangipablaak, saan a kasapulan ti mangikabil nodejs Kopiaem laeng dagiti nakalog-in ken dagiti pammalubos ti panagipablaak ~/.npmrc iti aglawlaw.

No baliwam ti nagan ti pakete ti v: iti main.yml , pangngaasim ta siguraduem nga umuna nga ibura .i18n/v/main ken kalpasanna ipablaak daytoy.

Proxy Server Nga Impablaak Ti npm

No dagiti agar-aramat idiay nangruna a Tsina ket makasabetda kadagiti parikut ti network ken dida makaipablaak npm a pakete, mabalinda nga ikeddeng ti aglawlaw a variable https_proxy tapno mangikonfigura ti proxy server.

No ipapan a ti puerto ti proxy server mo ket 7890 , mabalinmo nga isurat:

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

Self-Hosted a Linaon

No kayatmo a self-host ti linaon, umuna nga i-edit md/.i18n/htm/main.yml ken baliwam v: //unpkg.com/i18n.site iti URL prefix-mo, kas iti v: //i18n-v.xxx.com .

Iserrek ti md a direktorio ken agtaray

i18n.site --htm_conf ol --save

wenno abbreviation

i18n.site -c ol -s

Kalpasanna, ikonfigura ti linaon iti md/out/main/v a direktorio iti dalan ti pangrugian ti URL a naikeddeng iti v: .

Kamaudiananna, ikonfigura ti oras ti cache ti dalan nga agpatingga iti /.v aginggana iti 1s , no saan ti baro a nairuar a linaon ket saan a mabalin a dagus a mastrek.

Ti oras ti cache para kadagiti sabali a dalan ket mabalin a maikeddeng iti maysa a tawen wenno ad-adu pay tapno mangkissay kadagiti saan a kasapulan a kiddaw.

Host Ti Linaon Ti s3

Tapno ag-self-host ti linaon, malaksid ti panagusar ti bukodmo a serbidor, CDN sabali pay a gagangay a pagpilian ket ti panagusar S3 +

Mabalinmo nga usaren rclone tapno aglog-in iti S3 a serbidor, kalpasanna kitaen ken baliwan ti sumaganad nga iskrip, ken kopiaen laeng dagiti inkremental a panagbalbaliw iti S3 para iti tunggal maysa a pannakairuar.

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

Laglagipem nga ikonfigura CDN tapno ti oras ti cache ti dalan nga agpatingga iti /.v ket 1s , no saan ti baro a nairuar a linaon ket saan a mabalin a dagus a mastrek.

Ipablaak Ti Website

Mabalin nga i-deploy ti website iti sadinoman github page ken cloudflare page ket nasayaat a pili.

Gapu ta ti website ket agus-usar ti maymaysa a panid nga arkitektura ti aplikasion , laglagipen nga isurat manen dagiti dalan ti URL nga awan ti linaon ti . aginggana ti index.html .

Ti panid ti iseserrek ti website ket kasapulan laeng a maminsan a maipakat, ken saan a kasapulan a maipakat manen ti panid ti iseserrek ti website para kadagiti sumaganad a panagpabaro ti linaon.

I-Deploy Iti Panid Ti github

Umuna nga i-klik github tapno mangpartuat ti maysa nga organisasion Ti sumaganad a nagan ti organisasion ket i18n-demo a kas pagarigan.

Kalpasanna mangpartuat ti bodega i18n-demo.github.io iti baba daytoy nga organisasion (pangngaasi a sukatam i18n-demo iti nagan ti organisasion a pinartuatmo):

No maipablaak ti linaon iti napalabas nga artikulo, out/main/htm ti napataud Pangngaasi nga iserrek daytoy a direktorio ken tarayen :

ln -s index.html 404.html

Gapu ta ti github page ket saan a mangsuporta ti panagsurat manen ti dalan ti URL, 404.html ket naus-usar imbes a.

Kalpasanna, tarayen ti sumaganad a bilin iti htm a direktorio (laglagipem a sukatan i18n-demo/i18n-demo.github.io.git iti bukodmo nga adres ti bodega) :

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

Kalpasan ti panangiduron ti kodigo, urayem ti pannakaipakat ti github page tapno sibaballigi nga agtaray (kas naipakita iti baba) sakbay a makastrekka iti daytoy.

Para iti panid ti demo pangngaasiyo ta kitaenyo ti:

https://i18n-demo.github.io

I-Deploy Iti Panid Ti cloudflare

cloudflare page github page

Ti pannakaipakat ti cloudflare page ket kadawyan a naibatay iti pannakaipakat ti github page iti ngato.

Mangaramid ti proyekto ken igalut ti i18n-demo.github.io a bodega iti ngato.

Ti proseso ket naipakita iti pigura iti baba:

Pangngaasi nga i-klik ti Add Account tapno maited ti akses iti organisasion i18n-demo .

No naisinggalutmo ti bodega ti sabali nga organisasion, mabalin a kasapulam nga i-klik Add Account iti mamindua tapno mamindua nga autorisaran sakbay a maiparang ti baro nga organisasion.

Sumaganad, pilien ti bodega i18n-demo.github.io , kalpasanna i-klik ti Begin setup , ken usaren dagiti default a pateg para kadagiti sumaganad nga addang.

Kalpasan ti panangigalut iti umuna a gundaway, masapul nga agurayka iti sumagmamano a minuto sakbay a makastrekka iti dayta.

Kalpasan ti pannakaipakat, mabalinmo nga i-bind ti kostumbre a nagan ti domain.

Kalpasan ti panangisilpo ti kostumbre a nagan ti dominio, pangngaasi a mapan iti nagan ti dominio tapno mangikonfigura ti panagsurat manen ti dalan ti maymaysa a panid nga aplikasion, a kas naipakita iti baba:

Dagiti pagannurotan iti ladawan iti ngato ket kastoy Pangngaasi a sukatan i18n.site iti umuna a linia iti baba iti nagan ti domain a naigalutmo.

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

Iti pay maipatinayon, pangngaasi nga ikonfigura dagiti pagalagadan ti cache, a kas naipakita iti baba, ken ikeddeng ti kapaut ti cache iti maysa a bulan.

Pangngaasi a baliwan ti panagtunos ti nagan ti domain iti maikadua nga addang iti ladawan iti ngato iti nagan ti domain a binilidam.

Panag-Optimisar Iti Pannakaipakat Ti Website Iti Mainland China

No kayatmo ti makagun-od iti nasaysayaat a panagaramid ti aksesibilidad iti aglawlaw ti network ti mainland China, pangngaasim ta irehistrom nga umuna ti nagan ti domain .

Kalpasanna, usaren ti pagipempenan ti banag dagiti aglaklako iti ulep iti mainland China + I-deploy ti sumaganad a linaon CDN out/main/htm

Mabalinmo nga usaren ti edge computing tapno isurat manen ti dalan tapno makibagay kadagiti agmaymaysa a panid nga aplikasion Kas pagarigan, ti Baidu Smart Cloud CDN ket mabalin a maikonfigura a kastoy:

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
  // Mabalinmo nga ikeddeng ti ulo ti sungbat tapno ag-debug ti rimmuar, a kas ti out.XXX = 'MSG';
})

Gapu ta ti rekord MX ken rekord CNAME ket saan a mabalin nga agbiag a sangsangkamaysa, no CNAME A umawat kadagiti email ti nagan ti domain iti aggigiddan, kasapulam ti makitinnulong iti cname_flatten

Mainayon pay, gapu ta dagiti singir ti trapiko iti ballasiw-taaw dagiti aglaklako iti ulep iti mainland China ket relatibo a nangina, no kayatmo nga optimize dagiti gastos, mabalinmo nga usaren ti Huawei DNS 's libre a heograpiko a resolusion ken Cloudflare for SaaS 's custom domain name (kas naipakita iti baba) tapno maragpat traffic diversion──Panagruta ti trapiko iti mainland China Baidu Cloud CDN , internasional a trapiko mapan cloudflare .

Dagitoy a solusion ti deployment optimization ket ad-adda a komplikado ken maiyam-ammo kadagiti agsina a kapitulo iti masakbayan.

Generiko a Panagiturong Manen Ti Nagan Ti Dominio

No usarem i18n.site tapno mangpataud ti website a kas ti kangrunaan a websitemo, kadawyan a kasapulam nga ikonfigura ti pan-domain a panangiturong manen, kayatna a sawen, iturong manen ti akses iti *.xxx.com (agraman ti www.xxx.com ) iti xxx.com .

Daytoy a kasapulan ket mabalin a maragpat babaen ti tulong ti Alibaba Cloud CDN EdgeScript ( Ingles a dokumento / Insik a dokumento ) .

Inayon ti nagan ti domain iti Alibaba CDN ken itudo ti nagan ti domain *.xxx.com agingga iti CNAME iti Alibaba Cloud CDN .

Kas pagarigan, ti pan-domain name redirection configuration ti *.i18n.site iti ladawan iti ngato ket kas ti sumaganad:

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

I-Deploy Ti nginx

Pangngaasi nga inayon ti panagisaad a kapada ti out/main/htm iti server a parapo ti nginx /root/i18n/md/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;
  }
}

Maibatay Iti github action Nga Agtultuloy a Panagtipon

Mabalinmo a kitaen dagiti sumaganad tapno maikonfigura ti github action mo :

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

Kas makita iti panagisaad, daytoy nga ayus ti trabaho ket maitignay no mangiduron iti sanga main ken sanga dist .

Ti panagayus ti trabaho ket agusarto ti file ti panagisaad a maitunos iti nagan ti sanga tapno maipablaak ti dokumento, .i18n/htm/main.yml ken .i18n/htm/dist.yml ket mausarto a kas ti panagipablaak a panagisaad a nagsasaruno.

Irekomendarmi dagiti sumaganad a kasayaatan nga aramid para iti proseso ti pannakairuar ti dokumento:

No dagiti panagbalbaliw ket maiduron iti sanga main , ti dokumento ket maitrigger a maibangon ken maipakat iti estasion ti preview (ti estasion ti preview ket magun-od github page ).

Kalpasan ti panangpasingked nga umiso ti dokumento iti site ti preview, ti kodigo ket maitipon ken maiduron iti sanga dist , ken ti opisial a panagbangon ken pannakaipakat ket mapan iti online.

Siempre, ti panangipatungpal iti proseso iti ngato ket kasapulan ti panagsurat iti ad-adu a konfigurasion.

Mabalinmo a kitaen ti aktual a proyekto github.com/fcdoc/doc iti panagiskrip ti panagayus ti trabaho.

secrets.I18N_SITE_TOKEN ken secrets.NPM_TOKEN iti panagisaad ket kasapulan a mangikonfigura kadagiti nalimed a variable iti batayan ti kodigo.

I18N_SITE_TOKEN -od ti i18n.site/token

NPM_TOKEN ket ti token ti panagipablaak ti pakete npm iti panagisaad ti Bisitaen ti npmjs.com

Estruktura Ti Direktorio

public

Dagiti estatiko a file ti website, kas iti favicon.ico , robots.txt , kdpy.

Dagiti file ti icon ditoy ket mabalin a mapataud babaen ti realfavicongenerator.net

.i18n

Iti baba ti .i18n a direktorio ket dagiti file ti panagisaad, cache ti panagipatarus, kdpy ti i18n.site Kitaen ti sumaganad a kapitulo a "Panagkonfigura" para kadagiti detalye.

en

Direktorio ti taudan a pagsasao, a maitunos iti en ti fromTo iti .i18n/conf.yml a file ti panagisaad

i18n:
  fromTo:
    en: zh

Pangngaasi a kitaen ti konfigurasion ti panagipatarus i18