资讯专栏INFORMATION COLUMN

VPS搭建个人Hexo博客

warmcheng / 2298人阅读

摘要:原文地址作为一个天天造的人,必然要经常访问谷歌等网站,所以前些日子买了自己搭了梯子。今天就跟大家分享一下,如何使用搭建个人博客。创建用户,建立裸库,配置。

原文地址: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博客的基本原理,一图以蔽之:

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

本地计算机方面,本地Hexo在之前准备阶段已经安装好了,所以这一块我们无需多虑。

服务器方面,我们需要在服务器上搭建一个Git仓库。在本地Hexo执行deploy后,博客文件会被push到这个Git仓库,然后这个仓库又会通过一个git-hooks的功能把文件同步到VPS的网站根目录,经过Nginx代理服务把网站展现给用户。

整个搭建流程

服务器端安装配置Git、Nodejs、Nginx。

创建git用户,建立git裸库,配置git-hooks。

配置本地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表示成功运行。

创建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博客的时候,着实出现了不少头疼的问题。一步步走下来,收获颇丰。解决问题的过程,就是学习提升的过程。如果博客搭建没那么顺利,解决不了那些头疼的问题,试着稍作休息,或许灵光一闪,思路也就有了。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/40090.html

相关文章

  • Hexo快速搭建静态博客并实现远程VPS自动部署

    摘要:提示,如果需要通过实现服务器自动化部署,推荐使用会更方便一些然后在目录初始化本地仓库并提交到这时候上已经有我提交的代码了。再新建一个文件处理部署相关脚本,内容如下将新增的与两个文件到服务器。 这篇文章将如何搭建hexo,以及如何通过git webhooks实现远程vps的自动部署 这篇文章适合的条件: 简单的用于个人博客、公司博客展示,hexo的定位是静态博客,要实现动态服务器的功能...

    keke 评论0 收藏0
  • 阿里云VPS搭建自己的的Hexo博客

    摘要:博客的架构先搞明白博客从搭建到自动发布的架构,才能更好的理解我们每一步进行的操作。整个搭建流程第一部分服务器环境搭建,包括安装配置创建用户。在裸库的文件夹中,新建文件。 1. 博客的架构 先搞明白Hexo博客从搭建到自动发布的架构,才能更好的理解我们每一步进行的操作。不然只跟着步骤过了一遍,却不知道为什么这么做。 首先看这张架构图:showImg(https://segmentfaul...

    hizengzeng 评论0 收藏0
  • 如何在服务器上搭建hexo博客

    原文链接 随着Vateral主题的开发接近了尾声,在对主题速度优化的时候发现之前用的githubpage问题多多:首先就是因为在国内的原因,访问速度本身就很慢,曾经有次加载一张16kb的图标时间耗费了26s!!?其次,在对资源做CDN托管加速时,域名是需要备案的,显然githubpage也是做不了的;所以果断舍弃了这个把hexo搭建到了我的阿里云服务器上 总体来说还是比把hexo搭建到github...

    MycLambert 评论0 收藏0

发表评论

0条评论

warmcheng

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<