Новая гісторыя

Як размясціць блог Hugo на старонках GitHub з акцыямі

па Oleg Pustovit5m2025/04/30
Read on Terminal Reader

Занадта доўга; Чытаць

Я ўсталяваў лёгкі тэхнічны блог, выкарыстоўваючы Hugo для статычнага генерацыі сайтаў, Caddy для локальных SSL і GitHub Pages для бясплатнага хосты.
featured image - Як размясціць блог Hugo на старонках GitHub з акцыямі
Oleg Pustovit HackerNoon profile picture

Пасля гадоў будаўніцтва праграмнага забеспячэння і напісання тэхнічнай дакументацыі, я вырашыў стварыць блог, каб падзяліцца сваім вопытам і дапамагчы іншым на падобных падарожжах.

Выбраць платформу

Для мяне, гэта важна, каб мець як мінімальны рашэнне, як магчыма.У той час як будаўніцтва маёй собственнай Markdown-to-HTML выданне сцэнарый з'яўляецца ідэяй для будучыні, мой непасрэдны прынцып быў, каб атрымаць блог онлайн хутка.


Я не магу сказаць, што можна назваць шчаслівым шлях, калі вы ўдваіх кудысьці схаваліся і ніхто нічога не ведае.


  • CMS (напрыклад, WordPress, Content Hub, Joomla і г.д.): Хоць платформы, такія як WordPress, маюць магутнасць, яны адчуваліся надзвычайнымі для блога статычнага контента.


  • Jekyll: Гэтае праграмнае забеспячэнне выглядае ідэальна і шырока выкарыстоўваецца іншымі распрацоўшчыкамі, каб захоўваць блогі, але з-за маёй непаўторнасці з Ruby, я выбраў не выкарыстоўваць гэта.


  • Hugo напісаны ў Go і выкарыстоўвае знакамітую сінтаксу шаблонаў Go (калі вы збіраецеся шмат коду ў Go), у той час як рэндэрэндуе старонкі ў Markdown (падобна Jekyll).


  • 11ty, Astro, Hexo, і іншыя альтэрнатывы на аснове Node.js. Гэта справа перавагі, але асабіста, я вырашыў мінімізаваць выкарыстанне Node.js інструментаў. Хоць ёсць шмат магутных інструментаў, Node.js экасістэма вядомая для хуткага змянення, што часта прыводзіла мяне да не магу праводзіць старых праектаў, якія натуральна мелі шмат старых залежнасцяў.

Сцягнуць Hugo

Я выбраў Hugo як маю платформу для блогування.Калі я вырабіў значную колькасць дакументацыі на маіх мінулых працэсах, звязаных з праграмным забеспячэннем, я адчуваю сябе вельмі ўпэўненым, выкарыстоўваючы Markdown і тэрмін-базавы тэкставы аўдытар для маёй працы.

Загрузіць GitHub Repository

Раней я ўжо стварыў вэб-сайт GitHub Pages з файламі місць і падключыў дамен да яго, так што, каб папуляваць файлы ў існуючым рэпа, вам трэба ўвесці наступнае каманда:

hugo new site . --force


Гэта будзе заполняць рэпазітарны каталог з файламі, якія патрэбныя для запуску сайта Hugo. Пасля таго, што было неабходна ўсталяваць тэму і іншыя параметры ўhugo.tomlПасля таго, як усё будзе наладжана, можна запусціць сервер, націснуўшы каманда:hugo server

Сцягнуць сервер у рэжыме развіцця

Цяпер сайт даступны зlocalhostЗ таго часу, як я распрацоўваю на далёкім хмарным VM, доступ да локальнага сервера Hugo з дапамогайlocalhostГэта было неабходна, каб бяспечна выяўляць інстанцыю localhost для вашага свету - для такіх патрэбаў, зворотны проксі выкарыстоўваецца.


Хоць балансары нагрузкі і звонкія проксі, такія як Nginx, з'яўляюцца вельмі распаўсюджанымі і папулярнымі, я выбраўCaddyкаб абслугоўваць мой вэб-сайт, таму што ён усталюе SSL-сертыфікаты (праз Let's Encrypt) без ускладнення.CaddyГэта зроблена зCaddyfile, дзе для домена цікавасці вы пішаце areverse_proxyУзнагароджанне ў адпаведнасці з патрэбным портам:

