Байрлуулалт Болон Онлайн

i18n.site нэг хуудас програмын архитектурыг ашигладаг бөгөөд вэбсайтын нэвтрэх хуудас болон вэбсайтын агуулгыг бие даан байрлуулдаг.

Дээрх орчуулгыг ажиллуулсны дараа md/out/dev лавлах дор htm ба v лавлахууд үүснэ.

Энд dev гэдэг нь .i18n/htm/dev.yml тохиргооны файл дээр тулгуурлан бүтээгдсэн гэсэн үг.

dev лавлах :

htm лавлах нь вэб хуудас руу орох хуудас юм.

v лавлах нь хувилбарын дугаар бүхий вэбсайтын агуулгыг агуулдаг.

Орон нутгийн урьдчилан үзэх нь хувилбарын дугаарыг үл тоомсорлож, бүх файлыг out/dev/v/0.1.0 сан руу хуулах болно.

Албан ёсны хувилбар гаргахын тулд өөрчлөгдсөн файлуудыг шинэ хувилбарын дугаарын лавлах руу хуулна.

Тохируулгын Файлыг -c -Ээр Зааж Өгнө Үү

Өөр өөр тохиргооны файлууд нь out директорт харгалзах сангуудыг үүсгэнэ.

Жишээлбэл, .i18n/htm/main.yml out/main санг үүсгэнэ.

dev.yml ба main.yml нь анхдагч тохиргоо юм.

dev нь development -ийн товчлол бөгөөд хөгжүүлэлтийн орчныг илэрхийлдэг бөгөөд локал урьдчилан үзэхэд ашигладаг бөгөөд мөн анхдагч тохиргооны файл юм. ol нь online гэсэн товчлол бөгөөд албан ёсны хувилбарыг гаргахад ашигладаг бөгөөд энэ нь мөн -n оос npm хүртэлх командын мөрийн параметрүүдийг гаргахад өгөгдмөл тохиргооны файл юм.

Та мөн ашиглах тохиргооны файлын нэрийг зааж өгөхийн тулд тушаалын мөрөнд --htm_conf ашиглан бусад тохиргооны файлуудыг үүсгэж болно.

жишээ нь:

i18n.site --htm_conf dist --save

Энд --save шинэчлэлтийн хувилбарын дугаарыг илэрхийлнэ.

npmjs.com дээр контент нийтлэх

npmjs.com агуулгыг нийтлэх нь санал болгож буй өгөгдмөл шийдэл юм ( Front end High Availability-г үзнэ үү).

npm & Нийтлэл

nodejs суулгаад npm login ээр нэвтэрнэ үү.

md/.i18n/htm/main.yml npmjs.com , md: YOUR_NPM_PACKAGE -ын утгыг өөрийн npm багцын нэрээр өөрчилнө.

Дараа нь md/.i18n/htm/main.package.json өөрчил

Орчуулах, нийтлэхийн тулд md лавлахаас i18n.site --npm эсвэл i18n.site -n ажиллуул.

Хэрэв та нийтлэхийн тулд тасралтгүй интеграцийн орчин ашигладаг бол nodejs суулгах шаардлагагүй. Зүгээр л нэвтэрсэн болон нийтлэх зөвшөөрлийг ~/.npmrc орчинд хуулна уу.

Хэрэв та main.ymlv: гэсэн багцын нэрийг өөрчилсөн бол эхлээд .i18n/v/main устгаад дараа нь нийтлэхээ мартуузай .

npm Нийтэлсэн Прокси Сервер

Эх газрын Хятад дахь хэрэглэгчид сүлжээний асуудалтай тулгараад npm багцыг нийтлэх боломжгүй бол тэд прокси серверийг тохируулахын тулд орчны хувьсагч https_proxy тохируулж болно.

Таны прокси серверийн порт 7890 байна гэж үзвэл та дараахийг бичиж болно:

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

Өөрөө Байршуулсан Контент

Хэрэв та агуулгыг өөрөө байршуулахыг хүсвэл эхлээд md/.i18n/htm/main.yml засаад v: //unpkg.com/i18n.site URL угтвар болгон өөрчил, жишээ нь v: //i18n-v.xxx.com .

md лавлахыг оруулаад ажиллуулна уу

i18n.site --htm_conf ol --save

эсвэл товчлол

i18n.site -c ol -s

Дараа нь md/out/main/v лавлах дахь контентыг v: -д тохируулсан URL угтварын замд тохируулна уу.

Эцэст нь /.v ээс 1s ээр төгссөн замын кэш цагийг тохируулна уу , эс тэгвээс шинээр гаргасан контентод шууд хандах боломжгүй.

Шаардлагагүй хүсэлтийг багасгахын тулд бусад замуудын кэш хугацааг нэг жил ба түүнээс дээш хугацаагаар тохируулж болно.

S3-Д Агуулгыг Байршуулах

