GNU/Linux >> Znalost Linux >  >> Ubuntu

Jak nainstalovat a vytvořit blog s Hexo na Ubuntu 20.04

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

  1. Server založený na Ubuntu 20.04 s uživatelem bez oprávnění root s právy sudo.

  2. 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]"
    
  3. Úč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.


Ubuntu
  1. Jak nainstalovat software Ghost Blog pomocí Apache a SSL na Ubuntu 16.04

  2. Jak nainstalovat Nginx s PHP5 a MySQL na Ubuntu 11.10

  3. Jak nainstalovat VeraCrypt a vytvořit šifrovaný disk v Ubuntu 20.04

  1. Jak nainstalovat PHP 7.4 a 8.0 na Ubuntu 18.04 nebo 20.04

  2. Jak nainstalovat Anaconda na Ubuntu 18.04 a 20.04

  3. Jak nainstalovat a nakonfigurovat Nextcloud s Apache na Ubuntu 18.04

  1. Jak nainstalovat a zabezpečit phpMyAdmin pomocí Apache na Ubuntu 18.04

  2. Jak nainstalovat a nakonfigurovat ownCloud s Apache na Ubuntu 18.04

  3. Jak nainstalovat WordPress s EasyEngine na Ubuntu 18.04 a Debian