VPS搭建个人Hexo博客

发布于 2018-08-22  约 12 分钟
原文地址:https://www.xksblog.top/use-V...

作为一个天天造BUG的人,必然要经常访问谷歌等网站,所以前些日子买了VPS自己搭了梯子。但如果只是用VPS来搭梯子那就太浪费了,所以又折腾了一天,把自己之前的Hexo博客也迁移了过来,但也是踩了不少坑。今天就跟大家分享一下,如何使用VPS搭建个人Hexo博客。

准备工作

  • VPS(我使用的是Vultr,系统是CentOS 7)
  • SSH工具(远程连接你的VPS,这里使用的是PuTTY)
  • 域名(在阿里云购买的,有些活动域名首年仅1元)
  • 本地搭建好的Hexo博客(这里不再赘述,网上教程一大把,当然也可以参考我之前写的Hexo+码云+git快速搭建免费的静态Blog,只看里面的第一步就好)

VPS搭建Hexo博客的原理

如果上来就干,不知其所以然,那很难成功的,即使出了bug也不知道该从哪里调试。我们先来看下VPS搭建Hexo博客的基本原理,一图以蔽之:
vps搭建hexo架构图

好了,我们来稍微分析一下:

  1. 本地计算机方面,本地Hexo在之前准备阶段已经安装好了,所以这一块我们无需多虑。
  2. 服务器方面,我们需要在服务器上搭建一个Git仓库。在本地Hexo执行deploy后,博客文件会被push到这个Git仓库,然后这个仓库又会通过一个git-hooks的功能把文件同步到VPS的网站根目录,经过Nginx代理服务把网站展现给用户。

整个搭建流程

  1. 服务器端安装配置Git、Nodejs、Nginx。
  2. 创建git用户,建立git裸库,配置git-hooks。
  3. 配置本地Hexo,完成git自动化部署。

服务器环境搭建

以下均需要通过SSH工具连接VPS进行操作

安装Git和Nodejs

# 安装git
yum install git
# 安装Nodejs
curl --silent --location https://rpm.nodesource.com/setup_5.x | bash -

使用git --versionnode --version查看,显示版本号则安装成功,

安装Nginx

yum install nginx

使用nginx -v查看,显示版本号则安装成功
查看版本号

配置Nginx

找到Nginx目录下的conf配置文件,执行:

# 修改前先备份一下
cp nginx.conf nginx.conf.bak
# 修改配置文件
vim nginx.conf

修改配置文件中的server部分:

    server {
        # 默认80端口
        listen       80 default_server;
        listen       [::]:80 default_server;
        # 修改server_name为自己之前注册好的域名
        server_name  www.xksblog.top xksblog.top;
        # 修改网站根目录,在这里存放你的Hexo静态文件,请自行选择或创建目录
        root         /var/www/blog;
        # 下面保持默认
        # 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 {
        }
    }

配置完成后保存退出,使用nginx -t查看配置是否有错误。
查看运行状态:systemctl status nginx,显示running表示成功运行。
nginx-running

创建git用户

1.创建一个git用户,并根据提示设置密码,用来专门运行git服务:

adduser git

2.赋予git用户sudo权限

chmod 740 /etc/sudoers
vim /etc/sudoers

找到以下内容:

## Allow root to run any commands anywhere
root    ALL=(ALL)     ALL

在下面添加一行:git ALL=(ALL) ALL

保存退出后改回权限:chmod 400 /etc/sudoers

3.切换用户,配置SSH

使用su git切换到git用户,再执行下列操作:

# 切换到git用户目录
cd /home/git
# 创建.ssh文件夹
mkdir ~/.ssh
# 创建authorized_keys文件并编辑
vim ~/.ssh/authorized_keys
# 如果你还没有生成公钥,那么首先在本地电脑中执行 cat ~/.ssh/id_rsa.pub | pbcopy生成公钥
# 再将公钥复制粘贴到authorized_keys
# 保存关闭authorized_keys后,修改相应权限
chmod 600 ~/.ssh/authorzied_keys
chmod 700 ~/.ssh

然后可以通过本地Git Bash执行ssh命令测试是否可以免密登录

ssh -v git@服务器ip地址

这样git用户就添加好了。

建立git裸库

# 回到git目录
cd /home/git
# 使用git用户创建git裸仓库,以blog.git为例
git init --bare blog.git

检查用户组权限

