ការដាក់ឱ្យប្រើប្រាស់ និងតាមអ៊ីនធឺណិត
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 --npm
ឬ i18n.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