Краткое руководство по созданию блога Hexo с нуля (версия 2024)
Вам надоели безвкусные интерфейсы блогов, вы устали от бесконечных рассылок сайтов и давно хотели создать собственный блог, но останавливались перед сложными инструкциями и кучей головной боли с кодом? Тогда поздравляю: эта статья создана специально для того, чтобы максимально просто и понятно шаг за шагом научить вас создавать свой собственный блог. Вам понадобится лишь немного терпения, и просто следуйте инструкциям.
Hexo — это быстрый, простой и эффективный фреймворк для блогов, настоящая находка для новичков! А GitHub избавляет нас от необходимости арендовать и разворачивать сервер. Поэтому в этой статье мы будем использовать Hexo и GitHub для создания блога.
В 2018 году я уже писал краткое руководство по созданию блога с нуля, но с тех пор плагины обновились, и некоторые детали требуют корректировки. Поэтому я выпускаю обновленную версию этого краткого руководства за 2024 год.
Подготовка
- Загрузите и установите Node.js (скачать с официального сайта)
- Загрузите и установите Git (скачать с официального сайта)
Создание локального статического блога Hexo
- Установите фреймворк Hexo: Откройте командную строку (cmd) и выполните:
$ npm install -g hexo-cli
- Создайте новую папку, например,
MyBlog. Перейдите в нее, щелкните правой кнопкой мыши и запустите Git Bash (или откройте cmd/терминал в этой папке), затем введите:
$ 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: ru // Язык сайта (изменил на ru для русского блога)
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добавьте названия социальных сетей (с учетом регистра) и иконки. Опция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 декабря 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: [Тег1, Тег2]
categories: [Категория1, Категория2]
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-generator-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 {
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 в репозитории этот файл перезаписывается. Поэтому необходимо настроить конфигурацию, чтобы избежать перезаписи.
В корневой директории 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.
# Добавьте адрес репозитория блога, который был настроен ранее
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 генерирует заново