b1cat`s

VPS Hexo 搭建个人博客

Word count: 1.1kReading time: 4 min
2017/12/03

一直想着搭建一个博客,便开始折腾了 ..
先是自己花了2月时间写了前后端,但有一天系统突然崩了..(还没来得及做备份)
So,就有了今天用VPS hexo搭建一个博客总结和经验分享。

本地安装Hexo

Hexo 依赖Node.js 和 Git, 首先将其下载

安装好后 ,安装hexo

npm install hexo-cli -g

初始化 hexo博客 名字任意

hexo init name

进入博客目录,安装相关插件依赖等

cd name
npm install

安装完成后, 本地检验一下

hexo g # 渲染 Source 目录下文件静态页面
hexo s # 本地服务验证效果

访问http://localhost:4000/ 查看效果


VPS 配置

首先需要配置CentOS EPEL 源 ,然后安装Nginx

sudo yum install epel-release
sudo yum install nginx

安装完成后启动服务

sudo service nginx restart

之后会看到Nginx的默认页

一些默认配置文件位置

1
2
3
nginx 默认配置文件位置/etc/nginx/nginx.conf
nginx 默认服务配置位置/etc/nginx/conf.d/default.conf
nginx 默认错误日志位置/var/log/nginx/error.log

接下来就是要创建新的网站目录,这里以/var/blog/html为例

1
2
sudo mkdir /var/blog/html 
sudo chmod 555 -R /var/blog/html # 给目录设置权限

在此目录创建index.html文件,写个以下内容,用于测试服务是否运行正常
<html> Testing ..</html>

在 /etc/nginx/conf.d/default.conf 配置如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
server {
listen 80 default_server;
#listen [::]:80 default_server;
server_name _;
root /var/blog/html;

# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;

location / {
}

error_page 404 /404.html;
location = /40x.html {
}

error_page 500 502 503 504 /50x.html;
location = /50x.html {
}

}

本机访问VPS的IP (需要重启nginx)

如果没有出现 Testing .. 那么恭喜你 也要开始爬坑了 ==


//此处为本人无法正常访问的爬坑经历,可正常访问者跳过//

查看nginx 的错误日志 显示 “ 403 forbidden (13: Permission denied)

可能出现以下几种情况

  1. 网站目录权限
  2. SELinux

解决方法

part 1:

1
2
sudo chmod -R 777 /var/blog/html/   # 给权限
sudo chown -R $User:$User /var/blog/html # 更改目录所属用户 $User为本人用户名

part 2:

1
sestatus # 查看SeLinux状态

若显示SELinux status: enabled
可将 SELINUX = enforcing 修改为 disabled

1
2
3
4
5
sudo vim /etc/selinux/config  # 进入配置项修改

#SELINUX=enforcing
SELINUX=disabled

重启服务器

1
reboot

//说明//

1
2
3
4
5
6
SELinux 为ContOS 的一个内核安全性机制 。

有三种模式:
Enforcing : 这个预设模式会在系统上实施SELinux的安全性政策 ,拒绝存取及记录行动。拒绝了ngnix 的访问就是开启了Enforcing模式的原因。
Permissive : 在 Permissive 模式下,SELinux 会被启用但不会实施安全性政策,而只会发出警告及记录行动。在排错时很有用。
Disabled:SELinux 停用。

部署 hexo 到 服务器

hexo 可使用 git 部署

首先在 VPS 上安装 git

1
yum install git

创建空白 git 仓库,并且设置 git hook

1
2
3
 cd ~ 
sudo mkdir blog.git && cd blog.git
sudo git init --bare

/root/blog.git/hooks/post-receive 编辑以下内容

1
2
3
4
5
6
7
8
#!/bin/bash
GIT_REPO=/root/blog.git #git仓库
TMP_GIT_CLONE=/tmp/blog
PUBLIC_WWW=/var/blog/html #网站目录
rm -rf ${TMP_GIT_CLONE}
git clone $GIT_REPO $TMP_GIT_CLONE
rm -rf ${PUBLIC_WWW}/*
cp -rf ${TMP_GIT_CLONE}/* ${PUBLIC_WWW}

赋予脚本的执行权限

1
sudo chmod +x post-receive

配置本机环境

在博客目录下运行下面命令,安装 git 部署工具。

1
sudo npm install hexo-deployer-git --save

修改博客的配置文件 _config.yml,修改 deploy 选项:

1
2
3
4
5
deploy:
type: git
message: update
repo:
s1: root@ip:/root/blog.git/,master

然后运行 hexo d 部署本地渲染网页到服务器上。

更新博客

使用一款 MarkDown 编辑器写 Blog 。写完后将文件以 *.md 的格式保存在本地[网站目录]\source\_posts中。文件编码必须为 UTF-8,这一点仅 Windows 用户需注意。

每篇 Blog 都有固定的参数必须填写,参数如下,注意每个参数的 : 后都有一个空格。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
title: title
date: yyyy-mm-dd
categories: category
tags: tag
#多标签请这样写:
#tags: [tag1,tag2,tag3]
#或者这样写:
#tags:
#- tag1
#- tag2
#- tag3
---
正文

编写完后,只需要在 hexo 文件夹下执行hexo g && hexo d,博客即可更新。

参考链接


CATALOG
  1. 1. 本地安装Hexo
  2. 2. VPS 配置
  3. 3. 部署 hexo 到 服务器
  • 配置本机环境
  • 更新博客
    1. 0.1. 参考链接