若是你和我同樣是小白,那麼恭喜你!javascript
看完這篇文章,你也能夠擁有一個這樣的博客啦!css
Node.js 下載,並安裝。詳細步驟:www.simon96.online/2018/11/10/…html
Git 下載,並安裝。詳細步驟:www.simon96.online/2018/11/10/…java
安裝Hexo,在命令行(即Git Bash)運行如下命令:node
npm install -g hexo-clinginx
初始化Hexo,在命令行(即Git Bash)依次運行如下命令便可:c++
如下,即存放Hexo初始化文件的路徑, 即站點目錄。git
$ hexo init <folder>
$ cd <folder>
$ npm install
複製代碼
新建完成後,在路徑下,會產生這些文件和文件夾:github
.
├── _config.yml
├── package.json
├── scaffolds
├── source
| ├── _drafts
| └── _posts
└── themes
複製代碼
注:web
hexo相關命令均在站點目錄下,用Git Bash運行。
站點配置文件:站點目錄下的_config.yml
。
路徑爲<folder>\_config.yml
主題配置文件:站點目錄下的themes
文件夾下的,主題文件夾下的_config.yml
。
路徑爲<folder>\themes\<主題文件夾>\_config.yml
啓動服務器。在路徑下,命令行(即Git Bash)輸入如下命令,運行便可:
hexo server
瀏覽器訪問網址: http://localhost:4000/
至此,您的Hexo博客已經搭建在本地。
建立Github帳號
建立倉庫, 倉庫名爲:<Github帳號名稱>.github.io
將本地Hexo博客推送到GithubPages
3.1. 安裝hexo-deployer-git
插件。在命令行(即Git Bash)運行如下命令便可:
$ npm install hexo-deployer-git --save
複製代碼
3.2. 添加SSH key。
建立一個 SSH key 。在命令行(即Git Bash)輸入如下命令, 回車三下便可:
$ ssh-keygen -t rsa -C "郵箱地址"
複製代碼
添加到 github。 複製密鑰文件內容(路徑形如C:\Users\Administrator\.ssh\id_rsa.pub
),粘貼到New SSH Key便可。
測試是否添加成功。在命令行(即Git Bash)依次輸入如下命令,返回「You've successfully authenticated」即成功:
$ ssh -T git@github.com
$ yes
複製代碼
3.3. 修改_config.yml
(在站點目錄下)。文件末尾修改成:
# Deployment
## Docs: https://hexo.io/docs/deployment.html
deploy:
type: git
repo: git@github.com:<Github帳號名稱>/<Github帳號名稱>.github.io.git
branch: master
複製代碼
注意:上面倉庫地址寫ssh地址,不寫http地址。
3.4. 推送到GithubPages。在命令行(即Git Bash)依次輸入如下命令, 返回INFO Deploy done: git
即成功推送:
$ hexo g
$ hexo d
複製代碼
等待1分鐘左右,瀏覽器訪問網址: https://<Github帳號名稱>.github.io
至此,您的Hexo博客已經搭建在GithubPages, 域名爲https://<Github帳號名稱>.github.io
。
在方案一的基礎上,添加自定義域名(您購買的域名)。
域名解析。
類型選擇爲 CNAME;
主機記錄即域名前綴,填寫爲www;
記錄值填寫爲自定義域名;
解析線路,TTL 默認便可。
倉庫設置。
2.1. 打開博客倉庫設置:https://github.com/<Github帳號名稱>/<Github帳號名稱>.github.io/settings
2.2. 在Custom domain下,填寫自定義域名,點擊save
。
2.3. 在站點目錄的source
文件夾下,建立並打開CNAME.txt
,寫入你的域名(如www.simon96.online
),保存,並重命名爲CNAME
。
等待10分鐘左右。
瀏覽器訪問自定義域名。
至此,您的Hexo博客已經解析到自定義域名,https://<Github帳號名稱>.github.io
依然可用。
GithubPages 在國內較慢,百度不收錄,而CodingPages 在國外較快。因此在方案二的基礎上,添加CodingPages 。
建立Coding帳號
建立倉庫, 倉庫名爲:<Coding帳號名稱>
進入項目裏『代碼』頁面,點擊『一鍵開啓靜態 Pages』,稍等片刻CodingPages便可部署成功。
將本地Hexo博客推送到CodingPages
4.1. 鑑於建立GithubPages 時,已經生成過公鑰。可直接複製密鑰文件內容(路徑形如C:\Users\Administrator\.ssh\id_rsa.pub
), 粘貼到新增公鑰。
4.2. 測試是否添加成功。在命令行(即Git Bash)依次輸入如下命令,返回「You've successfully authenticated」即成功:
$ ssh -T git@git.coding.net
$ yes
複製代碼
4.3. 修改_config.yml
(在存放Hexo初始化文件的路徑下)。文件末尾修改成:
# Deployment
## Docs: https://hexo.io/docs/deployment.html
deploy:
- type: git
repo: git@github.com:<Github帳號名稱>/<Github帳號名稱>.github.io.git
branch: master
- type: git
repo: git@git.dev.tencent.com:<Coding帳號名稱>/<Coding帳號名稱>.git
branch: master
複製代碼
4.4. 推送到GithubPages。在命令行(即Git Bash)依次輸入如下命令, 返回INFO Deploy done: git
即成功推送:
$ hexo g
$ hexo d
複製代碼
域名解析
添加 CNAME 記錄指向 <Coding帳號名稱>.coding.me
類型選擇爲 CNAME;
主機記錄即域名前綴,填寫爲www;
記錄值填寫爲自定義域名;
解析線路,TTL 默認便可。
添加 兩條A 記錄指向 192.30.252.153和192.30.252.154
類型選擇爲 A;
主機記錄即域名前綴,填寫爲@;
記錄值填寫爲192.30.252.153和192.30.252.154;
解析線路,境外或谷歌。
在『Pages 服務』設置頁(https://dev.tencent.com/u/<Coding帳號名稱>/p/<Coding帳號名稱>/git/pages/settings
)中綁定自定義域名。
至此,您的Hexo博客已經解析到自定義域名,https://<Github帳號名稱>.github.io
和https://<Coding帳號名稱>.coding.me
依然可用。
該方案須要先購買雲服務器和域名。
在雲服務器安裝Git 和 Nginx。(Git 用於版本管理和部署,Nginx 用於靜態博客託管。)
登錄root用戶,運行:
$ yum -y update
$ yum install -y git nginx
複製代碼
Nginx配置
2.1. 建立文件目錄(用於博客站點文件存放)
cd /usr/local/
mkdir hexo
chmod 775 -R /usr/local/hexo/
複製代碼
2.2. 添加 index.html(用於檢測配置 Nginx 是否成功)
vim /usr/local/hexo/index.html
複製代碼
添加如下代碼,並保存。
<!DOCTYPE html>
<html>
<head>
<title></title>
<meta charset="UTF-8">
</head>
<body>
<p>Nginx running</p>
</body>
</html>
複製代碼
2.3. 配置 Nginx 服務器
vim /etc/nginx/nginx.conf
複製代碼
修改server_name和root:
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name www.baidu.com; # 填我的域名
root /usr/local/hexo/;
}
複製代碼
2.4. 啓動nginx服務;
service nginx start
複製代碼
2.5. 雲服務器瀏覽器訪問我的域名或IP,若跳轉index.html,則配置完成,不然檢查以上配置。
git配置
3.1. 建立文件目錄, 用於私人 Git 倉庫搭建, 並更改目錄讀寫權限。
cd /usr/local/
mkdir hexoRepo
chmod 775 -R /usr/local/hexoRepo/
複製代碼
3.2. Git 初始化裸庫。
cd hexoRepo/
git init --bare hexo.git
複製代碼
3.3. 建立 Git 鉤子(hook)。
vim /usr/local/hexoRepo/hexo.git/hooks/post-receive
複製代碼
3.4. 輸入如下信息,用於指定 Git 的源代碼 和 Git 配置文件。
#!/bin/bash
git --work-tree=/usr/local/hexo --git-dir=/usr/local/hexoRepo/hexo.git checkout -f
複製代碼
3.5. 保存並退出後, 給該文件添加可執行權限。
chmod +x /usr/local/hexoRepo/hexo.git/hooks/post-receive
複製代碼
本地博客推送到雲服務器
4.1. 安裝hexo-deployer-git
插件。在命令行(即Git Bash)運行如下命令便可:
$ npm install hexo-deployer-git --save
複製代碼
4.2. 添加SSH key。
建立一個 SSH key 。在命令行(即Git Bash)輸入如下命令, 回車三下便可:
$ ssh-keygen -t rsa -C "郵箱地址"
複製代碼
添加到 github。 複製密鑰文件內容(路徑形如C:\Users\Administrator\.ssh\id_rsa.pub
),粘貼到New SSH Key便可。
測試是否添加成功。在命令行(即Git Bash)依次輸入如下命令,返回「You've successfully authenticated」即成功:
$ ssh -T git@github.com
$ yes
複製代碼
4.3. 修改_config.yml
(在站點目錄下)。文件末尾修改成:
# Deployment
## Docs: https://hexo.io/docs/deployment.html
deploy:
type: git
repo: root@xxx.xxx.xxx.xxx:/usr/local/hexoRepo/hexo //用戶名@域名或 IP 地址:/usr/local/hexoRepo/hexo
branch: master
複製代碼
注意:上面倉庫地址寫ssh地址,不寫http地址。
4.4. 推送到GithubPages。在命令行(即Git Bash)依次輸入如下命令, 返回INFO Deploy done: git
即成功推送:
$ hexo g
$ hexo d
複製代碼
等待1分鐘左右,瀏覽器訪問我的域名。
至此,您的Hexo博客已經搭建在雲服務器, 域名爲我的域名。
Hexo默認的主題是landscape,推薦如下主題:
themes
下。_config.yml
的theme字段,爲主題文件夾的名稱:# Extensions
## Plugins: https://hexo.io/plugins/
## Themes: https://hexo.io/themes/
theme: <主題文件夾的名稱>
複製代碼
以上主題都有比較詳細的說明文檔,本節主要解決主題優化的常見問題。
主題優化通常包括:
設置「RSS」
添加「標籤」頁面
添加「分類」頁面
設置「字體」
問題:引用國外字體鏡像較慢。
解決:能夠改用國內的。將\themes\*\layout_partials\head external-fonts.swig文件中fonts.google.com改爲fonts.lug.ustc.edu.cn。
設置「代碼高亮主題」
側邊欄社交連接
問題:圖標哪裏找?
解決:Font Awesome
開啓打賞功能
問題:微信支付寶二維碼不美觀,規格不一。
解決:在線生成二維碼
設置友情連接
騰訊公益404頁面
站點創建時間
訂閱微信公衆號
設置「動畫效果」
問題:慢,須要等待 JavaScript 腳本徹底加載完畢後纔會顯示內容。 解決:將主題配置文件_config.yml
中,use_motion字段的值設爲 false
來關閉動畫。
設置「背景動畫」
主題優化還包括:
在 themes/*/source/css/_custom/custom.styl 中添加以下代碼:
body{
background:url(/images/bg.jpg);
background-size:cover;
background-repeat:no-repeat;
background-attachment:fixed;
background-position:center;
}
複製代碼
在 themes/*/source/css/_custom/custom.styl
中添加以下代碼:
@font-face {
font-family: Zitiming;
src: url('/fonts/Zitiming.ttf');
}
.site-title {
font-size: 40px !important;
font-family: 'Zitiming' !important;
}
複製代碼
其中字體文件在 themes/next/source/fonts
目錄下,裏面有個 .gitkeep
的隱藏文件,打開寫入你要保留的字體文件,好比個人是就是寫入 Zitiming.ttf
,具體字庫本身從網上下載便可。
編輯主題的 source/css/_variables/custom.styl
文件,新增變量:
// 修改爲你指望的寬度
$content-desktop = 700px
// 當視窗超過 1600px 後的寬度
$content-desktop-large = 900px
複製代碼
.site-meta {
background: $blue; //修改成本身喜歡的顏色
}
複製代碼
打開 themes/*/source/css/_custom/custom.styl
,在裏面寫下以下代碼:
// 鼠標樣式
* {
cursor: url("http://om8u46rmb.bkt.clouddn.com/sword2.ico"),auto!important
}
:active {
cursor: url("http://om8u46rmb.bkt.clouddn.com/sword1.ico"),auto!important
}
複製代碼
打開 themes/*/layout/_partials/head.swig
文件,在 {% if theme.pace %}
標籤下的 {% endif %}
以前插入代碼:
<script>
(function(){
if('{{ page.password }}'){
if (prompt('請輸入密碼') !== '{{ page.password }}'){
alert('密碼錯誤');
history.back();
}
}
})();
</script>
複製代碼
寫文章時加上password: *
:
---
title: 2018
date: 2018-10-25 16:10:03
password: 123456
---
複製代碼
/themes/*/source/js/src
下新建文件click.js
,接着把如下粘貼到click.js
文件中。 代碼以下:!function(e,t,a){function n(){c(".heart{width: 10px;height: 10px;position: fixed;background: #f00;transform: rotate(45deg);-webkit-transform: rotate(45deg);-moz-transform: rotate(45deg);}.heart:after,.heart:before{content: '';width: inherit;height: inherit;background: inherit;border-radius: 50%;-webkit-border-radius: 50%;-moz-border-radius: 50%;position: fixed;}.heart:after{top: -5px;}.heart:before{left: -5px;}"),o(),r()}function r(){for(var e=0;e<d.length;e++)d[e].alpha<=0?(t.body.removeChild(d[e].el),d.splice(e,1)):(d[e].y--,d[e].scale+=.004,d[e].alpha-=.013,d[e].el.style.cssText="left:"+d[e].x+"px;top:"+d[e].y+"px;opacity:"+d[e].alpha+";transform:scale("+d[e].scale+","+d[e].scale+") rotate(45deg);background:"+d[e].color+";z-index:99999");requestAnimationFrame(r)}function o(){var t="function"==typeof e.onclick&&e.onclick;e.onclick=function(e){t&&t(),i(e)}}function i(e){var a=t.createElement("div");a.className="heart",d.push({el:a,x:e.clientX-5,y:e.clientY-5,scale:1,alpha:1,color:s()}),t.body.appendChild(a)}function c(e){var a=t.createElement("style");a.type="text/css";try{a.appendChild(t.createTextNode(e))}catch(t){a.styleSheet.cssText=e}t.getElementsByTagName("head")[0].appendChild(a)}function s(){return"rgb("+~~(255*Math.random())+","+~~(255*Math.random())+","+~~(255*Math.random())+")"}var d=[];e.requestAnimationFrame=function(){return e.requestAnimationFrame||e.webkitRequestAnimationFrame||e.mozRequestAnimationFrame||e.oRequestAnimationFrame||e.msRequestAnimationFrame||function(e){setTimeout(e,1e3/60)}}(),n()}(window,document);
複製代碼
\themes\*\layout\_layout.swig
文件末尾添加:<!-- 頁面點擊小紅心 -->
<script type="text/javascript" src="/js/src/clicklove.js"></script>
複製代碼
在站點目錄下:
$ npm install gulp -g
複製代碼
安裝gulp插件:
npm install gulp-minify-css --save
npm install gulp-uglify --save
npm install gulp-htmlmin --save
npm install gulp-htmlclean --save
npm install gulp-imagemin --save
複製代碼
在 Hexo
站點下新建 gulpfile.js
文件,文件內容以下:
var gulp = require('gulp');
var minifycss = require('gulp-minify-css');
var uglify = require('gulp-uglify');
var htmlmin = require('gulp-htmlmin');
var htmlclean = require('gulp-htmlclean');
var imagemin = require('gulp-imagemin');
// 壓縮css文件
gulp.task('minify-css', function() {
return gulp.src('./public/**/*.css')
.pipe(minifycss())
.pipe(gulp.dest('./public'));
});
// 壓縮html文件
gulp.task('minify-html', function() {
return gulp.src('./public/**/*.html')
.pipe(htmlclean())
.pipe(htmlmin({
removeComments: true,
minifyJS: true,
minifyCSS: true,
minifyURLs: true,
}))
.pipe(gulp.dest('./public'))
});
// 壓縮js文件
gulp.task('minify-js', function() {
return gulp.src(['./public/**/.js','!./public/js/**/*min.js'])
.pipe(uglify())
.pipe(gulp.dest('./public'));
});
// 壓縮 public/demo 目錄內圖片
gulp.task('minify-images', function() {
gulp.src('./public/demo/**/*.*')
.pipe(imagemin({
optimizationLevel: 5, //類型:Number 默認:3 取值範圍:0-7(優化等級)
progressive: true, //類型:Boolean 默認:false 無損壓縮jpg圖片
interlaced: false, //類型:Boolean 默認:false 隔行掃描gif進行渲染
multipass: false, //類型:Boolean 默認:false 屢次優化svg直到徹底優化
}))
.pipe(gulp.dest('./public/uploads'));
});
// 默認任務
gulp.task('default', [
'minify-html','minify-css','minify-js','minify-images'
]);
複製代碼
只須要每次在執行 generate
命令後執行 gulp
就能夠實現對靜態資源的壓縮,壓縮完成後執行 deploy
命令同步到服務器:
hexo g
gulp
hexo d
複製代碼
默認狀況下訪問URL路徑爲:domain/2018/10/18/關於本站
,修改成 domain/About/關於本站
。 編輯 Hexo
站點下的 _config.yml
文件,修改其中的 permalink
字段:
permalink: :category/:title/
複製代碼
安裝插件
npm install hexo-generator-index-pin-top --save
而後在須要置頂的文章的Front-matter中加上top便可:
---
title: 2018
date: 2018-10-25 16:10:03
top: 10
---
複製代碼
打開:/themes/*/layout/_macro/post.swig,定位到