test-blog-domain.com {
	reverse_proxy localhost:1313
}

Пасля запуску Caddy з вышэйшай канфігурацыяй, сайт развіцця будзе даступны зhttps://test-blog-domain.com(У той жа часADNS запісы дляtest-blog-domain.com(Пасля перасылкі з IP-адрас кампаніі)

Додаваць тэму

Hugo мае некалькі бясплатных тэмаў, якія з'яўляюцца публічна даступнымі на GitHub. Што трэба рабіць, каб ўсталяваць адзін з іх, гэта клонуць рэпазітары з тэмай, а затым абнавіцьthemeПараметры ўhugo.tomlЯ выбраў тэму, якая называеццаcactusПасля ўстаноўкі, у мяне з'явіўся будынак, які скараціўся, што шаблон Google Analytics async не знойдзены:

Error: error building site: render: failed to render pages: render of "/" failed: "/home/user/projects/nexo-tech.github.io/themes/cactus/layouts/_default/baseof.html:3:3": execute of template failed: template: index.html:3:3: executing "index.html" at <partial "head.html" .>: error calling partial: execute of template failed: html/template:partials/head.html:47:16: no such template "_internal/google_analytics_async.html"
make: *** [Makefile:2: up] Error

Такая віза можа быць прадоўжана.githubАктыўная супольнасць Hugo, і многія праблемы — у тым ліку гэты Google Analytics error — маюць існуючыя патчы або дыскусіі на GitHub.


Пасля выпраўлення іншых абмежаванняў, сайт пачаў працаваць:

Размяшчэнне вэб-сайта ў CDN: GitHub Pages

Існуе шмат спосабаў размяшчэння статычнага сайта, і ў большасці выпадкаў, гэта патрабуецца, каб мець хост або сервер. Звычайна, яны не бясплатны або маюць абмежаваны план; аднак, ёсць выключэнні да гэтага, як GitHub Pages.


Усё, што вы чулі пра карысць пара раней - усяго толькі чуткі і павер'і.gh-pagesНа жаль, ёсцьactionsНапрыклад, для таго, каб зрабіць гэта, трэба:


  • actions-hugo by Shohei Ueda. Просты спосаб ўстаноўкі Hugo ў асяроддзі GitHub Actions
  • Таксама, па Shohei Ueda, гэтае дзеянне прынёс статычныя актывы да вызначанай галіны.


Вось код GitHub Action Workflow, які будзе размяшчаць Hugo на gh-пажаданні.publicАдміністрацыя, перш чым працавацьgh-pagesУкладайце больш ва ўласную журналістыку, СМІ і змагайцеся за свабоду слова.Settings > Actions > General)

name: Build and Deploy Hugo
on:
  push:
    branches:
      - main  
jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout repo
        uses: actions/checkout@v3
      - name: Setup Hugo
        uses: peaceiris/actions-hugo@v2
        with:
          hugo-version: 'latest'
          extended: true
      - name: Build site
        run: hugo --minify
      - name: Add CNAME file
        run: cp CNAME public/CNAME
      - name: Deploy to GitHub Pages
        uses: peaceiris/actions-gh-pages@v3
        with:
          github_token: ${{ secrets.GITHUB_TOKEN }}
          publish_dir: ./public
          publish_branch: gh-pages

Калі размяшчэнне праходзіць, сайт трэба загрузіць на GitHub CDN. Не забудзьцеся ўсталяваць GitHub Pages для галіны, якая змяшчае ўбудаваныя артэфакты ў выпадку, калі сайт не працуе.


У нашай багатай беларускай літаратуры няма другога такога твора, які па энцыклапедычнасці выяўлення ў ім нацыянальнага, так набліжаўся б да "Новай зямлі".

Супольныя ресурсы

  • Репазітар для гэтага сайта
  • Урокі хуткага старта
  • Загрузіць DNS для GitHub Pages
  • Катэгорыя для Hugo
  • Загрузіць Google Analytics ў Hugo
  • Загрузіць Caddy Reverse Proxy Quick Start


Trending Topics

blockchaincryptocurrencyhackernoon-top-storyprogrammingsoftware-developmenttechnologystartuphackernoon-booksBitcoinbooks