Hexo je statický rámec pro blogování postavený na Node.js. Hexo vám umožňuje psát příspěvky ve formátu Markdown. Tyto blogové příspěvky jsou zpracovány a převedeny na statické soubory HTML pomocí předem definovaných témat.
Liší se od obvyklého softwaru pro blogování, jako je WordPress, protože generuje statické soubory. WordPress načítá blog dynamicky spuštěním kódu PHP pokaždé, když znovu načtete web, což ho činí náchylným k zranitelnosti.
V tomto tutoriálu se naučíte, jak nainstalovat Hexo a použít jej k vytvoření blogu na serveru založeném na Ubuntu 20.04.
Předpoklady
-
Server založený na Ubuntu 20.04 s uživatelem bez oprávnění root s právy sudo.
-
Git by měl být nainstalován. Pokud nemáte nainstalovaný git, můžete to udělat pomocí následujících příkazů.
$ sudo apt install git $ git config --global user.name "Your Name" $ git config --global user.email "[email protected]"
-
Účet na Github.
Konfigurovat bránu firewall
Ubuntu 20.04 je standardně dodáván s nekomplikovaným firewallem (UFW). Pokud tomu tak není, nejprve jej nainstalujte.
$ sudo apt install ufw
Povolte port SSH.
$ sudo ufw allow "OpenSSH"
Povolte bránu firewall.
$ sudo ufw enable
Povolte port 4000, který používá server Hexo.
$ sudo ufw allow 4000
Otevřete také porty HTTP a HTTPS, které budeme později potřebovat.
$ sudo ufw allow http
$ sudo ufw allow https
Zkontrolujte stav brány firewall.
$ sudo ufw status
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
80/tcp ALLOW Anywhere
4000 ALLOW Anywhere
443/tcp ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
80/tcp (v6) ALLOW Anywhere (v6)
4000 (v6) ALLOW Anywhere (v6)
443/tcp (v6) ALLOW Anywhere (v6)
Instalovat Node.js
Protože Hexo je založeno na Node.js, musíte jej nejprve nainstalovat.
Spuštěním následujícího příkazu přidejte úložiště Node.js.
$ curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash -
Nainstalujte Node.js.
$ sudo apt-get install nodejs
Potvrďte, zda je správně nainstalován.
$ node --version
v14.15.0
Instalovat Hexo
Spuštěním následujícího příkazu nainstalujte balíček Hexo.
$ sudo npm install hexo-cli -g
-g
parametr nainstaluje hexo-cli
globálně balíček, který vám umožní nainstalovat Hexo blog do libovolného adresáře podle vašeho výběru.
Vytvořte adresář pro instalaci Hexo.
$ sudo mkdir -p /var/www/hexo
Nastavte požadovaná oprávnění a vlastnictví.
$ sudo chown -R $USER:$USER /var/www/hexo
$ sudo chmod -R 755 /var/www/hexo
Dále musíte inicializovat a nastavit potřebné soubory pro blog Hexo. Chcete-li to provést, přepněte do adresáře, který jste právě vytvořili.
$ cd /var/www/hexo
Inicializujte blog Hexo.
$ hexo init
INFO Cloning hexo-starter https://github.com/hexojs/hexo-starter.git
INFO Install dependencies
added 185 packages from 430 contributors and audited 191 packages in 6.47s
14 packages are looking for funding
run `npm fund` for details
found 0 vulnerabilities
INFO Start blogging with Hexo!
Nainstalujte Hexo.
$ npm install
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: [email protected] (node_modules/fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for [email protected]: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})
added 5 packages from 1 contributor and audited 191 packages in 1.567s
14 packages are looking for funding
run `npm fund` for details
found 0 vulnerabilities
Nyní můžete zkontrolovat strukturu adresářů.
$ ls
_config.yml node_modules package-lock.json package.json scaffolds source themes
Soubor _config.yml
soubor obsahuje konfiguraci pro váš Hexo blog. Většinu nastavení blogu lze změnit zde.
node_modules
adresář obsahuje všechny balíčky, které Hexo potřebuje, a ty, na kterých závisí.
package.json
obsahuje seznam všech balíčků a jejich čísel verzí, které Hexo potřebuje.
package-lock.json
soubor automaticky generuje npm
pokaždé, když provedete instalaci nebo změnu balíčku Hexo. Obsahuje informace o balíčcích a verzích, které byly nainstalovány nebo změněny.
scaffolds
adresář obsahuje šablony, na kterých budou založeny vaše blogové příspěvky a stránky.
source
adresář obsahuje aktuální obsah webu ve formátu HTML/CSS, který je následně publikován na webu. Jakákoli složka nebo soubor s předponou _
(podtržítka) je Hexo ignorováno kromě _posts
složka. Prozatím je adresář prázdný, protože jsme nic nenapsali ani nepublikovali.
themes
adresář obsahuje vaše témata blogu.
Konfigurovat Hexo
Otevřete _config.yml
soubor pro úpravy.
$ nano _config.yml
Zkontrolujte část souboru s názvem Site
# Hexo Configuration
## Docs: https://hexo.io/docs/configuration.html
## Source: https://github.com/hexojs/hexo/
# Site
title: Hexo
subtitle: ''
description: ''
keywords:
author: John Doe
language: en
timezone: ''
Možnosti jsou docela samozřejmé. Změňte název svého webu, nastavte si titulky, pokud chcete. Přidejte popis svého webu a některá klíčová slova, která jej popíší. Změňte jméno autora a časové pásmo svého webu.
Dále zkontrolujte URL
části souboru.
# URL
## If your site is put in a subdirectory, set url as 'http://example.com/child' and root as '/child/'
url: http://example.com
root: /
permalink: :year/:month/:day/:title/
permalink_defaults:
pretty_urls:
trailing_index: true # Set to false to remove trailing 'index.html' from permalinks
trailing_html: true # Set to false to remove trailing '.html' from permalinks
Změňte adresu URL svého webu na název své domény. Ujistěte se, že ve své adrese URL používáte HTTPS, protože SSL nainstalujeme později.
Pokud nechcete, aby adresa URL vašeho webu zobrazovala index.htm
l na konci každé stránky můžete změnit obě možnosti trailing_index
a trailing_html
na false
.
Existuje několik dalších nastavení, která byste měli zapnout.
Změňte hodnotu parametru default_layout
proměnná z post
do draft
. Tím se vytvoří nové příspěvky jako koncepty, takže je budete muset publikovat, než se objeví na blogu.
Změňte hodnotu složky post_asset_folder
proměnná na true
. To vám umožní mít jednotlivé složky s obrázky pro každý příspěvek namísto jedné složky s obrázky pro všechny příspěvky.
Uložte soubor stisknutím Ctrl+X a zadáním Y až budete vyzváni.
Instalace motivu
Hexo se dodává s výchozím motivem nazvaným Krajina. Můžete přepnout na jiný motiv instalací jiného Hexo motivu dostupného na jeho stránce Témata.
Všechna Hexo témata jsou dostupná přes Github, takže musíte naklonovat úložiště Github daného tématu.
Pro náš tutoriál instalujeme téma Další. Přepněte se do adresáře Hexo a naklonujte úložiště Github tématu do themes
adresář.
$ cd /var/www/hexo
$ git clone https://github.com/theme-next/hexo-theme-next themes/next
Změňte /var/www/hexo/_config.yml
soubor pro změnu motivu z Na šířku na Další.
$ nano _config.yml
Chcete-li změnit téma, proveďte změnu proměnné motivu.
# Extensions
## Plugins: https://hexo.io/plugins/
## Themes: https://hexo.io/themes/
theme: next
Nastavení motivu můžete změnit úpravou /var/www/hexo/themes/next/_config.yml
soubor.
Vytvoření a publikování příspěvku
Je čas vytvořit náš první příspěvek.
$ hexo new first-post
INFO Validating config
INFO Created: /var/www/hexo/source/_drafts/first-post.md
Otevřete nový příspěvek pro úpravy.
$ nano ./source/_drafts/first-post.md
Každý příspěvek musí mít svůj front-matter
založit. Front-matter je krátký blok JSON nebo YAML, který konfiguruje základní detaily, jako je název příspěvku, datum zveřejnění, kategorie, štítky atd. Nahraďte výchozí data správnými možnostmi.
title: Howtoforge's First Post
tags:
- test
categories:
- Hexo
comments: true
date: 2020-11-14 00:00:00
---
## Markdown goes here.
**This is our first post!**
Pokud chcete do příspěvku vložit obrázek, přidejte do příspěvku následující kód.
{% asset_img "example.jpg" "This is an example image" %}
Poté zkopírujte soubor example.jpg
do \source\_posts\first-post
adresář, ze kterého budou načteny všechny obrázky pro váš první příspěvek.
Uložte soubor stisknutím Ctrl+X a zadáním Y až budete vyzváni, jakmile dokončíte psaní příspěvku.
Poté příspěvek publikujte.
$ hexo publish first-post
INFO Validating config
INFO Published: /var/www/hexo/source/_posts/first-post.md
Tento příspěvek bude viditelný, jakmile budeme hostovat blog.
Instalace pluginu
Hexo má několik stovek pluginů, které si můžete nainstalovat. Můžete nainstalovat jeden nebo více pluginů v závislosti na vašem použití.
Všechny Hexo pluginy jsou balíčky Node.js a hostované na Github, kde najdete podrobnosti o jejich instalaci a konfiguraci.
Pro náš tutoriál nainstalujeme hexo-filter-nofollow
plugin.
Nejprve se ujistěte, že jste v hexadecimálním adresáři, a poté nainstalujte plugin.
$ cd /var/www/hexo
$ npm i hexo-filter-nofollow --save
Otevřete konfigurační soubor Hexo pro úpravy.
$ sudo nano _config.yml
Vložte následující kód na konec souboru.
nofollow:
enable: true
field: site
exclude:
- 'exclude1.com'
- 'exclude2.com'
enable
volba povolí Plugin. field
volba definuje rozsah pluginu, kde site
přidá atribut nofollow k externím odkazům na celém webu a post
přidává atribut nofollow pouze k odkazům v příspěvcích. exclude
volba přidá na seznam povolených domén, na které nebude přidán atribut nofollow.
Testovací server
Hexo se dodává se základním webovým serverem. Nyní, když je náš příspěvek zveřejněn, je čas spustit testovací server Hexo.
$ hexo server
Nyní můžete spustit adresu URL http://yourserverIP:4000
ve vašem prohlížeči a uvidíte následující stránku.
Ukončete server stisknutím Ctrl + C na terminálu.
Generovat Hexo statické soubory
Testovací server Hexo může blog obsluhovat dynamicky i prostřednictvím statických souborů. Výše uvedený příkaz sloužil blogu dynamicky.
Existuje několik způsobů, jak veřejně sloužit blogu Hexo. V našem tutoriálu použijeme statické soubory Hexo pomocí serveru Nginx.
Spuštěním následujícího příkazu vygenerujte statické soubory.
$ hexo generate
Výše uvedený příkaz generuje statické soubory, které jsou uloženy v /var/www/hexo/public
složka. K poskytování souborů z této složky použijeme server Nginx.
Instalace a konfigurace Nginx
Nainstalujte server Nginx.
$ sudo apt install nginx
Vytvořte a otevřete konfigurační soubor Hexo pro Nginx.
$ sudo nano /etc/nginx/sites-available/hexo.conf
Vložte do něj následující kód.
server {
server_name hexo.example.com;
root /var/www/hexo/public;
index index.html index.htm;
listen 443 ssl http2;
listen [::]:443 ssl http2;
ssl_certificate /etc/letsencrypt/live/hexo.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/hexo.example.com/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_session_timeout 1d;
ssl_session_cache shared:MozSSL:10m; # about 40000 sessions
ssl_session_tickets off;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES25> ssl_prefer_server_ciphers off;
ssl_dhparam /etc/ssl/certs/dhparam.pem;
location / {
try_files $uri $uri/ =404;
}
}
server {
if ($host = hexo.example.com) {
return 301 https://$host$request_uri;
}
server_name hexo.example.com;
listen 80;
listen [::]:80;
return 404;
}
Uložte soubor stisknutím Ctrl+X a zadáním Y až budete vyzváni.
Aktivujte konfiguraci.
$ sudo ln -s /etc/nginx/sites-available/hexo.conf /etc/nginx/sites-enabled/
Otevřete /etc/nginx/nginx.conf
soubor pro úpravy.
$ sudo nano /etc/nginx/nginx.conf
Vložte následující řádek před řádek include /etc/nginx/conf.d/*.conf
server_names_hash_bucket_size 64;
Změňte hodnotu proměnné types_hash_max_size
od 2048 do 4096.
types_hash_max_size 4096;
Stiskněte Ctrl + X zavřete editor a stiskněte Y až budete vyzváni k uložení souboru.
Otestujte, abyste se ujistili, že ve vaší konfiguraci nejsou žádné syntaktické chyby.
$ sudo nginx -t
Pokud nenastanou žádné problémy, restartujte server Nginx.
$ sudo systemctl restart nginx
Instalovat SSL
Je čas nainstalovat SSL pomocí služby Let's Encrypt pro náš hexo blog.
Za tímto účelem si nainstalujte Certbot.
$ sudo apt install certbot
Zastavte Nginx, protože to bude narušovat proces Certbot.
$ sudo systemctl stop nginx
Vygenerujte certifikát. Potřebujeme také vytvořit certifikát DHParams.
$ sudo certbot certonly --standalone -d hexo.yourdomain.com --preferred-challenges http --agree-tos -n -m [email protected] --keep-until-expiring
$ sudo systemctl start nginx
$ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
Musíme také nastavit úlohu cron pro automatické obnovení SSL. Chcete-li otevřít editor crontab, spusťte následující příkaz.
$ sudo crontab -e
no crontab for root - using an empty one
Select an editor. To change later, run 'select-editor'.
1. /bin/nano <---- easiest
2. /usr/bin/vim.basic
3. /usr/bin/vim.tiny
4. /bin/ed
Choose 1-4 [1]: 1
Výše uvedený příkaz otevře editor Crontab. Pokud jej spouštíte poprvé, budete požádáni o výběr editoru pro úpravy úloh Cron. Vyberte 1 pro Nano editor.
Vložte následující řádek do spodní části.
25 2 * * * /usr/bin/certbot renew --quiet --pre-hook “systemctl stop nginx” --post-hook “systemctl start nginx”
Výše uvedená úloha cron spustí certbot každý den ve 2:25. Můžete jej změnit na cokoli chcete.
Uložte soubor stisknutím Ctrl + X a zadáním Y až budete vyzváni.
Aktualizovat Hexo
Přepněte do složky Hexo.
$ cd /var/www/hexo
Pokud přecházíte na hlavní Hexo verzi, musíte aktualizovat package.json
soubor. Otevřete jej pro úpravy. Pro aktualizaci na menší verze můžete přeskočit přímo na příkaz update.
$ nano package.json
Změňte následující řádek pod dependencies
sekce.
"hexo": "^5.0.0",
Změňte hodnotu 5.0.0
na další verzi, kdykoli bude v budoucnu vydána. Pokud například Hexo 6.0 není k dispozici, změňte jej na následující.
"hexo": "^6.0.0",
Uložte soubor stisknutím Ctrl + X a zadáním Y až budete vyzváni.
Spusťte následující příkaz pro aktualizaci hexu.
$ npm update
Nasazení Hexo
Hexo může být nejen hostováno přímo na vašem serveru, ale může být také nasazeno přímo na Git, Netlify, Vercel, Heroku, OpenShift a různé další metody.
Většina zásuvných modulů pro nasazení vyžaduje instalaci zásuvného modulu. Pro náš tutoriál nastavíme nasazení Hexo na Netlify. Pokud chcete nasadit na Netlify, pak nemusíte postupovat podle kroků souvisejících s Nginx a SSL, protože Netlify přichází s bezplatným SSL.
Web Netlify je obvykle nasazen z úložiště Git. Ale pro náš účel přímo zveřejníme statický web Netlify pomocí jeho nástroje CLI.
Nainstalujte Netlify CLI.
$ sudo npm install netlify-cli -g
Můžete ověřit, zda byl nainstalován nástroj CLI.
$ netlify --version
netlify-cli/2.68.5 linux-x64 node-v14.15.0
Přihlaste se do Netlify.
$ netlify login
Logging into your Netlify account...
Opening https://app.netlify.com/authorize?response_type=ticket&ticket=dfb575d97d07213c9cf73848c8d19e90
You are now logged into your Netlify account!
Run netlify status for account details
To see all available commands run: netlify help
Zkopírujte přihlašovací údaje z terminálu ve vašem prohlížeči a přihlaste se ke svému účtu Netlify pro ověření.
Zda jste přihlášeni, můžete zkontrolovat pomocí následujícího příkazu.
$ netlify status
???????????????????????
Current Netlify User ?
???????????????????????
Name: Your Name
Email: [email protected]
Teams:
Your Team's team: Collaborator
Přepněte do veřejného adresáře Hexo.
$ cd /var/www/hexo/public
Nasaďte web na Netlify.
$ netlify deploy
This folder isn't linked to a site yet
? What would you like to do? + Create & configure a new site
? Team: Navjot Singh's team
Choose a unique site name (e.g. isnt-yourname-awesome.netlify.app) or leave it blank for a random name. You can update the site name later.
? Site name (optional): Howtoforge
Site Created
Admin URL: https://app.netlify.com/sites/Howtoforge
URL: https://Howtoforge.netlify.app
Site ID: 986c931c-3f06-40a1-a89b-59621f337c18
Please provide a publish directory (e.g. "public" or "dist" or "."):
/var/www/hexo/public
? Publish directory /var/www/hexo/public
Deploy path: /var/www/hexo/public
Deploying to draft URL...
? Finished hashing 37 files
? CDN requesting 9 files
? Finished uploading 9 assets
? Deploy is live!
Logs: https://app.netlify.com/sites/howtoforge/deploys/5fb0c9b806e72eb9c5f073c8
Website Draft URL: https://5fb0c9b806e72eb9c5f073c8--howtoforge.netlify.app
If everything looks good on your draft URL, deploy it to your main site URL with the --prod flag.
Vyberte pomocí kláves se šipkami pro vytvoření nového webu a zadejte název svého webu. Zadejte .
jako adresář k nasazení, ze kterého odkazuje na aktuální adresář.
Dostanete koncept URL. Zkopírujte adresu URL a načtěte ji do prohlížeče. Pokud vše vypadá v pořádku, spusťte následující příkaz a proveďte produkční nasazení.
$ netlify deploy --prod
Váš web by nyní měl být aktivní. Můžete přidat vlastní doménu v nastavení Netlify, abyste ji nasměrovali na skutečný web.
Pokaždé, když publikujete nový příspěvek a generujete nové soubory, spusťte následující příkaz z hlavního adresáře Hexo, abyste nasadili změny do Netlify.
$ netlify deploy --dir ./public --prod
Závěr
Tímto končí náš návod k instalaci a vytvoření blogu pomocí rámce Hexo Blog na serveru založeném na Ubuntu 20.04. Pokud máte nějaké dotazy, napište je do komentářů níže.