Өөрийн серверийг ашиглахаас гадна өөр нэг нийтлэг сонголт бол S3 CDN + явдал юм.

Та S3 серверт нэвтэрч, дараа нь дараах скриптийг лавлаж, өөрчлөх боломжтой бөгөөд хувилбар бүрд зөвхөн нэмэгдүүлсэн өөрчлөлтийг S3 болгож хуулж rclone .

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

/.v -ээр төгссөн замын кэш хугацаа 1s байхаар CDN тохируулахаа бүү мартаарай, эс бөгөөс шинээр гаргасан контент руу шууд хандах боломжгүй.

Вэб Сайт Нийтлэх

Вэбсайтыг хаана ч байршуулах боломжтой github page cloudflare page нь сайн сонголт юм.

Вэбсайт нь нэг хуудас програмын архитектурыг ашигладаг тул . -ээс index.html агуулаагүй URL замыг дахин бичихээ бүү мартаарай.

Вэбсайтад нэвтрэх хуудсыг зөвхөн нэг удаа байршуулах шаардлагатай бөгөөд дараагийн агуулгын шинэчлэлтийн хувьд вэбсайтын нэвтрэх хуудсыг дахин байршуулах шаардлагагүй.

github Хуудсан Дээр Байршуулах

Байгууллага үүсгэхийн тулд эхлээд энд дарна github i18n-demo

Дараа нь энэ байгууллагын доор агуулах i18n-demo.github.io үүсгэнэ үү ( i18n-demo үүсгэсэн байгууллагын нэрээр солино уу):

Өмнөх нийтлэл дэх агуулгыг нийтлэх үед out/main/htm үүсгэсэн байна. Энэ лавлахыг оруулаад ажиллуулна уу :

ln -s index.html 404.html

github page URL замыг дахин бичихийг дэмждэггүй тул оронд нь 404.html ашигладаг.

Дараа нь htm санд дараах командыг ажиллуулна уу ( i18n-demo/i18n-demo.github.io.git өөрийн агуулахын хаягаар солихыг санаарай) :

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

Кодыг дарсны дараа github page -г амжилттай ажиллуулахыг хүлээнэ үү (доор үзүүлсэн шиг).

Демо хуудаснаас үзнэ үү:

https://i18n-demo.github.io

cloudflare Хуудсан Дээр Байршуулах

github page тэй cloudflare page энэ нь замыг дахин бичих боломжийг олгодог бөгөөд эх газрын Хятадад илүү ээлтэй бөгөөд ашиглахыг зөвлөж байна.

cloudflare page -ийн байршуулалт нь ихэвчлэн дээрх github page -ийн байршуулалт дээр суурилдаг.

Төсөл үүсгээд дээрх i18n-demo.github.io агуулахыг холбоно уу.

Үйл явцыг доорх зурагт үзүүлэв.

Байгууллага i18n-demo д хандах эрх олгохын тулд Add Account дээр дарна уу.

Хэрэв та өөр байгууллагын агуулахыг хүлээсэн бол шинэ байгууллага гарч ирэхээс өмнө Add Account хоёр удаа дарж зөвшөөрөл өгөх шаардлагатай.

Дараа нь агуулах i18n-demo.github.io сонгоод Begin setup дээр товшоод дараагийн алхмуудад анхдагч утгуудыг ашиглана уу.

Эхний удаад холбогдсоны дараа та нэвтрэхийн өмнө хэдэн минут хүлээх хэрэгтэй.

Байршуулсаны дараа та өөрчлөн домэйн нэрийг холбож болно.

Захиалгат домэйн нэрийг холбосны дараа доор үзүүлсэн шиг нэг хуудас програмын замыг дахин бичихийг тохируулахын тулд домэйн нэр рүү очно уу.

Дээрх зурган дээрх дүрмүүд нь доорх эхний мөрөнд байгаа i18n.site өөрийн холбосон домэйн нэрээр солино уу.

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

Нэмж дурдахад кэшийн дүрмийг доор үзүүлсэн шиг тохируулж, кэш үргэлжлэх хугацааг нэг сар болгож тохируулна уу.

Дээрх зурган дээрх хоёр дахь алхамд тохирох домэйн нэрийг өөрийн холбосон домэйн нэр болгон өөрчилнө үү.

Эх Газрын Хятадад Вэбсайт Байршуулалтыг Оновчтой Болгох

Хэрэв та эх газрын Хятадын сүлжээний орчинд илүү сайн хүртээмжтэй ажиллахыг хүсвэл эхлээд домэйн нэрээ бүртгүүлнэ үү .

Дараа нь эх газрын + дахь үүлэн борлуулагчдын объектын санг ашигла CDN Дараах контентыг байрлуул out/main/htm .

Та нэг хуудасны програмуудад дасан зохицох замыг дахин бичихийн тулд захын тооцооллыг ашиглаж болно. Жишээлбэл, Baidu Smart Cloud CDN дараах байдлаар тохируулж болно.

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
  // Хариултын толгой хэсгийг out.XXX = 'MSG';
})

