hexo搭建博客分享

知识点准备

我主要参考了两篇文章:html

我采用的方案是云服务器+域名的方式node

首先是要搞懂一些概念nginx

Nginx

Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。在这里的主要做用就是挂载相关目录到对应端口(或者说让其余计算机访问服务器的某个端口时,直接访问对应目录)。该教程中只须要装在服务器。

Git

Git(读音为/gɪt/。)是一个开源的分布式版本控制系统,能够有效、高速地处理从很小到很是大的项目版本管理。简单来讲就是代码库及版本管理工具。在这里的做用就是:在服务器中建立仓库(钩子),而后在本地的git工具中拉取项目和提交项目。其中hexo里面集成了提交打包好的文件的命令,即hexo d。该教程需安装在服务器和客户端。

Linux

Linux是一套无偿使用和自由传播的类Unix操做系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操做系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操做系统。通常用于服务器的操做系统,多用户这个概念很重要,不一样的用户对文件的操做权限都会不一样。在这里的做用只要是用root管理员权限安装一些软件和开启一些服务、建立git操做用户和分配权限。git用户只能对git仓库所在文件夹进行操做。
注意:在这里使用的是centos版本。其中yum是centos自带的包管理工具。文中编辑文本信息都用的是vim编辑器。

Node.js

Node 是一个让 JavaScript 运行在服务端的开发平台,它让 JavaScript 成为与PHP、Python、Perl、Ruby 等服务端语言分庭抗礼的脚本语言。也就是说node.js是一个后台语言。这个是hexo的依赖环境,同时咱们还须要用到node.js里面包含的包管理工具npm。通常来讲这个只须要安装在本地便可,也就是说你要对博客进行操做或者开发的时候,就必定要有node.js的环境。

思路整理

结合上面涉及的知识点,我先大概列一下服务器端和客户端所须要作的事情。
服务器端:git

  • 安装Git、建立仓库、及配置自动部署
  • 建立git用户并分配好文件夹权限
  • 安装Nginx和配置好

客户端:web

  • 安装Git
  • 安装node.js
  • 安装hexo框架

客户端配置

客户端方面的配置比起服务器端就简单不少,由于客户端的工做只要负责编辑文章、修改项目文件、推送文章等操做。
本人使用的操做系统是windows,下面的配置项也只提供windows的操做方法。npm

安装Git

直接在 Git官网 找到该位置下载,而后安装便可
图片描述json

安装了以后配置一下我的信息,输入如下命令。vim

git config --global user.name "yourname"

git config --global user.email "youremail"

(第一次安装git的跳过这一步)而后检查该电脑有没有建立ssh密匙对,“id_rsa”(私匙)和“id_rsa.pub(公匙)”这两个。找到图中的目录(Administrator这个是个人用户名,视我的状况而定。)。
图片描述segmentfault

(已经有密匙对的话跳过这一步)在git bash中输入如下命令建立密匙对(注意修改本身的邮箱):windows

ssh-keygen -t rsa -C "本身的邮箱"

到这里就应该已经完成了密匙对的建立了,注意一下这个 id_rsa.pub ,待会服务器配置会用得上。

安装Node.js

很简单,直接到 官网 下载、安装便可。
安装了Node.js以后里面包含了npm包管理工具。
图片描述

安装hexo

这一步就须要用到刚刚下载Node.js里面的npm命令了。
首先经过npm全局安装hexo,打开cmd命令行输入:

npm install -g hexo-cli

等到安装完成后,就要开始建立、初始化项目了。先把刚刚的命令窗口关掉吧。而后进入你要建立项目的目录,好比在 D:/projects/ 建立以后就是 D:/projects/blog,而后在当前目录打开命令行,输入:

hexo init blog

等到安装结束后进入项目目录。找到"package.json",编辑文件,在"dependencies"中追加如下一行:
图片描述

在当前项目目录下执行如下命令:

npm install

到这里客户端的项目就已经能够启动了,输入如下验证下:

hexo s

若是看到这条信息,说明项目启动成功,打开浏览器访问 localhost:4000 就能够看到网站了。
图片描述

