פריסה ומקוונת
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
ושנה את הערך npmjs.com md:
YOUR_NPM_PACKAGE
כשם חבילה 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
כדי להגדיר את שרת ה-proxy.
בהנחה שיציאת שרת ה-proxy שלך היא 7890
, אתה יכול לכתוב:
https_proxy=http://127.0.0.1:7890 i18n.site -n
תוכן באירוח עצמי
אם אתה רוצה לארח את התוכן בעצמך, תחילה ערוך md/.i18n/htm/main.yml
ושנה v: //unpkg.com/i18n.site
לקידומת כתובת האתר שלך, כגון v: //i18n-v.xxx.com
.
הזן את ספריית md
והפעל
i18n.site --htm_conf ol --save
או קיצור
i18n.site -c ol -s
לאחר מכן, הגדר את התוכן בספריית md/out/main/v
לנתיב קידומת כתובת האתר שהוגדר ב 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';
})
מכיוון שרשומה MX
ורשומה CNAME
אינן יכולות להתקיים במקביל, אם ברצונך לקבל דוא"ל עם שם דומיין בו-זמנית, עליך לשתף פעולה עם cname_flatten לרמה CNAME
לרשומה A
.
בנוסף, מכיוון שחיובי התעבורה בחו"ל של ספקי ענן ביבשת סין יקרים יחסית, אם אתה רוצה לייעל את העלויות, אתה יכול להשתמש DNS הגיאוגרפית החינמית של Huawei Cloud ובשם הדומיין המותאם אישית של Cloudflare for SaaS (כפי שמוצג להלן). הסטת תנועה──ניתוב תנועה ביבשת סין Baidu Cloud CDN
, תנועה בינלאומית עולה cloudflare .
פתרונות אופטימיזציה של פריסה אלה מורכבים יותר ויוצגו בפרקים נפרדים בעתיד.
הפנייה כללית של שם דומיין
אם אתה משתמש i18n.site
כדי ליצור אתר כאתר הראשי שלך, בדרך כלל עליך להגדיר ניתוב מחדש של תחום הפאן, כלומר להפנות גישה ל *.xxx.com
(כולל www.xxx.com
) ל xxx.com
.
דרישה זו יכולה להיות מושגת בעזרת Alibaba Cloud CDN
EdgeScript
( מסמך באנגלית / מסמך סיני )
הוסף את שם הדומיין ב- Alibaba CDN וכוון את שם הדומיין *.xxx.com
ל CNAME
ב- Alibaba Cloud CDN
.
לדוגמה, תצורת ההפניה מחדש של שם התחום של *.i18n.site
בתמונה למעלה היא כדלקמן:
rewrite(concat('https://i18n.site',$uri), 'redirect',301)
פרוס עם nginx
אנא הוסף תצורה דומה להלן בפסקה server
של nginx אנא שנה /root/i18n/md/out/main/htm
לנתיב של פרוייקט 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;
}
}
מבוסס על 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