MX бичлэг болон CNAME бичлэг зэрэг нь зэрэгцэн орших боломжгүй тул хэрэв та домэйн нэрийн имэйлийг нэгэн зэрэг хүлээн авахыг хүсвэл CNAME A скрипттэй хамтран cname_flatten хэрэгтэй.

Нэмж дурдахад, эх газрын Хятад дахь үүлэн борлуулагчдын хилийн чанад дахь замын хөдөлгөөний төлбөр харьцангуй өндөр байдаг тул та зардлаа оновчтой болгохыг хүсвэл Huawei Cloud DNS ийн үнэ төлбөргүй газарзүйн нягтаршил болон Cloudflare for SaaS хувийн домэйн нэрийг (доор үзүүлсэн шиг) ашиглаж болно замын хөдөлгөөнийг өөрчлөх──Эх газрын Хятад дахь замын хөдөлгөөний чиглүүлэлт Baidu Cloud CDN , олон улсын урсгал cloudflare .

Эдгээр байршуулалтыг оновчтой болгох шийдлүүд нь илүү төвөгтэй бөгөөд ирээдүйд тусдаа бүлгүүдэд танилцуулагдах болно.

Ерөнхий Домэйн Нэрийг Дахин Чиглүүлэх

Хэрэв та вэбсайтаа үндсэн вэбсайтаа үүсгэхийн тулд i18n.site ашигладаг бол ихэвчлэн pan-domain дахин чиглүүлэлт, өөрөөр хэлбэл *.xxx.com ээс ( www.xxx.com оруулаад) xxx.com руу дахин чиглүүлэх хандалтыг тохируулах хэрэгтэй.

Энэ шаардлагыг Alibaba Cloud CDN EdgeScript ( Англи баримт бичиг / Хятад баримт бичиг ) -ийн тусламжтайгаар хийж болно.

Alibaba CDN -д домэйн нэрийг нэмж, Alibaba Cloud CDN*.xxx.com -ээс CNAME ыг зааж өгнө үү.

Жишээлбэл, дээрх зурган дээрх пан домэйн нэрийг дахин чиглүүлэх *.i18n.site тохиргоо дараах байдалтай байна.

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

Nginx-Ээр Байрлуулна

nginx -ийн server out/main/htm мөрөнд /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;
  }
}

github action Тасралтгүй Интеграцид Суурилсан

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

Тохиргооноос харахад энэ ажлын урсгал нь салбар main ба dist салбар руу түлхэх үед идэвхждэг.

Ажлын урсгал нь баримт бичгийг нийтлэхийн тулд салбарын нэрэнд харгалзах тохиргооны файлыг ашиглана. Энд .i18n/htm/main.yml ба .i18n/htm/dist.yml нийтлэх тохиргоо болгон ашиглана.

Бид баримт бичгийг гаргах үйл явцад дараах шилдэг туршлагуудыг санал болгож байна.

Өөрчлөлтүүдийг main салбар руу түлхэх үед баримт бичгийг бүтээж, урьдчилан үзэх станцад байршуулна (урьдчилан үзэх станц боломжтой github page ).

Урьдчилан үзэх сайт дээр баримт бичиг зөв эсэхийг баталгаажуулсны дараа кодыг нэгтгэж dist салбар руу түлхэх ба албан ёсны бүтээн байгуулалт, байршуулалт онлайн болно.

Мэдээжийн хэрэг, дээрх үйл явцыг хэрэгжүүлэхийн тулд илүү олон тохиргоог бичих шаардлагатай.

Ажлын урсгалын скриптийн талаар та бодит төсөл рүү хандаж болно github.com/fcdoc/doc

Тохиргооны secrets.I18N_SITE_TOKEN ба secrets.NPM_TOKEN кодын суурь дахь нууц хувьсагчдыг тохируулахыг шаарддаг.

I18N_SITE_TOKEN i18n.site/token

NPM_TOKEN нь тохиргооны npm багцын нийтлэх токен npmjs.com нийтлэх зөвшөөрөлтэй токен үүсгэнэ үү.

Лавлах Бүтэц

public

favicon.ico , robots.txt гэх мэт вэбсайтын статик файлууд.

Энд байгаа дүрс бүхий файлуудыг ашиглан үүсгэж болно realfavicongenerator.net

.i18n

.i18n лавлахын доор i18n.site ийн тохиргооны файлууд, орчуулгын кэш гэх мэт зүйлс байна. Дэлгэрэнгүйг "Тохиргоо" гэсэн дараагийн бүлгээс үзнэ үү.

en

.i18n/conf.yml тохиргооны файлын fromTo -ийн en -т тохирох эх хэлний лавлах

i18n:
  fromTo:
    en: zh

Орчуулгын тохиргооноос харна уу i18