GNU/Linux >> Belajar Linux >  >> Ubuntu

Cara Memasang dan Membuat Blog dengan Hexo di Ubuntu 20.04

Hexo adalah kerangka kerja blog statis yang dibangun di atas Node.js. Hexo memungkinkan Anda untuk menulis posting dalam format penurunan harga. Entri blog ini diproses dan diubah menjadi file HTML statis menggunakan tema yang telah ditentukan sebelumnya.

Ini berbeda dari perangkat lunak blogging biasa seperti WordPress karena menghasilkan file statis. WordPress memuat blog secara dinamis dengan menjalankan kode PHP setiap kali Anda memuat ulang situs yang membuatnya rentan terhadap kerentanan.

Dalam tutorial ini, Anda akan belajar cara Menginstal Hexo dan menggunakannya untuk membuat blog di server berbasis Ubuntu 20.04.

Prasyarat

  1. Server berbasis Ubuntu 20.04 dengan pengguna non-root dengan hak sudo.

  2. Git harus diinstal. Jika Anda belum menginstal git, Anda dapat melakukannya melalui perintah berikut.

    $ sudo apt install git
    $ git config --global user.name "Your Name"
    $ git config --global user.email "[email protected]"
    
  3. Sebuah akun di Github.

Konfigurasi Firewall

Ubuntu 20.04 hadir dengan Uncomplicated Firewall (UFW) secara default. Jika belum, instal terlebih dahulu.

$ sudo apt install ufw

Aktifkan port SSH.

$ sudo ufw allow "OpenSSH"

Aktifkan firewall.

$ sudo ufw enable

Aktifkan port 4000 yang digunakan oleh server Hexo.

$ sudo ufw allow 4000

Juga, buka port HTTP dan HTTPS yang akan kita perlukan nanti.

$ sudo ufw allow http
$ sudo ufw allow https

Periksa status 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)

Instal Node.js

Karena Hexo didasarkan pada Node.js, Anda harus menginstalnya terlebih dahulu.

Jalankan perintah berikut untuk menambahkan Repositori Node.js.

$ curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash -

Instal Node.js.

$ sudo apt-get install nodejs

Konfirmasi apakah sudah terpasang dengan benar.

$ node --version
v14.15.0

Instal Hexo

Jalankan perintah berikut untuk menginstal paket Hexo.

$ sudo npm install hexo-cli -g

-g parameter menginstal hexo-cli paket global yang memungkinkan Anda menginstal blog Hexo di direktori mana pun yang Anda pilih.

Buat direktori untuk menginstal Hexo.

$ sudo mkdir -p /var/www/hexo

Tetapkan izin dan kepemilikan yang diperlukan.

$ sudo chown -R $USER:$USER /var/www/hexo
$ sudo chmod -R 755 /var/www/hexo

Selanjutnya, Anda perlu menginisialisasi dan mengatur file yang diperlukan untuk blog Hexo. Untuk melakukannya, pindah ke direktori yang baru saja Anda buat.

$ cd /var/www/hexo

Inisialisasi 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!

Instal 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

Anda sekarang dapat memeriksa struktur direktori.

$ ls
_config.yml  node_modules  package-lock.json  package.json  scaffolds  source  themes

_config.yml file menyimpan konfigurasi untuk blog Hexo Anda. Sebagian besar pengaturan blog dapat diubah dari sini.

node_modules direktori menampung semua paket yang dibutuhkan Hexo dan yang bergantung padanya.

package.json file berisi daftar semua paket dan nomor versinya yang dibutuhkan Hexo.

package-lock.json file secara otomatis dihasilkan oleh npm setiap kali Anda melakukan instalasi atau perubahan pada paket Hexo. Ini berisi informasi tentang paket dan versi yang diinstal atau diubah.

scaffolds direktori berisi template yang menjadi dasar postingan dan halaman blog Anda.

source direktori berisi konten situs aktual dalam format HTML/CSS yang kemudian dipublikasikan ke web. Folder atau file apa pun yang diawali dengan _ (garis bawah) diabaikan oleh Hexo kecuali _posts map. Untuk saat ini, direktori kosong karena kami belum menulis atau menerbitkan apa pun.

themes direktori berisi tema Blog Anda.

