Programio

Hexo.io: nahrání blogu na web

V minulém článku jsme si řekli, jak založit blog pomocí Hexo.io a jak ho spravovat. Dnes přejdete k zábavnější části: jak dostat blog na web?

  • První možnost je mít server s Node.JS. To není úplně jednoduchá záležitost, ale můžete to zkusit. Já to nezkoušel, ale účet na Heroku pro jistotu mám.
  • Druhou možností je nahrát vygenerované soubory na jakýkoliv hosting. Výhoda použití Hexo.io je právě to, že činí nulové nároky na hosting. Pokud máte hosting s FTP přístupem, můžete ho použít. Nepotřebujete databázi, nepotřebujete ani PHP. Dokonce vám stačí Dropbox. Publikace článku se pak scvrkne na to, že synchronizujete na disku dvě složky.
  • Třetí možností je, že vlastně nepotřebujete ani klasický hosting, stačí vám GitHub Pages. To funguje tak, že si vytvoříte na Githubu normální repozitář, do kterého nahrajete zdrojové HTML kódy vašeho webu a GitHub vám pak umožní tyto zdrojáky prohlížet na adrese username.github.io. Publikaci nového článku pak prostě provedete commitem&pushem. Což vám Hexo.io ještě dále ulehčí.

GitHub Pages

Jak tedy nastavit Hexo.io tak, aby spolupracoval s GitHub Pages? Jako první zprovozníme GitHub Pages na samotném GitHubu. Následuje vyčerpávající seznam pokynů:

  1. Vytvořte nový repozitář a pojmenujte ho “username.github.io”.

To je vše.

Pokud do tohoto repozitáře něco pushnete, zobrazí se to na adrese username.github.io. Teď půjdeme nastavit Hexo.io. Otevřete konfigurační soubor /_config.yml. Tam přidejte následující nastavení:

1
deploy:
  type: github
  repository: git@github.com:username/username.github.io.git
  branch: master

V položce repository je normální odkaz na váš repozitář, který se vám zobrazuje v Githubu (pokud to budete kopírovat odtud, nezapomeňte přepsat username na vaše přihlašovací jméno). Teď byste měli mít vše nastaveno a zbývá už jen vygenerovat obsah a deploynout ho na GitHub. Na to slouží dva příkazy:

1
hexo clean
hexo generate
hexo deploy

První příkaz vygeneruje statické soubory a druhý příkaz je pushne na GitHub. Pokud nedojde k nějaké chybě, uvidíte na “username.github.io” obsah blogu. Úplně první spuštění ale obyčejně pár minut trvá, toho se nelekejte. Další změny už jsou instantní.

Příkaz hexo clean maže cache a je celkem blbé, že to nevolá vnitřně samotný hexo generate. Před hexo deploy si můžete zkontrolovat aktuální stav webu tak, že spustíte server bez --drafts, tj. jen jako hexo server.

GitHub Pages na vlastní doméně

Ano, já vím, že nechcete URL “username.github.io”, ale chcete provozovat GitHub Pages na vlastní doméně. Tak se pojďme podívat jak na to.

Dejme tomu, že chcete blog zobrazovat na doméně programio.havrlant.cz. Jděte do administrace DNS a přidejte CNAME záznam pro doménu programio.havrlant.cz s hodnotou username.github.io.

Dále si nainstalujte Hexo CNAME generator. Stačí napsat (v rootu vašeho blogu):

1
npm install hexo-generator-cname

A v configu /_config.yml přidejte:

1
plugins:
- hexo-generator-cname

A to je celé. Tenhle plugin se postará o to, aby se do repozitáře přidal CNAME soubor se správným obsahem. Aby plugin fungoval, je nutné, aby byla v configu správně vyplněná položka url:

1
url: http://programio.havrlant.cz/

Deploy pomocí FTP

Pokud nechcete používat GitHub Pages, můžete použít klasické FTP. Nainstalujte si Hexo FTP deployer příkazem

1
npm install hexo-deployer-ftp

Přijdete plugin do nastavení:

1
plugins:
- hexo-deployer-ftp

a přidejte do configu nastavení FTP:

1
deploy:
  type: ftp
  host: [ftp host]
  user: [ftp user]
  root: [path/to/your/blog/on/the/server]

Deployer používá program lftp, pokud ho nemáte, tak si ho nainstalujte (něco jako brew install lftp). Když poté zavoláte hexo deploy, deployer nahraje všechny public soubory do určené složky na FTP (a zeptá se u toho na heslo).

Další možnosti

Samotné Hexo podoruje několik dalších možností jak nahrát blog na web. Pokud vám nic ze zmiňovaného nevyhovuje, stále můžete nahrát vygenerované statické soubory někam na web ručně. Nebo můžete použít libovolný jiný program, který synchronizuje dvě složky přes FTP například a nějak automatizovaně ho spouštět.