Короткий посібник зі створення блогу на Hexo з нуля (видання 2024 року)
Вам вже давно набридли нецікаві інтерфейси більшості блогів, ви втомилися від нескінченних сповіщень та реклами, і мрієте про власний простір в інтернеті? Можливо, ви вже намагалися створити його, але складні інструкції та купа незрозумілого коду відлякували вас? Тоді вітаю! Ця стаття допоможе вам крок за кроком, у найдоступнішій формі, створити власний блог. Все, що вам потрібно, — це трохи терпіння та уважно слідувати інструкціям.
Hexo — це швидкий, простий та ефективний фреймворк для блогів, справжня знахідка для початківців! А завдяки GitHub нам не потрібно турбуватися про оренду та розгортання додаткових серверів. Саме тому в цьому посібнику ми будемо створювати блог за допомогою Hexo та GitHub.
У 2018 році я вже писав короткий посібник зі створення блогу з нуля. Однак через оновлення плагінів деякі деталі потребують змін, тому я вирішив оновити цей посібник до версії 2024 року.
Підготовка
- Завантажте та встановіть node.js (завантажити та встановити з офіційного сайту)
- Завантажте та встановіть git (завантажити та встановити з офіційного сайту)
Налаштування статичного блогу Hexo локально
- Встановлення фреймворку Hexo: Відкрийте командний рядок (CMD) та виконайте:
$ npm install -g hexo-cli
- Створіть нову папку, наприклад,
MyBlog. Перейдіть до цієї папки, клацніть правою кнопкою миші та запустіть Git Bash, потім введіть:
$ hexo init
- Після створення шаблону Hexo встановіть npm, виконавши:
$ npm install
Так, основна частина блогу вже готова! Давайте подивимося на результат. Виконайте:
$ hexo server
Тепер відкрийте браузер і введіть localhost:4000, щоб побачити, як виглядає ваш блог. Трохи порадійте, а потім натисніть Ctrl + C, щоб продовжити.
Персоналізація (початкова)
Зміна теми
- Завантаження нової теми (на прикладі теми NexT): У кореневій директорії виконайте:
$ git clone https://github.com/theme-next/hexo-theme-next themes/next
- Відкрийте файл
_config.ymlу кореневій директорії та змініть полеthemeна:
theme: next
- Вибір зовнішнього вигляду: Відкрийте
/themes/next/_config.yml, знайдіть полеscheme(можна швидко знайти за допомогою Ctrl + F). NexT пропонує три різні варіанти оформлення. Виберіть той, що вам подобається, і видаліть символ#перед ним (надалі ви будете працювати переважно з цими двома файлами: конфігураційним файлом сайту та конфігураційним файлом теми).
# Schemes
#scheme: Muse
scheme: Mist
#scheme: Pisces
#scheme: Gemini
- Щоб переглянути результат, виконайте такі команди (цей крок можна повторювати щоразу, коли захочете побачити зміни):
hexo g #або hexo generate
hexo server
Налаштування сайту
- Відкрийте конфігураційний файл сайту
_config.ymlу кореневій директорії за допомогою текстового редактора (у Windows не використовуйте Блокнот, оскільки можуть виникнути проблеми з кодуванням для кириличних заголовків). Змініть поляSite, зверніть увагу, що після двокрапки має бути пробіл:
# Site
title: Невідомий світ // Назва блогу
subtitle:
description: Do something cool // Слоган або підпис
author: LulalaP // Автор
language: zh-Hans // Мова сайту
timezone:
Налаштування аватара на бічній панелі
-
У директорії
/sourceстворіть нову папку та назвіть їїuploads. Помістіть файл аватара (наприклад,avatar.jpg) у цю папку. -
Відкрийте
/themes/next/_config.yml, знайдіть полеavatarта змініть його на:
avatar:
url: /uploads/avatar.jpg
Доопрацювання сторінок блогу
Додавання пунктів меню
- Відкрийте
/themes/next/_config.yml, знайдіть полеmenuі розкоментуйте (видаліть символ#) ті пункти, які ви хочете додати. Якщо потрібно додати інші пункти меню, зробіть це відповідно до ваших потреб (зверніть увагу на відступи):
menu:
home: / || fa fa-home
about: /about/ || fa fa-user
tags: /tags/ || fa fa-tags
categories: /categories/ || fa fa-th
archives: /archives/ || fa fa-archive
Створення сторінки категорій
- Створіть нову сторінку з назвою
categories, виконавши команду:
$ hexo new page categories
- Відредагуйте щойно створену сторінку
/source/categories/index.md. Встановіть тип сторінки наcategories, і тема автоматично відобразить усі категорії на цій сторінці (зверніть увагу на пробіл після двокрапки).
title: Categories
date: 2024-04-10 23:40:31
type: "categories"
comments: false
---
Створення сторінки з хмарою тегів
- Створіть нову сторінку з назвою
tags, виконавши команду:
$ hexo new page "tags"
- Відредагуйте щойно створену сторінку. Встановіть тип сторінки на
tags, і тема автоматично відобразить хмару тегів на цій сторінці.
---
title: Tags
date: 2024-04-10 23:41:25
type: "tags"
comments: false
---
Створення сторінки “Про мене”
- Створіть нову сторінку
about:
$ hexo new page "about"
- Відредагуйте щойно створену сторінку. Основний текст можна написати у форматі Markdown.
title: About
date: 2024-04-10 23:41:56
comments: false
---
Налаштування посилань на соцмережі в бічній панелі
- Відредагуйте файл
_config.ymlвашого сайту, знайдіть полеsocialі додайте назви та адреси ваших соціальних мереж. Формат ключ-значення:Назва для відображення: адреса посилання, наприклад:
# Social links
social:
GitHub: https://github.com/your-user-name || fab fa-github
E-Mail: mailto:[email protected] || fa fa-envelope
#Weibo: https://weibo.com/yourname || fab fa-weibo
#Google: https://plus.google.com/yourname || fab fa-google
Twitter: https://x.com/your-user-name || fab fa-twitter
- Відкрийте
/themes/next/_config.ymlі в поліsocial_iconsдодайте назви соціальних мереж (зверніть увагу на регістр) та (іконки)[http://fontawesome.io/icons/]. Опціяenableконтролює відображення іконок. Можете встановитиfalse, щоб їх приховати. Наприклад:
social_icons:
enable: true
GitHub: github
Twitter: twitter
Підключення блогу до GitHub
-
Реєстрація облікового запису GitHub: Якщо у вас ще немає облікового запису GitHub, спочатку потрібно його створити.
-
На GitHub створіть новий репозиторій з назвою
XXX.github.io, де XXX — це ваше ім’я користувача GitHub. -
Відкрийте конфігураційний файл
_config.ymlу папці вашого локального проєктуMyBlogі змініть полеtypeнаgit:
deploy:
type: git
repository: https://github.com/your-name/your-name.github.io.git
branch: main
- Виконайте:
npm install hexo-deployer-git --save
- Генеруємо статичні файли локально та завантажуємо їх на GitHub:
hexo g
hexo d
Тепер відкрийте браузер і перейдіть за адресою http://your-name.github.io. Вітаю, ваш блог повністю налаштований!
Прив’язка доменного імені
На цьому етапі блог повністю налаштований і доступний через домен GitHub. Однак, щоб зробити його ще кращим, можна прив’язати власне коротке доменне ім’я.
Купівля доменного імені
- Купіть доменне ім’я. Рекомендую namesilo.com — це надійний провайдер з хорошими цінами та якісним сервісом. Якщо ви скористаєтеся моїм промокодом
PhiloArt.io, отримаєте знижку 1 долар. Пропозиція дійсна до 31.12.2025.
Налаштування DNS домену
-
Налаштування DNS у провайдера доменів
-
Додайте 4 A-записи, які вказуватимуть на GitHub Pages:
185.199.108.153 185.199.109.153 185.199.110.153 185.199.111.153
- Додайте один запис
CNAME, деnameбудеwww, аcontent—your-name.github.io(вказує на адресу ваших GitHub Pages):
CNAME —> philo-li.github.io
-
Детальніші налаштування дивіться в документації GitHub Pages.
-
Додавання файлу CNAME до директорії блогу
Після налаштування DNS перейдіть до директорії блогу, у папці source створіть новий файл з назвою CNAME (зверніть увагу на великі літери, без розширення). Відкрийте його у текстовому редакторі та впишіть придбане доменне ім’я, наприклад: www.philoli.com.
- Виконайте:
hexo g
hexo d
Тепер відкрийте браузер, введіть своє доменне ім’я та натисніть Enter. Вітаю, ви щойно отримали власний блог з незалежним доменом!
Публікація нових статей
-
У кореневій директорії блогу виконайте команду:
hexo new “Моя перша стаття”. Це створить файл.mdу папціsource/_posts. -
Відредагуйте цей файл, змінивши початкові поля на:
title Заголовок статті
date Дата створення (дата створення файлу)
updated Дата оновлення (дата останньої зміни файлу)
comments Чи дозволені коментарі true
tags Теги
categories Категорії
permalink Ім'я в URL (ім'я файлу)
-
Напишіть основний текст (дотримуючись правил Markdown).
-
Генеруємо статичні файли локально та завантажуємо їх на GitHub:
hexo g
hexo d
Персоналізація (розширена)
Нижче наведено кілька розширених налаштувань стилю блогу. Новачки можуть пропустити цей розділ.
Додавання RSS
- Встановіть плагін у кореневій директорії:
$ npm install hexo-generator-feed --save
- В кінці файлу
_config.ymlу кореневій директорії додайте: (Зверніть увагу, що після двокрапки має бути пробіл, інакше виникне помилка!)
# Extensions
## Plugins: http://hexo.io/plugins/
plugins: hexo-generate-feed
- Відкрийте
/themes/next/_config.ymlта змінітьrss(зверніть увагу, що після двокрапки має бути пробіл):
rss: /atom.xml || fa fa-rss
Обрізання статей на головній сторінці
- Під час написання кожної статті просто додавайте
<!--more-->у файлі.mdтам, де ви хочете, щоб стаття обрізалася:
<!--more-->
- Відкрийте
/themes/next/_config.ymlта встановіть для опціїscroll_to_moreзначенняfalse.
Вирівнювання цитат по центру в статтях
- Оптимізовано стандартний стиль цитат Markdown:
{% centerquote %}
Текст цитати
{% endcenterquote %}
{% centerquote %} Текст цитати {% endcenterquote %}
Зміна стилю блоків коду
- Відредагуйте
/themes/next/_config.ymlта змініть конфігураціюcodeblockнаступним чином:
codeblock:
# Code Highlight theme
# Available values: normal | night | night eighties | night blue | night bright | solarized | solarized dark | galactic
# See: https://github.com/chriskempson/tomorrow-theme
highlight_theme: night eighties
# Add copy button on codeblock
copy_button:
enable: true
# Show text copy result.
show_result: true
# Available values: default | flat | mac
style:
Встановлення дати створення сайту
- Відредагуйте файл
_config.ymlвашого сайту, додавши нове полеsince.
since: 2024
Покращення стилю посилань у статтях
- Відредагуйте файл
themes\next\source\css\_common\components\post\post.stylта додайте наступні CSS-стилі в кінці файлу:
// link style
.post-body p a{
color: #0593d3;
border-bottom: none;
border-bottom: 1px solid #0593d3;
&:hover {
color: #fc6423;
border-bottom: none;
border-bottom: 1px solid #fc6423;
}
}
Додавання фонового зображення до блогу
- У папці
sourceв кореневій директорії створіть папку_data. Створіть файлstyles.stylі відкрийте його (source/_data/styles.styl), додайте наступний вміст:
body {
background:url(/uploads/background.jpg);
background-repeat: no-repeat; // Чи повторювати зображення, якщо воно не заповнює весь екран, і як саме
background-attachment:fixed; // Чи прокручувати зображення разом зі сторінкою
background-size: cover; // Покриття
background-position:50% 50%; // Позиція зображення
}
- URL може бути посиланням на зображення або шляхом до зображення. Можна назвати зображення
background.jpgі помістити його в папкуsource/uploads.
Налаштування напівпрозорого фону для вмісту блогу
- Відкрийте файл
source/_data/styles.styl, який ви редагували на попередньому кроці, і додайте наступний вміст:
// Налаштування прозорості вмісту статті
if (hexo-config('motion.transition.post_block')) {
.post-block {
background: rgba(255,255,255,0.9);
opacity: 0.9;
radius: 10px;
margin-top: 15px;
margin-bottom: 20px;
padding: 40px;
-webkit-box-shadow: 0 0 5px rgba(202, 203, 203, .5);
-moz-box-shadow: 0 0 5px rgba(202, 203, 204, .5);
}
.pagination, .comments {
opacity: 0;
}
+tablet() {
margin: 20px;
padding: 10px;
}
+mobile() {
margin: 15px;
padding: 15px;
}
}
// Налаштування прозорості бічної панелі
.sidebar {
opacity: 0.9;
}
// Налаштування прозорості меню
.header-inner {
background: rgba(255,255,255,0.9);
}
// Налаштування прозорості вікна пошуку (local-search)
.popup {
opacity: 0.9;
}
Оптимізація стилю вбудованих блоків коду
- Відкрийте файл
source/_data/styles.styl, який ви редагували на попередньому кроці, і додайте наступний вміст:
// Покращення вигляду тегу `<code>` для коду
code {
padding: 2px 4px;
word-wrap: break-word;
color: #c7254e;
background: #f9f2f4;
border-radius: 3px;
font-size: 18px;
}
Додавання лічильника відвідувачів у нижній частині сайту
- Відредагуйте файл:
# Знайдіть тег copyright і додайте код всередину нього
<div class="copyright">
# ......тут вже є деякі налаштування
# Додайте новий код тут
</div>
# Після додавання виглядатиме так:
<div class="copyright">
# ......тут вже є деякі налаштування
# Додайте новий код тут
{%- if true %}
<span class="post-meta-divider">|</span>
<span class="post-meta-item-icon">
<i class="fa fa-user-md"></i>
</span>
Visitors: <span id="busuanzi_value_site_uv"></span>
{%- endif %}
</div>
- Перегенеруйте, щоб переглянути зміни, і якщо все гаразд, опублікуйте:
hexo g
hexo s
# Опублікувати після підтвердження
hexo d
Додавання файлу README.md до репозиторію
Зазвичай кожен проєкт має файл README.md. Однак, коли ви розгортаєте блог за допомогою Hexo, файл README.md у репозиторії може бути перезаписаний. Тому потрібно налаштувати конфігурацію, щоб уникнути цього.
У кореневій директорії source вашого проєкту Hexo додайте файл README.md. Відредагуйте конфігураційний файл сайту _config.yml і встановіть значення параметра skip_render на:
skip_render: README.md
Збережіть та вийдіть. Наступного разу, коли ви розгорнете блог за допомогою команди hexo d, файл README.md не буде рендеритися.
Кілька корисних плагінів
- Hexo Filter MathJax: рендеринг математичних формул
- Встановлення:
npm install hexo-filter-mathjax - Детальні налаштування: hexo-filter-mathjax
- Встановлення:
- Hexo Word Counter: підрахунок слів у статті
- Встановлення:
npm install hexo-word-counter - Детальні налаштування: hexo-word-counter
- Встановлення:
- Hexo Optimize: оптимізація швидкості завантаження блогу
- Встановлення:
npm install hexo-optimize - Детальні налаштування: hexo-optimize
- Встановлення:
- Більше плагінів: https://theme-next.js.org/plugins/
Резервне копіювання вихідних файлів
- Обов’язково робіть резервні копії локальних вихідних файлів, особливо файлів Markdown. Якщо інші налаштування будуть втрачені, ви не зможете нормально писати блог, і доведеться налаштовувати все з нуля.
- Рекомендується використовувати той самий репозиторій GitHub для резервного копіювання.
- Бажано робити резервні копії після кожної значної зміни або щодня.
- Докладніше про використання дивіться в документації Git.
# Додайте адресу репозиторію блогу, яку ви налаштували раніше
git remote add origin https://github.com/your-name/your-name.github.io.git
# Додайте та збережіть поточні зміни, а також додайте коментар
git add .
git commit -m "Оновлення вихідних файлів"
# Створіть та переключіться на нову гілку
git checkout -b source
# Завантажте весь вміст локальної гілки `source` у гілку `source` віддаленого репозиторію
git push origin source:source
Написання блогів з різних комп’ютерів
- Коли ви пишете блог з іншого комп’ютера, вам потрібно встановити базове програмне забезпечення, а потім завантажити резервний репозиторій GitHub на локальний комп’ютер, щоб оновити блог.
- Завантажте та встановіть node.js (завантажити та встановити з офіційного сайту)
- Завантажте та встановіть git (завантажити та встановити з офіційного сайту)
- Встановлення фреймворку Hexo: Відкрийте командний рядок (CMD) та виконайте:
npm install -g hexo-cli
- Локальне оновлення:
# Клонуйте репозиторій на локальний комп'ютер
git clone https://github.com/your-name/your-name.github.io.git
# Якщо репозиторій вже клоновано локально, перед кожним оновленням блогу потрібно завантажувати найновіший вміст гілки
git pull origin
# Переключіться на відповідну гілку
git checkout source
# Після встановлення всіх плагінів, налаштованих у Hexo, можна починати оновлювати та редагувати вміст блогу.
npm install
# Після внесення змін не забувайте своєчасно робити повне резервне копіювання
git add .
git commit -m "Оновлення блогу xxx"
git push origin source:source
# Публікація та завантаження найновішого вмісту блогу на доменний сайт
hexo clean
hexo g # Генерує статичні файли
hexo s # Локальне розгортання та тестування
hexo d # Публікує найновіший вміст блогу
Зведення основних команд
hexo g
# або hexo generate, генерує статичні веб-сторінки з вихідних файлів
hexo d
# або hexo deploy, публікує та завантажує на GitHub Pages
hexo s
# або hexo server, локальне розгортання та тестування
hexo clean
# очищує кеш статичних сторінок, а потім hexo d для повторної генерації