Konfigurasi Hexo

Buka _config.yml file untuk diedit.

$ nano _config.yml

Periksa bagian file yang berjudul 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: ''

Pilihannya cukup jelas. Ubah nama situs Anda, atur subtitle jika Anda mau. Tambahkan deskripsi situs Anda dan beberapa kata kunci untuk mendeskripsikannya. Ubah nama penulis dan zona waktu untuk situs Anda.

Selanjutnya, periksa URL bagian dari file.

# 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

Ubah URL situs Anda menjadi nama domain Anda. Pastikan Anda menggunakan HTTPS di URL Anda karena kami akan memasang SSL nanti.

Jika Anda tidak ingin URL situs Anda menampilkan index.htm l di akhir setiap halaman, Anda dapat mengubah kedua opsi trailing_index dan trailing_html menjadi false .

Ada beberapa setelan lagi yang harus Anda aktifkan.

Ubah nilai default_layout variabel dari post ke draft . Ini akan membuat postingan baru sebagai draf sehingga Anda harus memublikasikannya sebelum muncul di blog.

Ubah nilai post_asset_folder variabel menjadi true . Ini akan memungkinkan Anda untuk memiliki folder gambar individual untuk setiap posting, bukan satu folder gambar untuk semua posting.

Simpan file dengan menekan Ctrl+X dan memasukkan Y saat diminta.

Memasang Tema

Hexo dikirimkan dengan tema default bernama Landscape. Anda dapat beralih ke tema lain dengan menginstal tema Hexo lain yang tersedia dari halaman Temanya.

Semua tema Hexo tersedia melalui Github sehingga Anda perlu mengkloning repositori Github tema.

Untuk tutorial kami, kami memasang tema Berikutnya. Beralih ke direktori Hexo dan Kloning repositori Github tema ke themes direktori.

$ cd /var/www/hexo
$ git clone https://github.com/theme-next/hexo-theme-next themes/next

Ubah /var/www/hexo/_config.yml file untuk mengubah tema dari Lansekap ke Berikutnya.

$ nano _config.yml

Buat perubahan pada variabel tema untuk mengganti tema.

# Extensions
## Plugins: https://hexo.io/plugins/
## Themes: https://hexo.io/themes/
theme: next

Anda dapat mengubah pengaturan tema dengan memodifikasi /var/www/hexo/themes/next/_config.yml berkas.

Buat dan Publikasikan Postingan

Saatnya membuat postingan pertama kami.

$ hexo new first-post
INFO  Validating config
INFO  Created: /var/www/hexo/source/_drafts/first-post.md

Buka postingan baru untuk diedit.

$ nano ./source/_drafts/first-post.md

Setiap postingan harus memiliki front-matter mendirikan. Front-matter adalah blok pendek JSON atau YAML yang mengonfigurasi detail penting seperti judul postingan, tanggal publikasi, kategori, tag, dll. Ganti data default dengan opsi yang benar.

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!**

Jika Anda ingin menyisipkan gambar di postingan Anda, tambahkan kode berikut di postingan Anda.

{% asset_img "example.jpg" "This is an example image" %}

Setelah itu, salin file example.jpg ke \source\_posts\first-post direktori tempat semua gambar untuk kiriman pertama Anda akan diambil.

Simpan file dengan menekan Ctrl+X dan memasukkan Y ketika diminta setelah Anda selesai menulis postingan.

Selanjutnya, publikasikan postingan tersebut.

$ hexo publish first-post
INFO  Validating config
INFO  Published: /var/www/hexo/source/_posts/first-post.md

Postingan ini akan terlihat setelah kami menghosting blog.

Memasang Plugin

Hexo memiliki beberapa ratus plugin yang dapat Anda instal. Anda dapat menginstal satu atau lebih plugin tergantung pada penggunaan Anda.

Semua plugin Hexo adalah paket Node.js dan dihosting di Github tempat Anda dapat menemukan detail instalasi dan konfigurasinya.

Untuk tutorial kami, kami akan menginstal hexo-filter-nofollow pengaya.

Pastikan Anda berada di direktori hexo terlebih dahulu lalu instal plugin.

$ cd /var/www/hexo
$ npm i hexo-filter-nofollow --save

