Жайгаштыруу Жана Онлайн

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 npm бул online дин кыскартылышы, ал расмий релиз үчүн колдонулган онлайн чөйрөнү -n .

Башка конфигурация файлдарын түзө аласыз, колдонуу үчүн конфигурация файлынын атын көрсөтүү үчүн буйрук сабында --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.yml v: пакеттин атын өзгөртсөңүз, адегенде .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 серверине кирүү үчүн колдонсоңуз rclone , андан кийин төмөнкү скриптке кайрылыңыз жана өзгөртө аласыз жана ар бир чыгарылыш үчүн кошумча өзгөртүүлөрдү S3 гана көчүрсөңүз болот.

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 Баракчасына Жайгаштыруу

Адегенде i18n-demo github үчүн бул жерди басыңыз .

Андан кийин бул уюмдун алдында кампа 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 Барагында Жайгаштыруу

cloudflare page менен салыштырганда, ал github 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_flatten CNAME деңгээлге A рекордго чейин иштешиңиз керек.

Кошумчалай кетсек, материктик Кытайдагы булут сатуучуларынын чет элдик трафик төлөмдөрү салыштырмалуу кымбат болгондуктан, эгер сиз чыгымдарды оптималдаштырууну кааласаңыз, ага жетүү үчүн Huawei DNS акысыз географиялык резолюциясын жана Cloudflare for SaaS ыңгайлаштырылган домен атын (төмөндө көрсөтүлгөндөй) колдонсоңуз болот трафиктин диверсиясы──Материк Кытайдагы трафик маршруту Baidu Cloud CDN , эл аралык трафик cloudflare .

Бул жайгаштырууну оптималдаштыруу чечимдери татаалыраак жана келечекте өзүнчө бөлүмдөрдө киргизилет.

Жалпы Домендик Аталышты Кайра Багыттоо

Эгер сиз веб-сайтты өзүңүздүн негизги веб-сайтыңыз катары түзүү үчүн i18n.site колдонсоңуз, адатта пан-доменди кайра багыттоону конфигурациялашыңыз керек, башкача айтканда, *.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 Менен Жайгаштыруу

Сураныч, server out/main/htm төмөнкүгө окшош /root/i18n/md/out/main/htm кошуңуз 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 Үзгүлтүксүз Интеграцияга Негизделген

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