Ontplooiing en Aanlyn
i18n.site
neem 'n enkelbladsy-toepassingsargitektuur aan, en die webwerf-ingangbladsy en webwerf-inhoud word onafhanklik ontplooi.
Nadat die bogenoemde vertaling uitgevoer is, sal gidse htm
en v
onder die md/out/dev
gids gegenereer word.
Hier beteken dev
dat dit gebou is op grond van die .i18n/htm/dev.yml
konfigurasielêer.
dev
gids :
Die htm
gids is die webwerf ingang bladsy.
Die v
gids bevat webwerf-inhoud met weergawenommers.
Plaaslike voorskou gee nie om oor die weergawenommer nie en sal alle lêers na die out/dev/v/0.1.0
gids kopieer.
Vir amptelike vrystelling sal veranderde lêers na die nuwe weergawenommergids gekopieer word.
Spesifiseer Konfigurasielêer Met -c
Verskillende konfigurasielêers sal ooreenstemmende gidse in die out
gids skep.
Byvoorbeeld, .i18n/htm/main.yml
sal die out/main
gids skep.
dev.yml
en main.yml
is die verstekkonfigurasies.
dev
is die afkorting van development
, wat die ontwikkelingsomgewing aandui, wat vir plaaslike voorskou gebruik word, en is ook die verstekkonfigurasielêer.
ol
is die afkorting van online
, wat die aanlyn-omgewing aandui, wat vir amptelike vrystelling gebruik word. Dit is ook die verstekkonfigurasielêer wanneer opdragreëlparameters -n
tot npm
gebruik word om vry te stel.
U kan ook ander konfigurasielêers skep. Gebruik --htm_conf
op die opdragreël om die konfigurasielêernaam te spesifiseer:
byvoorbeeld:
i18n.site --htm_conf dist --save
Hier verteenwoordig --save
die weergawenommer van die opdateringvrystelling.
Publiseer inhoud op npmjs.com
Die publisering van inhoud na npmjs.com
npm Teken in & Plaas
Installeer nodejs
, meld aan met npm login
.
Wysig md/.i18n/htm/main.yml
npmjs.com verander die waarde van md:
YOUR_NPM_PACKAGE
as jou eie npm
pakketnaam.
Verander dan md/.i18n/htm/main.package.json
Begin i18n.site --npm
of i18n.site -n
in die md
gids om te vertaal en te publiseer.
As jy 'n deurlopende integrasie-omgewing gebruik om te publiseer, is dit nie nodig om nodejs
te installeer nie. Kopieer net die aangemelde en publiseringstoestemmings ~/.npmrc
na die omgewing.
As jy die pakketnaam van v:
in main.yml
verander, maak asseblief seker dat jy eers .i18n/v/main
uitvee en dit dan publiseer.
Instaanbediener Gepubliseer Deur npm
As gebruikers op die vasteland van China netwerkprobleme teëkom en nie npm
pakkette kan publiseer nie, kan hulle die omgewingsveranderlike https_proxy
stel om die instaanbediener op te stel.
As jy aanvaar dat jou instaanbedienerpoort 7890
is, kan jy skryf:
https_proxy=http://127.0.0.1:7890 i18n.site -n
Inhoud Wat Self Aangebied Word
As jy die inhoud self wil aanbied, wysig eers md/.i18n/htm/main.yml
en verander v: //unpkg.com/i18n.site
na jou URL-voorvoegsel, soos v: //i18n-v.xxx.com
.
Voer die md
gids in en hardloop
i18n.site --htm_conf ol --save
of afkorting
i18n.site -c ol -s
Stel dan die inhoud in die md/out/main/v
-gids op na die URL-voorvoegselpad wat in v:
gestel is.
Laastens, konfigureer die kastyd van die pad wat eindig op /.v
tot 1s
, anders kan die nuut vrygestelde inhoud nie onmiddellik verkry word nie.
Die kastyd vir ander paaie kan op een jaar of meer gestel word om onnodige versoeke te verminder.
Gasheer Inhoud Aan s3
Benewens die gebruik van jou eie bediener, is ' CDN
ander algemene opsie om inhoud self aan te bied om S3
+ te gebruik.
Jy kan rclone gebruik om aan te meld by die S3
bediener, verwys dan na en wysig die volgende skrif, en kopieer slegs die inkrementele veranderinge na S3
vir elke vrystelling.
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/"
Onthou om CDN
te konfigureer sodat die kastyd van die pad wat op /.v
eindig, 1s
is, anders kan daar nie onmiddellik toegang tot die nuut vrygestelde inhoud verkry word nie.
Webwerf Te Publiseer
Die webwerf kan enige plek ontplooi word github page en cloudflare page is goeie keuses.
Omdat die webwerf 'n enkelbladsy-toepassingsargitektuur gebruik, onthou om URL-paaie wat nie .
tot index.html
bevat nie, te herskryf.
Die webwerf-inskrywingsbladsy hoef net een keer ontplooi te word, en dit is nie nodig om die webwerf-inskrywingsbladsy te herontplooi vir daaropvolgende inhoudopdaterings nie.
Ontplooi Op Github-Bladsy
Klik eers github om 'n organisasie te skep . Die volgende organisasie se naam is i18n-demo
as 'n voorbeeld.
Skep dan pakhuis i18n-demo.github.io
onder hierdie organisasie (vervang asseblief i18n-demo
met die organisasienaam wat jy geskep het):
Wanneer die inhoud in die vorige artikel gepubliseer word, is out/main/htm
gegenereer. Voer asseblief hierdie gids in en hardloop :
ln -s index.html 404.html
Omdat github page
nie URL-pad-herskryf ondersteun nie, 404.html
eerder gebruik.
Voer dan die volgende opdrag in die htm
gids uit (onthou om i18n-demo/i18n-demo.github.io.git
met jou eie pakhuisadres te vervang) :
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
Nadat u die kode gedruk het, wag vir die ontplooiing van github page
om suksesvol te loop (soos hieronder getoon) voordat u toegang daartoe kan verkry.
Vir demo bladsy sien asseblief:
https://i18n-demo.github.io
Ontplooi Op Cloudflare-Bladsy
In cloudflare page met github page
, bied dit padherskrywing en is dit meer vriendelik vir die vasteland van China en is dit meer toeganklik.
Die ontplooiing van cloudflare page
is gewoonlik gebaseer op die ontplooiing van github page
hierbo.
Skep 'n projek en bind die i18n-demo.github.io
pakhuis hierbo.
Die proses word in die onderstaande figuur getoon:
Klik asseblief Add Account
om toegang aan organisasie i18n-demo
te verleen.
As jy die pakhuis van 'n ander organisasie gebind het, moet jy dalk twee keer op Add Account
klik om twee keer te magtig voordat die nuwe organisasie vertoon sal word.
Kies dan pakhuis i18n-demo.github.io
, klik dan Begin setup
, en gebruik die verstekwaardes vir die daaropvolgende stappe.
Nadat jy vir die eerste keer gebind het, moet jy 'n paar minute wag voordat jy toegang daartoe kan kry.
Na ontplooiing kan u 'n pasgemaakte domeinnaam bind.
Nadat u die pasgemaakte domeinnaam gebind het, gaan asseblief na die domeinnaam om die padherskrywing van die enkelbladsy-toepassing op te stel, soos hieronder getoon:
Die reëls in die prentjie hierbo is as volg Vervang asseblief i18n.site
in die eerste reël hieronder met die domeinnaam wat jy gebind het.
(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")
)
Stel ook asseblief die kasreëls op, soos hieronder getoon, en stel die kasduur op een maand.
Verander asseblief die domeinnaam wat in die tweede stap in die prentjie hierbo pas na die domeinnaam wat jy gebind het.
Optimaliseer Webwerf-Ontplooiing Op Die Vasteland Van China
As jy beter toeganklikheidprestasie in die netwerkomgewing van die vasteland van China wil verkry, registreer asseblief eers 'n domeinnaam .
Gebruik dan die objekberging van wolkverkopers op die vasteland van China + Ontplooi die volgende inhoud CDN
out/main/htm
Jy kan edge computing gebruik om die pad te herskryf om aan te pas by enkelbladsy-toepassings Byvoorbeeld, Baidu Smart Cloud CDN
kan soos volg gekonfigureer word:
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
// Antwoordopskrifte kan gestel word om uitvoer te ontfout, soos out.XXX = 'MSG';
})
Omdat rekord MX
en rekord CNAME
nie saam kan bestaan nie, as jy domeinnaam-e-posse op dieselfde tyd wil ontvang, moet jy saamwerk met die cname_flatten tot vlak CNAME
in rekord A
.
Daarbenewens, omdat die oorsese verkeerskoste van wolkverkopers in die vasteland van China relatief duur is, kan jy Huawei DNS se gratis geografiese resolusie en Cloudflare for SaaS se pasgemaakte domeinnaam (soos hieronder getoon) gebruik om koste te optimaliseer verkeersafleiding──Verkeersroetering in die vasteland van China Baidu Cloud CDN
, internasionale verkeer gaan cloudflare .
Hierdie ontplooiingsoptimeringsoplossings is meer kompleks en sal in die toekoms in aparte hoofstukke bekendgestel word.
Generiese Domeinnaam Herleiding
As jy i18n.site
gebruik om 'n webwerf as jou hoofwebwerf te genereer, moet jy gewoonlik pan-domein-herleiding opstel, dit wil sê, herlei toegang na *.xxx.com
(insluitend www.xxx.com
) na xxx.com
.
Hierdie vereiste kan bereik word met behulp van Alibaba Cloud CDN
EdgeScript
( Engelse dokument / Chinese dokument )
Voeg die domeinnaam by in Alibaba CDN en wys die domeinnaam *.xxx.com
na CNAME
in Alibaba Cloud CDN
.
Byvoorbeeld, die pan-domein naam herleiding konfigurasie van *.i18n.site
in die prentjie hierbo is soos volg:
rewrite(concat('https://i18n.site',$uri), 'redirect',301)
Ontplooi Met nginx
Voeg asseblief 'n opstelling soortgelyk aan die volgende in die server
paragraaf van nginx Verander asseblief /root/i18n/md/out/main/htm
na die pad van jou eie projek out/main/htm
:
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;
}
}
Gebaseer Op github action
Deurlopende Integrasie
Jy kan na die volgende verwys om jou github action
op te stel:
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 }}
Soos in die konfigurasie gesien kan word, word hierdie werkvloei geaktiveer wanneer na tak main
en tak dist
gedruk word.
Die werkvloei sal die konfigurasielêer wat ooreenstem met die taknaam gebruik om die dokument te publiseer. Hier sal .i18n/htm/main.yml
en .i18n/htm/dist.yml
onderskeidelik as die publiseringkonfigurasie gebruik word.
Ons beveel die volgende beste praktyke vir die dokumentvrystellingsproses aan:
Wanneer veranderinge na tak main
gedruk word, word die dokument geaktiveer om gebou en ontplooi te word na die voorskoustasie (die voorskoustasie is beskikbaar github page ).
Nadat bevestig is dat die dokument korrek is op die voorskou-werf, sal die kode saamgevoeg word en na tak dist
gedruk word, en die amptelike bou en ontplooiing sal aanlyn gaan.
Natuurlik vereis die implementering van bogenoemde proses die skryf van meer konfigurasies.
Jy kan verwys na die werklike github.com/fcdoc/doc vir werkvloei scripting.
secrets.I18N_SITE_TOKEN
en secrets.NPM_TOKEN
in die konfigurasie vereis dat jy geheime veranderlikes in die kodebasis opstel.
I18N_SITE_TOKEN
i18n.site/token
NPM_TOKEN
is die publikasie-token van pakket npm
in die opstelling Besoek npmjs.com
Gidsstruktuur
public
Statiese lêers van die webwerf, soos favicon.ico
, robots.txt
, ens.
Die ikoonlêers hier kan gegenereer word met realfavicongenerator.net
.i18n
Onder die .i18n
gids is die konfigurasielêers, vertaalkas, ens. van i18n.site
Sien die volgende hoofstuk "Konfigurasie" vir besonderhede.
en
Brontaalgids, wat ooreenstem met en
van fromTo
in .i18n/conf.yml
konfigurasielêer
i18n:
fromTo:
en: zh
Verwys asseblief na die konfigurasie van vertaling i18