Buka file konfigurasi Hexo untuk diedit.

$ sudo nano _config.yml

Tempelkan kode berikut di akhir file.

nofollow:
  enable: true
  field: site
  exclude:
    - 'exclude1.com'
    - 'exclude2.com'

enable opsi mengaktifkan Plugin. field option mendefinisikan ruang lingkup plugin di mana site menambahkan atribut nofollow ke tautan eksternal di seluruh situs dan post menambahkan atribut nofollow hanya ke tautan di kiriman. exclude option membuat daftar putih domain yang atribut nofollownya tidak akan ditambahkan.

Server Uji

Hexo dikirimkan dengan server web dasar. Sekarang setelah posting kami diterbitkan, sekarang saatnya untuk memulai server pengujian Hexo.

$ hexo server

Sekarang Anda dapat meluncurkan URL http://yourserverIP:4000 di browser Anda dan Anda akan melihat halaman berikut.

Keluar dari server dengan menekan Ctrl + C di terminal.

Buat file Hexo Statis

Server Uji Hexo dapat melayani blog secara dinamis maupun melalui file statis. Perintah di atas melayani blog secara dinamis.

Ada beberapa cara untuk melayani blog Hexo secara publik. Untuk tutorial kami, kami akan menyajikan file statis Hexo menggunakan server Nginx.

Jalankan perintah berikut untuk menghasilkan file statis.

$ hexo generate

Perintah di atas menghasilkan file statis yang disimpan di /var/www/hexo/public map. Kami akan menggunakan server Nginx untuk menyajikan file dari folder ini.

Instal dan Konfigurasi Nginx

Instal server Nginx.

$ sudo apt install nginx

Buat dan buka file konfigurasi Hexo untuk Nginx.

$ sudo nano /etc/nginx/sites-available/hexo.conf

Tempelkan kode berikut di dalamnya.

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;
}

Simpan file dengan menekan Ctrl+X dan memasukkan Y saat diminta.

Aktifkan konfigurasi.

$ sudo ln -s /etc/nginx/sites-available/hexo.conf /etc/nginx/sites-enabled/

Buka /etc/nginx/nginx.conf file untuk diedit.

$ sudo nano /etc/nginx/nginx.conf	