我们的git裸仓库已经建立好了,离成功又近了一步。为了以防万一,我们要检查一下之前的blog.git、.ssh、blog目录的用户组权限是否都为git:git

# 还记得/var/www/吗?这是之前配置nginx时,我们自己选定的网站根目录,请依据你自己的设置更改
ll -a /var/www/
ll -a /home/git/

用户组权限查看

如果有哪个不是,执行下面相应的命令后再查看

sudo chown git:git -R /var/www/blog
sudo chown git:git -R /home/git/blog.git

使用git-hooks同步网站根目录

简单来说,我们使用一个钩子文件:post-receive,每当git仓库接收到内容的时候,就会自动调用这个钩子,把内容同步到网站根目录。

在git用户下执行:

# 新建一个post-receive文件并编辑
vim ~/blog.git/hooks/post-receive

在里面输入以下内容,注意修改为自己的设置:

#!/bin/bash
GIT_REPO=/home/git/blog.git
TMP_GIT_CLONE=/tmp/blog
PUBLIC_WWW=/var/www/blog
rm -rf ${TMP_GIT_CLONE}
git clone $GIT_REPO $TMP_GIT_CLONE
rm -rf ${PUBLIC_WWW}/*
cp -rf ${TMP_GIT_CLONE}/* ${PUBLIC_WWW}

保存退出后,执行:chmod +x post-receive赋予这个文件可执行权限。

好了,以上就是服务器端需要配置的内容。我们还差最后一步就可以完成整个部署了!

配置本地Hexo的_config.yml

非常简单,只需要找到本地Hexo博客的站点配置文件_config.yml,找到以下内容并修改:

deploy: 
  type: git
  repo: git@你的服务器IP:/home/git/blog.git
  branch: master

保存后,剩下的就是Hexo的日常操作了,这里就不赘述了,写完文章后,在你的本地博客根目录执行以下命令:

hexo clean
hexo g -d

就可以实现线上博客的自动更新了!一切搞定!

一些注意点和小坑

很多时候我们没这么幸运,博客搭建过程中总会出现无数的坑。

CentOS和Ubuntu

如果你的VPS系统是Ubuntu,那么yum命令肯定要换成apt-get

一般来说著名的linux系统基本上分两大类:
1.RedHat系列:Redhat、Centos、Fedora等
2.Debian系列:Debian、Ubuntu等
RedHat 系列
1 常见的安装包格式 rpm包,安装rpm包的命令是“rpm -参数”
2 包管理工具 yum
3 支持tar包
Debian系列
1 常见的安装包格式 deb包,安装deb包的命令是“dpkg -参数”
2 包管理工具 apt-get
3 支持tar包

vim: command not found

系统自带的vim未正确安装

输入rpm -qa|grep vim命令, 如果vim已经正确安裝,会返回下面的三行代码:

root@server1 [~]# rpm -qa|grep vim
vim-enhanced-7.0.109-7.el5
vim-minimal-7.0.109-7.el5
vim-common-7.0.109-7.el5

如果少了其中的某一条,比如vim-enhanced,就用命令yum -y install vim-enhanced来安裝缺少的那一个。

如果上面的三条一条都沒有返回, 那就直接用yum -y install vim*命令吧!

Permission denied

如果git用户出现类似权限不够被拒绝访问的问题,直接试试使用sudo权限吧!

例如:在创建文件夹的时候出现权限不够的问题,最简单的解决方法就是sudo mkdir 文件夹名

但还是具体问题具体分析,多多谷歌。

一切正常,但deploy后网页无法显示

首先要查看一下服务器网站根目录下是否有Hexo的静态文件。

如果没有,说明git配置出现问题,再仔细查找配置上的原因。

如果已经传入了静态文件,说明可能是服务器nginx等环境配置出现问题,这种情况排查起来比较困难,一个简单粗暴的办法就是试试一键安装LNMP(安装方法请自行百度+谷歌)。

LNMP代表的就是:Linux系统下Nginx+MySQL+PHP这种网站服务器架构
同样还有LAMP,它代表的是Linux+Apache+Mysql/MariaDB+Perl/PHP/Python

后记

本人也是一个Linux小白,在使用VPS搭建Hexo博客的时候,着实出现了不少头疼的问题。一步步走下来,收获颇丰。解决问题的过程,就是学习提升的过程。如果博客搭建没那么顺利,解决不了那些头疼的问题,试着稍作休息,或许灵光一闪,思路也就有了。

阅读 7k发布于 2018-08-22

推荐阅读
目录