Орналастыру Және Онлайн

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 мәнін өңдеңіз және md: YOUR_NPM_PACKAGE npmjs.com өзіңіздің 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 Бетінде Орналастыру

Ұйым құру үшін алдымен осы жерді 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 деңгейге cname_flatten A жазбаға дейін жұмыс істеуіңіз керек.

Бұған қоса, материктік Қытайдағы бұлтты жеткізушілердің шетелдегі трафик төлемдері салыстырмалы түрде қымбат болғандықтан, шығындарды оңтайландырғыңыз келсе, оған қол жеткізу үшін Huawei Cloud тегін географиялық 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