Paste baris berikut sebelum baris include /etc/nginx/conf.d/*.conf

server_names_hash_bucket_size 64;

Ubah nilai variabel types_hash_max_size dari 2048 hingga 4096.

types_hash_max_size 4096;

Tekan Ctrl + X untuk menutup editor dan tekan Y saat diminta untuk menyimpan file.

Uji untuk memastikan tidak ada kesalahan sintaks dalam konfigurasi Anda.

$ sudo nginx -t

Jika tidak ada masalah, mulai ulang server Nginx.

$ sudo systemctl restart nginx

Instal SSL

Saatnya menginstal SSL menggunakan layanan Let's Encrypt untuk blog hexo kita.

Untuk itu, instal Certbot.

$ sudo apt install certbot

Hentikan Nginx karena akan mengganggu proses Certbot.

$ sudo systemctl stop nginx

Menghasilkan sertifikat. Kita juga perlu membuat sertifikat 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

Kami juga perlu menyiapkan tugas cron untuk memperbarui SSL secara otomatis. Untuk membuka editor crontab, jalankan perintah berikut.

$ 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

Perintah di atas membuka editor Crontab. Jika Anda menjalankannya untuk pertama kali, Anda akan diminta untuk memilih editor untuk mengedit pekerjaan Cron. Pilih 1 untuk editor Nano.

Rekatkan baris berikut di bagian bawah.

25 2 * * * /usr/bin/certbot renew --quiet --pre-hook “systemctl stop nginx” --post-hook “systemctl start nginx”

Pekerjaan cron di atas akan menjalankan certbot pada pukul 2:25 pagi setiap hari. Anda dapat mengubahnya menjadi apa pun yang Anda inginkan.

Simpan file dengan menekan Ctrl + X dan memasukkan Y saat diminta.

Perbarui Hexo

Beralih ke folder Hexo.

$ cd /var/www/hexo

Jika Anda beralih ke versi Hexo utama, Anda perlu memperbarui package.json mengajukan. Buka untuk mengedit. Anda dapat langsung melompat ke perintah update untuk memperbarui ke versi minor.

$ nano package.json

Ubah baris berikut di bawah dependencies bagian.

"hexo": "^5.0.0",

Ubah nilai 5.0.0 ke versi berikutnya setiap kali dirilis di masa mendatang. Misalnya, jika Hexo 6.0 keluar, maka ubah menjadi berikut.

"hexo": "^6.0.0",

Simpan file dengan menekan Ctrl + X dan memasukkan Y saat diminta.

Jalankan perintah berikut untuk memperbarui hexo.

$ npm update

Menyebarkan Hexo

Hexo tidak hanya dapat di-host langsung di server Anda tetapi juga dapat digunakan langsung di Git, Netlify, Vercel, Heroku, OpenShift, dan berbagai metode lainnya.

Sebagian besar plugin penerapan mengharuskan Anda menginstal plugin. Untuk tutorial kami, kami akan mengatur penyebaran Hexo ke Netlify. Jika Anda ingin menerapkan ke Netlify, maka Anda tidak perlu mengikuti langkah-langkah yang terkait dengan Nginx dan SSL karena Netlify hadir dengan SSL gratis.

Situs Netlify biasanya di-deploy dari repositori Git. Tetapi untuk tujuan kami, kami akan langsung mempublikasikan situs statis ke Netlify menggunakan alat CLI-nya.

Instal Netlify CLI.

$ sudo npm install netlify-cli -g

Anda dapat memverifikasi untuk melihat apakah alat CLI telah diinstal.

$ netlify --version
netlify-cli/2.68.5 linux-x64 node-v14.15.0

Masuk ke 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

Salin login dari terminal di browser Anda dan login ke akun Netlify Anda untuk mengautentikasi.

Anda dapat memeriksa apakah Anda login dengan menggunakan perintah berikut.

$ netlify status
???????????????????????
 Current Netlify User ?
???????????????????????
Name:  Your Name
Email: [email protected]
Teams:
  Your Team's team: Collaborator

Beralih ke direktori publik Hexo.

$ cd /var/www/hexo/public

Terapkan situs ke 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.

Pilih dengan tombol panah untuk membuat situs baru dan masukkan nama untuk situs Anda. Masukkan . sebagai direktori yang akan digunakan yang merujuk ke direktori saat ini.

Anda akan diberikan draft URL. Salin URL dan muat ke browser. Jika semuanya terlihat baik-baik saja, jalankan perintah berikut untuk melakukan penerapan produksi.

$ netlify deploy --prod

Situs Anda sekarang seharusnya sudah aktif. Anda dapat menambahkan domain khusus di pengaturan Netlify untuk mengarahkannya ke situs nyata.

Setiap kali Anda memublikasikan postingan baru dan membuat file baru, jalankan perintah berikut dari direktori utama Hexo untuk menerapkan perubahan ke Netlify.

$ netlify deploy --dir ./public --prod

Kesimpulan

Ini menyimpulkan tutorial kami untuk menginstal dan membuat blog menggunakan kerangka Hexo Blog di server berbasis Ubuntu 20.04. Jika Anda memiliki pertanyaan, kirimkan di komentar di bawah.


Ubuntu
  1. Cara Menginstal Perangkat Lunak Blog Hantu dengan Apache dan SSL di Ubuntu 16.04

  2. Cara Instal Nginx Dengan PHP5 Dan MySQL Di Ubuntu 11.10

  3. Cara Menginstal VeraCrypt dan Membuat Disk Terenkripsi di Ubuntu 20.04

  1. Cara Menginstal PHP 7.4 dan 8.0 Di Ubuntu 18.04 atau 20.04

  2. Cara Menginstal Anaconda di Ubuntu 18.04 dan 20.04

  3. Cara Menginstal dan Mengonfigurasi Nextcloud dengan Apache di Ubuntu 18.04

  1. Cara Menginstal dan Mengamankan phpMyAdmin dengan Apache di Ubuntu 18.04

  2. Cara Menginstal dan Mengkonfigurasi ownCloud dengan Apache di Ubuntu 18.04

  3. Cara Menginstal WordPress dengan EasyEngine di Ubuntu 18.04 dan Debian