使用Vultr搭建个人Hexo博客

今年下定决心提高自己的写作能力,好的开始是成功的一半,就先记录下我的搭建个人博客历程吧,搭建一个博客需要以下几个步骤

  1. 申请域名
  2. 申请VPS,安装好Hexo需要的一些软件
  3. 本地搭建配置Hexo

申请域名

可以在各大域名商上去申请域名,我是在 godaddy 上申请,这里需要注意的事,域名后期续费是越来越贵的,
所以最好一次性买个几年, 这样一来省钱,二来也避免续费的烦恼,购买域名后,需要注意,
由于我的 VPS 选择了 Vultr,此域名的域名解析服务器需要改成 Vultr 的,怎么修改呢

  1. 点击我的产品中的 DNS ,如下图
    image
  1. 填上 Vultr 的域名服务器


    image

到这里我们的域名申请工作就结束了

VPS

接下来就要申请 vps 了,这里我选择了口碑比较好的 vultr, 注册后点击这里即可配置 server ,前面两步我选择了东京的「CentOS 7 x64」,第三步 Server Size 我选择了第三个普通版

image

这里提前预警下,由于之后我们要安装 lnmp 所以配置最好至少选第三个开始的配置,然我一开始选了第二个,lnmp 装的过程中一直有问题,换成第三个就好了,如果你的 Mysql 至少要安装 5.7 以上,要出点血选择第四个配置了(因为 5.7 比较吃内存),第四,五步可以不选,第六步最好附上你的 SSH Keys 这样使用 SSH 登录你的 VPS 的时候就能免登录了,怎么生成 SSH Keys 呢,可以点这里查看

image

最后一步为你的 Server 起个名字就行啦(建议用域名,如下)

image

Server 的配置我们选好了之后,我们还需要绑定我们的域名与 ip, 这样才能让域名解析器解析正确

点击这里即可拿到 Server 的 ip

image

拿到域名之后点击 DNS 中的 「Add Domain」即可绑定域名和 ip

image

在这里我们的 Server 申请工作就结束了,但申请了之后我们还要再给这个 Server 安装支撑 Hexo 运行的软件,需要安装哪些软件呢,
我们首先需要知道 Hexo 的运行原理,如下图:


image

整体原理如下

  1. 本地计算机将 Sources 下的 Markdown 文件转为 Html 之后,执行「Hexo Deploy」命令后,会把本地生成的静态文件 push 到 Server 上的 git 仓库
  2. 「git-hook」会将自动将以上步骤生成的静态文件 copy 到网站的根目录,然后经过 Nginx 代理服务即可把网站展现给用户,我们的个人博客也就建成了

知道了原理就不难得知
我们要在本地和服务器分别搭建我们的环境

本地环境搭建

  1. 安装 Git 和 Node.js

  2. 安装 Hexo:使用 cmd 命令行,输入下列命令

    $ npm install -g hexo-cli
    
  3. 指定一个文件夹存放你的Blog文件(也就是根目录)

    $ hexo init <folder>  # <folder>替换成你的文件夹地址,在这个地址里生成Hexo初始化文件
    $ cd <folder>  # 进入这个文件夹
    $ npm install  # 在文件夹内自动安装Hexo所依赖的各种模块
    

服务器环境搭建

由以上分析可知我们至少要装 git, nginx, 主要步骤如下

  1. 使用以下命令即可安装 git

    yum install git 
    
  2. 至于 nginx 的安装我推荐大家用 lnmp, Linux、Nginx、MySql、Php 可以说是建站的标配了, lnmp 只要执行一行命令就能把这些软件都安装好,能省下我们不少精力,不过这四个软件的安装可能需要半小时之久,大家要做好心理准备_, 安装成功后我们访问域名,即会出现以下提示,说明我们安装成功了

    image
  1. 安装好之后我们首先需要建立一个 git 仓库来存放我们本地 blog 生成的静态目录,为了安全我们通常不以 root 身份来操作,所以这里我们选择
    新建一个用户,专门运行 git 服务

    adduser git
    

    以下步骤赋予 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
    

画外音:可以想一下为啥要给用户 git 权限,如果不给的话可能会出现什么问题

  1. 切换用户,配置SSH

    由于本机 Hexo 部署好文件后需要 push 到远程,为了避免每次 push 时都要输入密码,我们需要进行免密操作,步骤如下

    使用 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
    

    然后在本机执行以下命令查看配置是否成功

    ssh  git@服务器ip地址
    
  1. 接下来我们新建一个 git 仓库来存放本地 Hexo 生成的静态文件

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

    画外音: 为啥不用 git init 而用 git init bare, 请这里查看两者的区别

    建好仓库之后我们设置一下 「git hook」

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

    输入以下内容

    #!/bin/bash
    GIT_REPO=/home/git/blog.git
    TMP_GIT_CLONE=/tmp/blog
    #这里我用 /var/www/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 赋予这个文件可执行权限。

检查一下 blog.git、.ssh、blog目录的用户权限组是否都为git:git
    
```
# /var/www/是怎么回事?注意我在 git hook 里提到用 /var/www/blog 作为网站的根目录
ll -a /var/www/
ll -a /home/git/
ll -a ~/.ssh
```

![image](http://upload-images.jianshu.io/upload_images/167958-955dbf4f8aa1869d.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

如果哪个不是,执行以下命令再看一下

```
sudo chown git:git -R /var/www/blog
sudo chown git:git -R /home/git/blog.git
```
  1. 配置 Nginx

    由于我们的 blog 用到了 nginx 静态文件处理服务,需要修改 nginx 的配置文件(nginx.conf),进入 nginx 的配置目录

    /usr/local/nginx/conf/
    

    先备份一下 nginx.conf

    cp nginx.conf nginx.conf.bak
    

    然后打开 nginx.conf 文件,修改 root 为我们在上一步新建的 blog 的目录

    server
    {
        listen 80 default_server;
        #listen [::]:80 default_server ipv6only=on;
        server_name _;
        index index.html index.htm index.php;
        #修改这里为我们的 blog 目录
        root /var/www/blog;
    
        ...
    }
    

    保存修改后使用 nginx -t 查看配置是否有错误,若无误,则执行 lnmp restart 即可让配置生效

  2. 将本机 Hexo 工程的 git 地址指向 服务器 git 地址

    # 在本地环境搭建时我的博客放在~/hexos文件夹里
    cd ~/hexos
    vim _config.yml
    

    找到 deploy 选项,修改 repo 为你的远程服务器地址

    deploy:
    type: git
    repo: git@服务器ip:/home/git/blog.git
    branch: master
    

    完成了以上本地和服务器配置之后,使用 Hexo 创建写好了文章之后,执行 「hexo deploy」命令,稍等片刻后,访问我们的域名即可显示我们的博客文章,大功告成!

参考:VPS搭建个人Hexo博客

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,377评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,390评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,967评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,344评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,441评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,492评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,497评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,274评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,732评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,008评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,184评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,837评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,520评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,156评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,407评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,056评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,074评论 2 352

推荐阅读更多精彩内容