0%

HEXO安装配置

HEXO

用过不少博客系统,从asp版本的pjblog、zblog,到php版本的dedecms、datalife engine、wordpress,折腾来,折腾去,没一个博客系统能坚持用下去的。现在开始折腾hexo了。用过这么多blog,不得不说,hexo的部署是最麻烦的一个。对熟悉linux的同学来说会稍微简单一些,像本人这种linux白痴,麻烦的就不是一点半点,只要有一丁点问题就得到处翻资料解决。

hexo的构成

hexo并不像上面所说的blog系统一样,前台显示内容,然后通过登陆blog后台,编辑修改发布文章,所有内容都保存在数据库里。hexo没有数据库、没有后台,或者说不能通过网站登陆到后台。那么hexo如何保存数据?又如何发表文章?

hexo的“数据库”

一般博客都是从数据库,像mysqlsqlserver里读取网站的配置,然后从数据库读取发表的文章来生成静态或动态网页。hexo不同,它没有数据库,网站配置保存在yml格式的文件里,而每篇文章都以md格式保存为单独的文件。

hexo的“后台”

hexo没有通常意义上的后台,只能通过命令行来操作(当然也可以通过编写插件来实现后台)。

  • hexo n 命令新建文章。
  • hexo g 命令将md格式的文件转换成html格式的文件,此命令会读取网站配置,比如模板和插件等来生成整个网站的静态文件。

这个可以看作是hexo的后台。


hexo的部署方式

hexo g命令生成的html文件完全可以脱离hexo独立展示,于是各种各样的部署方式就出来。按hexo部署位置可分为两种:

1. hexo在服务器上,这种方法每次发表文章都需要登陆服务器来操作,比较麻烦。
2. hexo在自己电脑上,发表文章时在自己电脑上操作,生成文件后通过各种方法将html静态文件上传到服务器。服务器上只存放生成后的静态文件。

安装hexo

本地电脑上安装nodejs、git和hexo

nodejs,官网下载地址。tortoisegit,官网下载地址。windows下直接下载安装包按照提示安装。

hexo安装步骤请参照官网:HEXO

npm install hexo-cli -g
hexo init blog
cd blog
npm install

服务器安装nginx和git

服务器为阿里云ECS,centos7
安装nginx

yum install nginx -y

安装git

yum install git -y

配置

服务端配置

先在客户端生成公钥,在git bash中输入命令

ssh-keygen -t rsa -C "你的email地址"

然后按照提示输入密码,如果不设置密码,直接按回车键,提示重复密码也一样输入密码或者直接回车。

生成的密钥文件在用户目录下:用户目录.ssh\id_rsa.pub,用文本工具打开id_rsa.pub,复制里面的内容备用。

配置nginx

查看nginx配置文件路径

nginx -t

nginx配置文件路径

修改配置文件

vi /etc/nginx/nginx.conf

修改nginx配置

server_name后面填域名,root后面填博客所在目录。

启动nginx服务

systemctl start nginx

nginx服务自启动

systemctl enable nginx

配置git

/var/www/html为hexo网站静态内容,也就是nginx中配置的网站root目录,如/var/www/html

/home/git/project/test.git为网站git仓库

创建用户

adduser git
su git
cd ~
mkdir .ssh
cd .ssh
vi authorized_keys

将客户端生成id_rsa.pub文件的内容复制过来,保存。

ECS用密钥登陆的,不要修改“~/.ssh/authorized_keys”的内容,修改错误可能导致服务器登陆不上。

创建git仓库

cd /home/git 
mkdir project
cd project
mkdir test.git
git init --bare test.git

配置git hooks

cd test.git/hooks
vi post-receive

在文件中输入如下内容

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

添加执行权限

chmod +x post-receive

禁用git用户shell登录

vi /etc/passwd

git:x:1001:1001:,,,:/home/git:/bin/bash

改为

git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell

请确保git安装路径/usr/bin/git-shell

修改git目录下的权限

chmod 700 /home/git
chmod 700 /home/git/.ssh
chmod 644 /home/git/.ssh/authorized_keys

修改目录的所有者

  • cd /home
  • chown git:git git -R
  • sudo chown -R git:git /var/www/html

复制一个名为git-shell-commands的目录:

cp /usr/share/doc/git-1.8.3.1/contrib/git-shell-commands /home/git -R
chown git:git /home/git/git-shell-commands/ -R
chmod +x /home/git/git-shell-commands/help
chmod +x /home/git/git-shell-commands/list

如果没有上面这一步,本地端连接git服务器会报错:

fatal: Interactive git shell is not enabled.
hint: ~/git-shell-commands should exist and have read and execute access.

本地配置

在hexo目录下创建.deploy_git文件夹。

  • cd .deploy_git
  • git init
  • git config user.email 你的email地址
  • git config user.name git

其中“你的email地址”为.ssh-keygen生成公钥的email,git为服务端配置的git用户。

测试git是否能连接上:

ssh -T git@IP地址

修改hexo目录下的_config.yml

deploy:
  type: git
  repo: git@ip地址:project/test.git
  branch: master

完成

在hexo目录下运行命令

hexo generate   //生成静态文件
hexo deploy     //发布到远程服务器