Განლაგება Და Ონლაინ
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
დირექტორიას.
dev.yml
და main.yml
არის ნაგულისხმევი კონფიგურაციები.
dev
არის development
-ის აბრევიატურა, რომელიც მიუთითებს განვითარების გარემოზე, რომელიც გამოიყენება ადგილობრივი გადახედვისთვის და ასევე არის ნაგულისხმევი კონფიგურაციის ფაილი.
ol
არის online
-ის აბრევიატურა, რომელიც -n
ონლაინ გარემოზე, რომელიც გამოიყენება ოფიციალური გამოშვებისთვის npm
თქვენ ასევე შეგიძლიათ შექმნათ სხვა კონფიგურაციის ფაილები გამოიყენეთ --htm_conf
ბრძანების სტრიქონზე, რათა მიუთითოთ გამოსაყენებელი კონფიგურაციის ფაილის სახელი:
მაგალითად:
i18n.site --htm_conf dist --save
აქ --save
წარმოადგენს განახლების გამოშვების ვერსიის ნომერს.
შინაარსის გამოქვეყნება npmjs.com-ზე
შიგთავსის npmjs.com არის რეკომენდებული ნაგულისხმევი გადაწყვეტა (იხ . მაღალი ხელმისაწვდომობა ).
npm & Პოსტი
დააინსტალირეთ nodejs
, შედით npm login
ით.
შეცვალეთ md/.i18n/htm/main.yml
და შეცვალეთ მნიშვნელობა md:
YOUR_NPM_PACKAGE
npmjs.com როგორც თქვენი საკუთარი npm
პაკეტის სახელი.
შემდეგ შეცვალეთ 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 Გვერდზე
github page
თან cloudflare 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
თქვენ შეგიძლიათ გამოიყენოთ edge computing, რათა გადაწეროთ გზა ერთგვერდიან აპლიკაციებთან ადაპტაციისთვის, მაგალითად, 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
მდე.
გარდა ამისა, იმის გამო, რომ ჩინეთში ღრუბლოვანი გამყიდველების საზღვარგარეთული სატრანსპორტო საფასური შედარებით ძვირია, თუ გსურთ ხარჯების ოპტიმიზაცია, შეგიძლიათ გამოიყენოთ DNS Cloud-ის უფასო გეოგრაფიული გარჩევადობა და Cloudflare for SaaS -ის მორგებული დომენის სახელი (როგორც ნაჩვენებია ქვემოთ). მოძრაობის გადამისამართება──სატრანსპორტო მარშრუტი მატერიკულ ჩინეთში Baidu Cloud CDN
, საერთაშორისო ტრაფიკი მიდის cloudflare .
განლაგების ოპტიმიზაციის ეს გადაწყვეტილებები უფრო რთულია და მომავალში ცალკე თავებში იქნება წარმოდგენილი.
Ზოგადი Დომენის Სახელის Გადამისამართება
თუ თქვენ იყენებთ i18n.site
ვებსაიტის გენერირებისთვის, როგორც თქვენს მთავარ ვებსაიტად, ჩვეულებრივ უნდა დააკონფიგურიროთ პან-დომენის გადამისამართება, ანუ გადამისამართოთ წვდომა *.xxx.com
-ზე ( www.xxx.com
ჩათვლით) xxx.com
ზე.
ამ მოთხოვნის მიღწევა შესაძლებელია Alibaba Cloud CDN
EdgeScript
( ინგლისური დოკუმენტი / ჩინური დოკუმენტი ) დახმარებით .
დაამატეთ დომენის სახელი CDN Cloud- ში და მიუთითეთ დომენის სახელი *.xxx.com
დან CNAME
მდე Alibaba Cloud CDN
-ში.
მაგალითად, პან-დომენის სახელის გადამისამართების კონფიგურაცია *.i18n.site
-ზე ზემოთ სურათზე არის შემდეგი:
rewrite(concat('https://i18n.site',$uri), 'redirect',301)
Განათავსეთ Nginx-Ით
გთხოვთ, დაამატოთ შემდეგი /root/i18n/md/out/main/htm
server
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
წყარო ენის დირექტორია, რომელიც შეესაბამება en
/ fromTo
.i18n/conf.yml
-ში კონფიგურაციის ფაილს
i18n:
fromTo:
en: zh
გთხოვთ, გაეცნოთ თარგმანის კონფიგურაციას i18