ការដាក់ឱ្យប្រើប្រាស់ និងតាមអ៊ីនធឺណិត

i18n.site ទទួលយកស្ថាបត្យកម្ម កម្មវិធីមួយទំព័រ ហើយទំព័រចូលគេហទំព័រ និងខ្លឹមសារគេហទំព័រត្រូវបានដាក់ឱ្យប្រើប្រាស់ដោយឯករាជ្យ។

បន្ទាប់ពីដំណើរការការបកប្រែខាងលើ ថត htm និង v នឹងត្រូវបានបង្កើតនៅក្រោមថត md/out/dev

នៅទីនេះ dev មានន័យថាវាត្រូវបានបង្កើតឡើងដោយផ្អែកលើឯកសារកំណត់រចនាសម្ព័ន្ធ .i18n/htm/dev.yml

dev ថត :

ថត htm គឺជាទំព័រចូលគេហទំព័រ។

ថត v មានមាតិកាគេហទំព័រដែលមានលេខកំណែ។

ការមើលជាមុនក្នុងតំបន់មិនខ្វល់អំពីលេខកំណែទេ ហើយនឹងចម្លងឯកសារទាំងអស់ទៅថត out/dev/v/0.1.0

សម្រាប់ការចេញផ្សាយជាផ្លូវការ ឯកសារដែលបានផ្លាស់ប្តូរនឹងត្រូវបានចម្លងទៅថតលេខកំណែថ្មី។

បញ្ជាក់ឯកសារកំណត់រចនាសម្ព័ន្ធជាមួយ -c

ឯកសារកំណត់រចនាសម្ព័ន្ធផ្សេងគ្នានឹងបង្កើតថតដែលត្រូវគ្នានៅក្នុងថត out

ឧទាហរណ៍ .i18n/htm/main.yml នឹងបង្កើត out/main directory ។

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 ជាឈ្មោះកញ្ចប់ npm ផ្ទាល់ខ្លួនរបស់អ្នកនឹង npmjs.com

បន្ទាប់មកកែប្រែ md/.i18n/htm/main.package.json

ដំណើរការ i18n.site --npmi18n.site -n នៅក្នុងថត md ដើម្បីបកប្រែ និងបោះផ្សាយ។

ប្រសិនបើអ្នកប្រើបរិយាកាសរួមបញ្ចូលជាបន្តបន្ទាប់ដើម្បីបោះពុម្ព នោះមិនចាំបាច់ដំឡើង nodejs ទេ។ គ្រាន់តែចម្លងការអនុញ្ញាតដែលបានចូល និងបោះពុម្ព ~/.npmrc ទៅបរិស្ថាន។

ប្រសិនបើអ្នកកែប្រែឈ្មោះកញ្ចប់ v: ក្នុង main.yml សូម ប្រាកដថាត្រូវលុប .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 ទៅផ្លូវបុព្វបទ URL ដែលកំណត់ក្នុង v:

ជាចុងក្រោយ កំណត់រចនាសម្ព័ន្ធពេលវេលាឃ្លាំងសម្ងាត់នៃផ្លូវដែលបញ្ចប់ដោយ /.v ទៅ 1s បើមិនដូច្នេះទេ មាតិកាដែលបានចេញផ្សាយថ្មីមិនអាចចូលប្រើភ្លាមៗបានទេ។

ពេលវេលាឃ្លាំងសម្ងាត់សម្រាប់ផ្លូវផ្សេងទៀតអាចត្រូវបានកំណត់ទៅមួយឆ្នាំ ឬច្រើនជាងនេះ ដើម្បីកាត់បន្ថយសំណើដែលមិនចាំបាច់។

បង្ហោះមាតិកាទៅ s3

ចំពោះមាតិកាដែលបង្ហោះដោយខ្លួនឯង បន្ថែមពីលើការប្រើប្រាស់ម៉ាស៊ីនមេផ្ទាល់ខ្លួនរបស់អ្នក ជម្រើសទូទៅ CDN គឺត្រូវប្រើ S3 +

អ្នកអាចប្រើ rclone ដើម្បីចូលទៅម៉ាស៊ីនមេ S3 បន្ទាប់មកយោង និងកែប្រែស្គ្រីបខាងក្រោម ហើយចម្លងតែការផ្លាស់ប្តូរបន្ថែមទៅ 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/"

ចងចាំថាត្រូវកំណត់រចនាសម្ព័ន្ធ CDN ដូច្នេះពេលវេលាឃ្លាំងសម្ងាត់នៃផ្លូវដែលបញ្ចប់ដោយ /.v គឺ 1s បើមិនដូច្នេះទេខ្លឹមសារដែលបានចេញផ្សាយថ្មីមិនអាចចូលប្រើភ្លាមៗបានទេ។

គេហទំព័រផ្សព្វផ្សាយ

គេហទំព័រអាចប្រើប្រាស់បានគ្រប់ទីកន្លែង github page និង cloudflare page គឺជាជម្រើសដ៏ល្អ។

ដោយសារគេហទំព័រប្រើស្ថាបត្យកម្ម កម្មវិធីទំព័រតែមួយ សូមចាំថាត្រូវសរសេរឡើងវិញនូវផ្លូវ URL ដែលមិនមានពី . ទៅ index.html