客户端的就差很少了,其中还有个服务器仓库配置在“服务器端配置”章中底部会说明。
文章末还会有一些经常使用命令的小补充。


服务器端配置

安装Nginx和配置

登陆服务器的root用户,运行如下代码安装nginx:

yum -y update
yum install -y nginx

配置nginx
接下来要修改配置,设置网站映射的根目录和访问域名。使用vim编辑如下文件:

vi /etc/nginx/conf.d/default.conf

找到对应配置,修改中文的地方:

server {
    listen       80; #这里填端口号,80即默认端口,访问时不需带端口号。
    server_name  这里填写域名
    root         这里填写网站根目录地址;
}

启动nginx:

service nginx start

安装git和建立钩子

安装git:

yum install -y git

建立git用户以及设置密码(建立git用户是为了安全起见,防止权限太大进行其余操做):

adduser git
passwd git

给git用户分配更高级的权限
输入如下代码 sudo vi /etc/sudoers ,打开sudoers文件,输入 :/root 进行搜索,搜索到代码行 root ALL=(ALL) ALL ,而后在这一行下添加如下代码 git ALL=(ALL) ALL 。输入完毕以后,命令模式下输入 wq! 强制保存退出vi。
效果以下图:
图片来自网站:https://segmentfault.com/a/1190000012907499#articleHeader16
图片来自网站:https://segmentfault.com/a/11...

切换到git用户登陆,在用户home目录中添加密匙文件。做用是识别客户端的主机身份,可免登陆操做git仓库

su git
mkdir ~/.ssh
vi ~/.ssh/authorized_keys

编辑 authorized_keys 文件时将(上文提过)客户端建立的公匙 “id_rsa.pub” 内容复制到文件中。
接下来就要分配权限

chmod 600 ~/.ssh/authorized_keys
chmod 700 ~/.ssh

如今就验证下以前的配置是否生效,在客户端的git bash中输入(记得改服务器ip):

ssh -v git@服务器ip

在git的home目录中建立 初始化一个裸库,以管理代码。

cd ~
git init --bare blog.git

建立一个钩子,做用是当仓库文件有新的推送时,把文件拷贝到站点根目录下。使用vim建立并编辑post-receive文件:

vi ~/blog.git/hooks/post-receive

添加如下内容进去(其中/var/www这个是网站根目录,记得修改为本身的。):

#!/bin/sh
git --work-tree=/var/www --git-dir=/home/git/blog.git checkout -f

保存以后,修改文件权限

chmod +x ~/blog.git/hooks/post-receive

最后一步,开放服务器中的80端口。
先输入如下命令确认防火墙有无开发80端口:

iptables -L -n

# 注意 Chain OUTPUT里面有无如下这行,没有的话就是没有开发
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:80

若没有开放则须要修改配置:

vi /etc/sysconfig/iptables

#打开后在配置项找到对应的位置插入如下这行。
-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT

而后重启防火墙以更新配置

service iptables restart

到这里服务器端的就配置完啦

接下来就是上文说到的仓库地址配置
在客户端的项目目录下找到_config.yml,修改下面的对应信息:

deploy:
    type: git
    repo: git@SERVER:/home/git/blog.git       #此处的SERVER需改成你本身服务器的ip
    branch: master

补充

hexo还有不少用户制做的主题供你们选择,能够在 官网主题 上找,进去对应的主题中会有教程的了。

hexo经常使用指令有以下(均可以只写第一个字母,如 hexo n):

hexo clean # 清空缓存文件和已生成的静态文件
hexo new [名字] # 新建一篇文章
hexo generate # 生成静态文件,即html文件
hexo deploy # 部署网站,即提交到服务器的仓库(以前的git钩子已设置成仓库文件一旦更新,会自动更新到站点目录)。

更多指令可在 官方文档 中查询。


第一次写一篇这么长的文章,口水话不少,也有不少不清晰的地方。不过相信会越写越好的。祝你们学习愉快,工做顺利!

相关文章
相关标签/搜索