正文
一. 前言
当然可以选择阿里云或者腾讯云,而我为什么选择DigitalOcean购买服务器?主要原因是便宜,只需要5美元就能购买一年期限的美国服务器,需要学生GitHub认证后会赠送代金券,不过购买服务器需要Paypal,购买地址为:
https://m.do.co/c/1d4464e8355e.
1. 极客,想拥有一个漂亮的博客,想快速了解,但不想把时间花在由于细节导致的各种问题上.
2. 只是想快速拥有一个在自己服务器上的博客的朋友.
二. 博客框架的选择
-
Jekyll (https://jekyllrb.com/)
-
hugo (http://www.gohugo.org/)
-
django (https://www.djangoproject.com/)
-
hexo (https://hexo.io/)
选择的标准有什么呢?
-
美观程度
-
系统需求
-
搭建难度
-
可扩展性
-
插件提供
-
文档是否全面
三. Hexo介绍
Hexo 特点
1. 支持Markdown: 支持Markdown意味着你可以把经历从排版中解放出来.
2. 轻量: 无需拥有后台及数据库,专心写好你的文章
3. 一键部署: 可以通过Git或者ftp来将生成的静态页面部署到服务器或者主机空间中
4. 插件丰富: 丰富的插件可以满足你的各种需求.
Hexo的工作机制
Node.js和npm
Node.js是一个基于Chrome V8引擎的JavaScript运行环境,为我们的Hexo提供js脚本的运行环境.而npm则是一个JavaScript的包管理工具.主流的很多语言都会有自己的包管理器(们):
-
PHP
-
Composer
-
-
Ruby
-
gem
-
-
Python
-
pip
-
easy_install
-
-
Javascript
-
bower
-
npm
-
yarn
-
四. 安装所需环境
安装Node.js
安装git
-
Git-Downloads(git-scm.com/downloads)下载 64-bit Git for Windows Portable ,双击选择依照你个人喜好指定的目录(注意介于权限问题,避免在c:/program files下),我安装在c:/some/git下
-
右键开始(windows 10)-搜索,输入环境变量,编辑系统环境变量.
设置本地用户的信息,引号内随意填:
git config --global user.name "illgo" git config --global user.email "i@illgo.cn"
在这里解释Yarn(npm相同)全局安装和本地安装的区别:
我们安装hexo需要作为一个工具在命令行下可以直接运行,所以采用全局安装;而像hexo依赖的插件则可以在hexo项目目录下本地安装:
yarn global add hexo
-
Hexo配置文件:myblog/_config.yml
-
主题配置: myblog/themes/next/_config.yml
创建站点目录
hexo init
安装主题NexT
git clone https://github.com/iissnan/hexo-theme-next themes/next
启用主题
长成这样:
theme: next
hexo s --debug
Hexo基本配置
NexT主题配置
六.部署
-
部署到自己的服务器上
-
网上流行的GitHub Pages
部署到服务器
hexo生成静态页面->git提交到git服务器->git服务器通过Hook运行脚本,在www目录下clone Git仓库->呈现页面
为SSH连接创建密钥对
1. 创建SSH密钥对:
ssh-keygen -t rsa -C "i@illgo.cn"
-
id_rsa 私钥
-
id_rsa.pub 公钥
2. 在服务器中添加公钥
在服务器上安装Web服务器
安装Apache
yum -y install httpd systemctl start httpd
然后访问该服务器的80端口即可看到Apache的测试页面:
在服务器上创建Git服务器
1. 服务器端安装Git
yum install -y git
2. 创建Git用户
useradd git passwd git
3. 创建空仓库
mkdir -p /home/git/repos/myblog.git git init --bare /home/git/repos/myblog.git
chown -R git:git /home/git/repos/myblog.git/
5. 在web目录下Clone
git clone /home/git/repos/myblog.git /var/www/html chown -R git:git /var/www/html/
4. 设置Git Hook
我们需要一个post-receivew如下:
#!/bin/bash #判断是不是远端仓库 IS_BARE=$(git rev-parse --is-bare-repository) if [ -z "$IS_BARE" ]; then echo >&2 "fatal: post-receive: IS_NOT_BARE" exit 1 fi unset GIT_DIR DeployPath="/var/www/html/" echo "===============================================" cd $DeployPath echo "deploying the myblog web" #git stash #git pull origin master git fetch --all git reset --hard origin/master time=`date` echo "web server pull at webserver at time: $time." echo "================================================"
配置git部署
yarn add hexo-deployer-git
- type: git repo: git@159.89.144.28:/home/repo/blog.git
测试
hexo g --deploy
七. SEO
问题记录
mote: error: cannot run hooks/post-receive: No such file or directory
当直接运行post-receive的时候发现错误是这样的:
-bash: /home/git/repos/myblog.git/hooks/post-receive: /bin/bash^M: bad interpreter: No such file or directory