ទំព័រចូលគេហទំព័រត្រូវដាក់ឱ្យប្រើតែម្តងប៉ុណ្ណោះ ហើយមិនចាំបាច់ប្រើទំព័រចូលគេហទំព័រឡើងវិញសម្រាប់ការធ្វើបច្ចុប្បន្នភាពមាតិកាជាបន្តបន្ទាប់នោះទេ។

ដាក់ពង្រាយនៅលើទំព័រ 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

cloudflare page បើប្រៀបធៀបជាមួយ github page វាផ្តល់នូវការសរសេរផ្លូវឡើងវិញ និងមានភាពរួសរាយរាក់ទាក់ជាមួយចិនដីគោក ហើយវាត្រូវបានណែនាំឱ្យប្រើច្រើនជាង។

ការដាក់ពង្រាយ cloudflare page ជាធម្មតាផ្អែកលើការដាក់ពង្រាយ github page ខាងលើ។

បង្កើតគម្រោង និងចងឃ្លាំង i18n-demo.github.io ខាងលើ។

ដំណើរការត្រូវបានបង្ហាញក្នុងរូបភាពខាងក្រោម៖

សូមចុច Add Account ដើម្បីផ្តល់សិទ្ធិចូលទៅកាន់ស្ថាប័ន i18n-demo

ប្រសិនបើអ្នកបានចងឃ្លាំងរបស់អង្គការមួយផ្សេងទៀត អ្នកប្រហែលជាត្រូវចុច 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';
})

ដោយសារតែ record MX និង record CNAME មិនអាចរួមរស់ជាមួយគ្នា CNAME A ប្រសិនបើអ្នកចង់ទទួលបាន domain name emails ក្នុងពេលតែមួយ អ្នកត្រូវសហការជាមួយ cname_flatten

លើសពីនេះ ដោយសារការគិតថ្លៃចរាចរណ៍នៅក្រៅប្រទេសរបស់អ្នកលក់ពពកក្នុងប្រទេសចិនដីគោកមានតម្លៃថ្លៃ ប្រសិនបើអ្នកចង់បង្កើនប្រសិទ្ធភាពការចំណាយ អ្នកអាចប្រើ ដំណោះស្រាយភូមិសាស្ត្រឥតគិតថ្លៃរបស់ Huawei Cloud DNS និងឈ្មោះដែនផ្ទាល់ខ្លួនរបស់ Cloudflare for SaaS (ដូចបង្ហាញខាងក្រោម) ដើម្បីសម្រេចបាន។ ការបង្វែរចរាចរណ៍── ផ្លូវចរាចរណ៍នៅក្នុងប្រទេសចិនដីគោក Baidu Cloud CDN ចរាចរណ៍អន្តរជាតិទៅ cloudflare .

ដំណោះស្រាយបង្កើនប្រសិទ្ធភាពនៃការដាក់ពង្រាយទាំងនេះគឺស្មុគស្មាញជាង ហើយនឹងត្រូវបានណែនាំនៅក្នុងជំពូកដាច់ដោយឡែកនាពេលអនាគត។

ការបញ្ជូនបន្តឈ្មោះដែនទូទៅ

ប្រសិនបើអ្នកប្រើ i18n.site ដើម្បីបង្កើតគេហទំព័រជាគេហទំព័រចម្បងរបស់អ្នក ជាធម្មតាអ្នកត្រូវកំណត់រចនាសម្ព័ន្ធការបញ្ជូនបន្តដែន ពោលគឺប្តូរទិសចូល *.xxx.com (រួមទាំង www.xxx.com ) ទៅ xxx.com

តម្រូវការនេះអាចសម្រេចបានដោយមានជំនួយពី Alibaba Cloud CDN EdgeScript ( ឯកសារភាសាអង់គ្លេស / ឯកសារចិន )

បន្ថែម CDN ដែន *.xxx.com Alibaba CNAME CDN

ឧទាហរណ៍ ការកំណត់ការប្តូរទិសឈ្មោះ pan-domain នៃ *.i18n.site ក្នុងរូបភាពខាងលើមានដូចខាងក្រោម៖

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

ប្រើជាមួយ nginx

សូមបន្ថែម /root/i18n/md/out/main/htm កំណត់ដូចខាងក្រោមក្នុង out/main/htm server នៃ 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 នៅក្នុងការកំណត់រចនាសម្ព័ន្ធ Visit npmjs.com

រចនាសម្ព័ន្ធថត

public

ឯកសារឋិតិវន្តនៃគេហទំព័រ ដូចជា favicon.ico , robots.txt ជាដើម។

ឯកសាររូបតំណាងនៅទីនេះអាចត្រូវបានបង្កើតជាមួយ realfavicongenerator.net

.i18n

នៅក្រោមថតឯកសារ .i18n គឺជាឯកសារកំណត់រចនាសម្ព័ន្ធ ឃ្លាំងសម្ងាត់ការបកប្រែ។ល i18n.site សូមមើលជំពូកបន្ទាប់ "ការកំណត់រចនាសម្ព័ន្ធ" សម្រាប់ព័ត៌មានលម្អិត។

en

ថតភាសាប្រភព ដែលត្រូវគ្នានឹងឯកសារកំណត់រចនាសម្ព័ន្ធ en នៃ fromTo ក្នុង .i18n/conf.yml

i18n:
  fromTo:
    en: zh

សូមមើលការកំណត់រចនាសម្ព័ន្ធនៃការបកប្រែ i18