Hexo搭建博客原理
hexo简介
Hexo 是一个快速、简洁且高效的博客框架。Hexo 使用 Markdown(或其他渲染引擎)解析文章,在几秒内,即可利用靓丽的主题生成静态网页。
hexo原理
hexo分为远程服务器 + 本地服务器,在本地编写完.md的博客,直接推到远程服务器上就可以了。
本地服务器需要安装:Git、Node.js、Hexo
云服务器需要安装:Git、Nginx
远程服务器可以为Github或者自己购买的云服务器,如果是Github,可以直接使用Github自带的Pages服务,这里我用的是自己购买的云服务器。
本地安装完hexo有几个关键的文件夹:
1)source:这里面存放你的.md的博客
2)themes:这里面存放博客的主题文件
3)public:当你在本地编写完博客后,需要发布到远程服务器上,执行相应的hexo命令,就会把source中的内容生成静态文件放在public文件夹下,在public中就是一个个的index.html,里面就是生成的博客内容,推到远程服务器上就能直接查看了
Hexo搭建博客过程
一、购买云服务器
这里我购买的是阿里云服务器:CentOS 7.3 64位 1核 2 GiB 1Mbps (学生价买的比较便宜)
二、本地服务器安装Git、Nodejs
如果本地环境已经安装好的可忽略此步
先在本地环境中安装Git和Nodejs(直接下载安装包,一直下一步到结束就行)
然后生成ssh公钥,在桌面右击,点击Git Bash Here打开命令行终端,执行如下命令(直接按三次回车生成密钥)
ssh-keygen -t rsa
生成的密钥默认放在用户目录的.ssh文件夹中,比如我的就是 C:\用户\xxxx.ssh\id_rsa.pub
三、配置云服务器环境
1)配置Git
安装Git
yum install git
创建Git账户
adduser git
添加账户权限
chmod 740 /etc/sudoers
vim /etc/sudoers
找到以下内容
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
在该内容下方添加一行
git ALL=(ALL) ALL
然后,按 Esc 键退出编辑模式,输入”:wq” 保存退出
改回权限
chmod 400 /etc/sudoers
设置git账户密码
sudo passwd git
切换至git用户,创建 ~/.ssh 文件夹和 ~/.ssh/authorized_keys 文件,并赋予相应的权限
su git
mkdir ~/.ssh
vim ~/.ssh/authorized_keys
# 然后将win10中生成的id_rsa.pub文件中的公钥复制到authorized_keys
# id_rsa.pub默认放在用户目录的.ssh文件夹中,比如我的就是 C:\用户\xxxx\.ssh\id_rsa.pub
chmod 600 /home/git/.ssh/authorzied_keys
chmod 700 /home/git/.ssh
在本地Git终端中测试是否能免密登录git,其中SERVER为填写自己的云主机IP,执行输入yes后不用密码就说明好了
(我的情况是输入yes后还是让输了密码,但是输入一次后第二次就没让输密码了,以后都不用输入了)
ssh -v git@SERVER
创建目录
#repo作为为Git仓库目录
mkdir /var/repo
chown -R git:git /var/repo
chmod -R 755 /var/repo
#hexo作为网站根目录
mkdir /var/www/hexo
chown -R git:git /var/www/hexo
chmod -R 755 /var/www/hexo
然后创建一个裸的 Git 仓库
cd var/repo
git init --bare hexoBlog.git
创建一个新的 Git 钩子,用于自动部署 在 /var/repo/hexoBlog.git 下,有一个自动生成的 hooks 文件夹。我们需要在里边新建一个新的钩子文件 post-receive
vim /var/repo/hexoBlog.git/hooks/post-receive
按 i 键进入文件的编辑模式,在该文件中添加两行代码(将下边的代码粘贴进去),指定 Git 的工作树(源代码)和 Git 目录(配置文件等)
#!/bin/bash
git --work-tree=/var/www/hexo --git-dir=/var/repo/hexoBlog.git checkout -f
然后,按 Esc 键退出编辑模式,输入”:wq” 保存退出
修改文件权限,使得其可执行
chown -R git:git /var/repo/hexoBlog.git/hooks/post-receive
chmod +x /var/repo/hexoBlog.git/hooks/post-receive
2)配置Nginx
为了适合小白安装部署和后期网站服务器的扩展性,选用宝塔面板来一键部署Nginx Linux面板6.0安装命令
(暂时仅兼容Centos7.x,其它系统版本请安装5.9稳定版)
yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && bash install.sh
Linux面板6.0升级专业版(可不用)
curl http://download.bt.cn/install/update6.sh|bash
安装完成后会显示面板后台地址、账号和密码,打开面板后台地址登陆面板,选择Nginx的部署方案,静静等待部署
部署完成后,点击网站-添加站点-输入域名(没有域名的输入自己的IP地址),底部的PHP版本选择“纯静态”(其他不改,或者根据自己的习惯来改),提交
网站创建完成后点击末尾的设置-配置文件,看看下方的内容是否已存在于配置文件中,若不存在则补充
server
{
listen 80;
# server_name 填写自己的域名
server_name ali6.cn blog.ali6.cn;
index index.php index.html index.htm default.php default.htm default.html;
# 这里root填写自己的网站根目录,修改为/var/www/hexo
root /var/www/hexo;
……
}
保存
继续点击末尾的设置-网站目录,修改为/var/www/hexo,保存
重启宝塔面板服务
service bt restart
四、本地服务器安装Hexo
个人的本地环境为 Windows10(64位),我安装的目录为D:/blog,建好目录,在该目录下按住Shift右键点击“在此处打开CMD窗口”或者“在此处打开Powershell窗口”,执行如下命令:
npm install hexo-cli -g
hexo init
npm install hexo server
npm install hexo-deployer-git --save
如果在执行hexo init的时候报错 error:enoent:no such file or,请检查你的blog路径是否包含中文等字符
如果在执行hexo init时报错 Failed to connect to github.com port 443: Timed out或者OpenSSL SSL_read:Connecttion was reset, errno 10054,请参考博客https://blog.youkuaiyun.com/natahew/article/details/81387885(我在公司的电脑会报这个错,但是在个人电脑上不会)
继续在窗口输入以下命令,配置Git用户名和邮箱
(如果本地Git已配置过了可忽略,可输入命令 git config --global user.email 或者 git config --global user.name查看,如果有内容说明已配置过)
#定义邮箱(更换为你的邮箱地址就行)
git config --global user.email "you@example.com"
#定义名称(更换自定义一个名称就行)
git config --global user.name "Your Name"
打开blog文件夹,打开_config.yml, 找到deploy修改为以下
deploy:
type: git
#server改为你的服务IP地址或解析后的域名
repo: git@server:/var/repo/hexoBlog.git
branch: master
保存
五、运行你的博客
在blog文件夹中,按住Shift右键点击“在此处打开CMD窗口”或者“在此处打开Powershell窗口”,执行如下命令
hexo clean
hexo g
hexo d
不出错说明完成,但我在执行hexo d的时候总是说权限有问题,如果出现类似问题的话可尝试在云服务器上执行下面命令
chown -R git:git /var/repo/
chown -R git:git /var/www/hexo
现在打开浏览器输入你的域名或者IP地址就可以看到你部署的博客了
常用hexo命令
# 新建博客
hexo new "一篇新文章"
# 生成静态文件(index.html)
hexo g
# 部署到远程服务器上(执行完该命令你服务器上的博客就更新了)
hexo d
参考博客
www.hanyehong.com/如何使用Hexo+云服务器搭建自己的博客
https://blog.youkuaiyun.com/weixin_33907511/article/details/91398208