Yerləşdirmə Və Onlayn
i18n.site
tək səhifəlik proqram arxitekturasını qəbul edir və vebsayta giriş səhifəsi və vebsayt məzmunu müstəqil şəkildə yerləşdirilir.
Yuxarıdakı tərcüməni yerinə yetirdikdən sonra md/out/dev
kataloqu altında htm
və v
qovluqları yaradılacaq.
Burada dev
onun .i18n/htm/dev.yml
konfiqurasiya faylı əsasında qurulduğunu bildirir.
dev
kataloqu :
htm
kataloqu veb-saytın giriş səhifəsidir.
v
qovluğunda versiya nömrələri olan vebsayt məzmunu var.
Yerli baxış versiya nömrəsinə əhəmiyyət vermir və bütün faylları out/dev/v/0.1.0
qovluğuna köçürür.
Rəsmi buraxılış üçün dəyişdirilmiş fayllar yeni versiya nömrəsi kataloquna kopyalanacaq.
-c
Ilə Konfiqurasiya Faylını Göstərin
Müxtəlif konfiqurasiya faylları out
qovluğunda müvafiq qovluqlar yaradacaq.
Məsələn, .i18n/htm/main.yml
out/main
kataloqunu yaradacaq.
dev.yml
və main.yml
standart konfiqurasiyalardır.
dev
yerli önizləmə üçün istifadə olunan inkişaf mühitini göstərən development
qısaltmasıdır və eyni zamanda standart konfiqurasiya faylıdır.
ol
rəsmi buraxılış üçün istifadə edilən onlayn npm
-n
edən online
-in qısaltmasıdır.
Siz həmçinin digər konfiqurasiya faylları yarada bilərsiniz --htm_conf
məsələn:
i18n.site --htm_conf dist --save
Burada --save
yeniləmə buraxılış versiyası nömrəsini təmsil edir.
Məzmunu npmjs.com saytında dərc edin
Məzmunu dərc npmjs.com tövsiyə olunan defolt həlldir (bax : Ön tərəfdə Yüksək Əlçatımlılıq ).
npm Giriş & Post
nodejs
quraşdırın, npm login
ilə daxil olun.
md/.i18n/htm/main.yml
npmjs.com edin və md:
YOUR_NPM_PACKAGE
öz npm
paket adınız kimi dəyişdirin.
Sonra md/.i18n/htm/main.package.json
dəyişdirin
Tərcümə etmək və dərc etmək üçün md
kataloqunda i18n.site --npm
və ya i18n.site -n
işə salın.
Əgər dərc etmək üçün davamlı inteqrasiya mühitindən istifadə edirsinizsə, nodejs
quraşdırmağa ehtiyac yoxdur. Sadəcə olaraq, daxil olmuş və dərc etmə icazələrini ~/.npmrc
mühitə köçürün.
Əgər v:
də main.yml
paketinin adını dəyişdirsəniz, lütfən , əvvəlcə .i18n/v/main
silib, sonra onu dərc etməyi unutmayın .
npm Tərəfindən Nəşr Olunan Proksi Server
Əgər materik Çindəki istifadəçilər şəbəkə problemləri ilə qarşılaşsalar və npm
paketi dərc edə bilmirlərsə, onlar proksi serveri konfiqurasiya etmək üçün https_proxy
mühit dəyişənini təyin edə bilərlər.
Proksi server portunuzun 7890
olduğunu fərz etsək, yaza bilərsiniz:
https_proxy=http://127.0.0.1:7890 i18n.site -n
Öz-Özünə Yerləşdirilən Məzmun
Məzmunu özünüzə yerləşdirmək istəyirsinizsə, əvvəlcə md/.i18n/htm/main.yml
redaktə edin və v: //unpkg.com/i18n.site
URL prefiksinizə dəyişdirin, məsələn, v: //i18n-v.xxx.com
.
md
qovluğunu daxil edin və işə salın
i18n.site --htm_conf ol --save
və ya abbreviatura
i18n.site -c ol -s
Sonra md/out/main/v
qovluğundakı məzmunu v:
də təyin edilmiş URL prefiks yoluna konfiqurasiya edin.
Nəhayət, /.v
dan 1s
ə qədər bitən yolun keş vaxtını konfiqurasiya edin , əks halda yeni buraxılmış məzmuna dərhal daxil olmaq mümkün olmayacaq.
Lazımsız sorğuları azaltmaq üçün digər yollar üçün keş vaxtı bir il və ya daha çox müddətə təyin edilə bilər.
Məzmunu S3-Ə Yerləşdirin
Öz serverinizdən istifadə etməklə yanaşı, məzmunu özünə yerləşdirmək üçün başqa CDN
ümumi seçim S3
+ istifadə etməkdir.
Siz S3
serverinə daxil olmaq üçün rclone edə bilərsiniz, sonra aşağıdakı skriptə müraciət edə və onu dəyişdirə bilərsiniz və hər buraxılış üçün artımlı dəyişiklikləri yalnız S3
-ə köçürə bilərsiniz.
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
konfiqurasiya etməyi unutmayın ki, /.v
ilə bitən yolun keş vaxtı 1s
olsun, əks halda yeni buraxılmış məzmuna dərhal daxil olmaq mümkün olmayacaq.
Internet Saytını Dərc Edin
Veb sayt hər yerdə yerləşdirilə bilər github page cloudflare page yaxşı seçimdir.
Veb sayt tək səhifəlik proqram arxitekturasından istifadə etdiyi üçün .
dan index.html
ə qədər olmayan URL yollarını yenidən yazmağı unutmayın.
Veb sayta giriş səhifəsi yalnız bir dəfə yerləşdirilməlidir və sonrakı məzmun yeniləmələri üçün vebsayt giriş səhifəsini yenidən yerləşdirməyə ehtiyac yoxdur.
github Səhifəsində Yerləşdirin
Təşkilat yaratmaq üçün əvvəlcə github klikləyin . Aşağıdakı təşkilat adı nümunə olaraq i18n-demo
dır.
Sonra bu təşkilat altında i18n-demo.github.io
anbar yaradın (zəhmət olmasa i18n-demo
yaratdığınız təşkilat adı ilə əvəz edin):
Əvvəlki məqalədəki məzmunu dərc edərkən, out/main/htm
yaradıldı. Zəhmət olmasa bu kataloqu daxil edin və işə salın :
ln -s index.html 404.html
github page
URL yolunun yenidən yazılmasını dəstəkləmədiyi üçün əvəzinə 404.html
istifadə olunur.
Sonra htm
qovluğunda aşağıdakı əmri yerinə yetirin ( i18n-demo/i18n-demo.github.io.git
öz anbar ünvanınızla əvəz etməyi unutmayın) :
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
Kodu itələdikdən sonra ona daxil olmaq üçün github page
-ın uğurla işə salınmasını gözləyin (aşağıda göstərildiyi kimi).
Demo səhifəsi üçün baxın:
https://i18n-demo.github.io
cloudflare Səhifəsində Yerləşdirin
cloudflare page ilə müqayisədə, yolun yenidən yazılmasını təmin edir və materik Çin üçün daha əlverişlidir və istifadə github page
tövsiyə olunur.
cloudflare page
-ın yerləşdirilməsi adətən yuxarıdakı github page
in yerləşdirilməsinə əsaslanır.
Layihə yaradın və yuxarıdakı i18n-demo.github.io
anbarını bağlayın.
Proses aşağıdakı şəkildə göstərilmişdir:
i18n-demo
təşkilata giriş icazəsi vermək üçün Add Account
üzərinə klikləyin.
Əgər siz başqa bir təşkilatın anbarını bağlamısınızsa, yeni təşkilat göstərilməzdən əvvəl iki dəfə icazə vermək üçün Add Account
iki dəfə klikləməlisiniz.
Sonra, anbar i18n-demo.github.io
seçin, sonra Begin setup
düyməsini basın və sonrakı addımlar üçün standart dəyərlərdən istifadə edin.
İlk dəfə bağladıqdan sonra ona daxil olmaq üçün bir neçə dəqiqə gözləmək lazımdır.
Yerləşdirmədən sonra xüsusi bir domen adını bağlaya bilərsiniz.
Fərdi domen adını bağladıqdan sonra, aşağıda göstərildiyi kimi tək səhifəlik tətbiqin yolunun yenidən yazılmasını konfiqurasiya etmək üçün domen adına keçin:
Yuxarıdakı şəkildəki qaydalar aşağıdakı kimidir, lütfən, aşağıdakı birinci sətirdəki i18n.site
bağladığınız domen adı ilə əvəz edin.
(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")
)
Bundan əlavə, lütfən, keş qaydalarını aşağıda göstərildiyi kimi konfiqurasiya edin və keş müddətini bir aya təyin edin.
Zəhmət olmasa yuxarıdakı şəkildəki ikinci addımda uyğun gələn domen adını bağladığınız domen adına dəyişdirin.
Materik Çində Veb Sayt Yerləşdirilməsinin Optimallaşdırılması
Əgər siz materik Çinin şəbəkə mühitində daha yaxşı əlçatanlıq performansı əldə etmək istəyirsinizsə, lütfən, əvvəlcə domen adını qeydiyyatdan keçirin .
Sonra, materik Çindəki bulud satıcılarının obyekt yaddaşından istifadə edin CDN
Aşağıdakı məzmunu yerləşdirin out/main/htm
+
Tək səhifəli proqramlara uyğunlaşma yolunu yenidən yazmaq üçün kənar hesablamadan istifadə edə bilərsiniz. Məsələn, Baidu Smart Cloud CDN
belə konfiqurasiya edilə bilər:
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
// Cavab başlıqları çıxışı sazlamaq üçün təyin edilə bilər, məsələn out.XXX = 'MSG';
})
Rekord MX
və rekord CNAME
eyni vaxtda mövcud ola bilmədiyi üçün domen adı e-poçtlarını eyni vaxtda almaq istəyirsinizsə, CNAME
A
qədər cname_flatten əməkdaşlıq etməlisiniz.
Bundan əlavə, materik Çində bulud satıcılarının xaricdəki trafik ödənişləri nisbətən baha olduğundan, xərcləri optimallaşdırmaq istəyirsinizsə, nail olmaq üçün DNS Cloud-un pulsuz coğrafi ayırdetmə qabiliyyətindən və Cloudflare for SaaS xüsusi domen adından (aşağıda göstərildiyi kimi) istifadə edə bilərsiniz trafikin yönləndirilməsi──Materik Çində trafik marşrutu Baidu Cloud CDN
, beynəlxalq trafik cloudflare gedir.
Bu yerləşdirmənin optimallaşdırılması həlləri daha mürəkkəbdir və gələcəkdə ayrı-ayrı fəsillərdə təqdim olunacaq.
Ümumi Domen Adının Yönləndirilməsi
Əsas veb saytınız kimi veb sayt yaratmaq üçün i18n.site
istifadə edirsinizsə, adətən pan-domen yönləndirməsini konfiqurasiya etməlisiniz, yəni girişi *.xxx.com
-ə ( www.xxx.com
daxil olmaqla) xxx.com
ə yönləndirin.
Bu tələb Alibaba Cloud CDN
EdgeScript
( İngilis sənədi / Çin sənədi ) köməyi ilə əldə edilə bilər.
CDN Cloud -da domen adını əlavə edin və Alibaba Cloud CDN
də domen adını *.xxx.com
dan CNAME
yə yönəldin.
Məsələn, yuxarıdakı şəkildəki *.i18n.site
-ın pan-domen adının yönləndirmə konfiqurasiyası aşağıdakı kimidir:
rewrite(concat('https://i18n.site',$uri), 'redirect',301)
nginx Ilə Yerləşdirin
Lütfən !-in server
paraqrafında /root/i18n/md/out/main/htm
kimi konfiqurasiya out/main/htm
edin 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
Davamlı Inteqrasiyaya Əsaslanır
github action
-ı konfiqurasiya etmək üçün aşağıdakılara müraciət edə bilərsiniz:
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 }}
Konfiqurasiyadan göründüyü kimi, bu iş axını budaq main
və budaq dist
-ə itələdikdə işə salınır.
İş axını sənədi dərc etmək üçün filial adına uyğun konfiqurasiya faylından istifadə edəcək, burada müvafiq olaraq nəşr konfiqurasiyası kimi .i18n/htm/main.yml
və .i18n/htm/dist.yml
istifadə olunacaq.
Sənədin buraxılması prosesi üçün aşağıdakı ən yaxşı təcrübələri tövsiyə edirik:
Dəyişikliklər filial main
a köçürüldükdə, sənəd qurulmağa və ilkin baxış stansiyasına yerləşdirilməyə başlayır (öncədən baxış stansiyası mövcuddur github page ).
Sənədin ilkin baxış saytında düzgün olduğunu təsdiq etdikdən sonra kod birləşdiriləcək və dist
filialına köçürüləcək və rəsmi quraşdırma və yerləşdirmə onlayn olacaq.
Əlbəttə ki, yuxarıda göstərilən prosesin həyata keçirilməsi daha çox konfiqurasiyanın yazılmasını tələb edir.
İş axını skripti üçün faktiki layihəyə müraciət edə bilərsiniz github.com/fcdoc/doc
Konfiqurasiyada secrets.I18N_SITE_TOKEN
və secrets.NPM_TOKEN
kod bazasında gizli dəyişənləri konfiqurasiya etməyi tələb edir.
I18N_SITE_TOKEN
alın i18n.site/token
NPM_TOKEN
konfiqurasiyada npm
paketin yayım nişanıdır və dərc icazələri ilə npmjs.com yaradın (aşağıda göstərildiyi kimi).
Kataloq Quruluşu
public
Veb saytın statik faylları, məsələn, favicon.ico
, robots.txt
və s.
Buradakı ikon faylları ilə yaradıla bilər realfavicongenerator.net
.i18n
.i18n
kataloqunun altında i18n.site
in konfiqurasiya faylları, tərcümə keşi və s. var. Təfərrüatlar üçün növbəti "Konfiqurasiya" fəslinə baxın.
en
.i18n/conf.yml
konfiqurasiya faylından fromTo
-dən en
nə uyğun gələn mənbə dil kataloqu
i18n:
fromTo:
en: zh
Zəhmət olmasa tərcümənin konfiqurasiyasına baxın i18