专栏首页nummyvultr搭建hexo博客

vultr搭建hexo博客

准备工作

安装如下依赖:

  • gcc
  • make 跟git
  • nginx
  • openssl
  • nodejs跟npm

使用root用户安装这些依赖。

$ yum install -y gcc gcc-c++ make git openssl
$ yum install -y nginx
$ curl --silent --location https://rpm.nodesource.com/setup_4.x | bash -
$ yum update and yum install -y nodejs

也可以从自定义repo来安装nginx,新建nginx.repo文件,内容如下

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/mainline/centos/7/$basearch/
gpgcheck=0
enabled=1

复制到/etc/yum.repo.d/

$ cp nginx.repo /etc/yum.repo.d/
$ yum update and yum install -y nginx
$ systemctl enable nginx and systemctl start nginx

创建用户

需要创建一个普通用户用于运行博客,下面创建一个vultr用户,并将其添加到用户组wheel跟nginx。

$ useradd -d /home/vultr -m -r -U -s /bin/bash
$ passwd vultr
$ usermod -aG nginx vultr
$ usermod -aG wheel vultr

创建SSH秘钥

$ ssh-keygen -b 4096 -C "vultr@example.com"

将公钥复制到~/.ssh/authorized_keys

$ ssh-copy-id -i ~/.ssh/id_rsa.pub vultr@example.com

安装hexo

切换到vultr用户,创建 ~/web/web/vultr~/web/git/vultr

### This is our hexo blog root directory
$ mkdir -p ~/web/web/vultr
### This is our git repository directory on the server
$ mkdir -p ~/web/git/vultr
### This is our deploy directory
$ mkdir -p ~/web/git/hexo

进入目录~/web/web/vultr, 然后安装hexo

$ cd ~/web/web/vultr
$ sudo npm install -g hexo-cli hexo-server
$ hexo init && npm install --save

编辑 _config.yml,然后生成静态页面:

$ hexo g

生成的静态页面位于~/web/web/vultr/public

安装nginx

现在还不能访问到网站,需要先配置nginx。

nginx一般使用nginx用户,nginx用户组来运行,这也是前面将vultr添加到nginx用户组的原因。

$ chown -R vultr:nginx ~/web

新增配置文件vultr.conf,放在~/web目录下面。

server {
    listen 80;
    listen [::]:80;
    ## if https is desired, please uncomment the following lines
    #listen 443 ssl http2;
    #listen [::]:443 ssl http2;

    server_name example.com, www.example.com;

    ## if forcing https, please uncomment the following lines
    #if ($scheme = http) {
    #    return 301 https://$server_name$request_uri;
    #}

    location / {
    root /home/vultr/web/web/vultr/public;
    index index.html;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    ## if https is desired, please uncomment the following lines
    #proxy_set_header X-Forwarded-Proto https;
    }
}

vultr.conf 复制到 /etc/nginx/config.d/ , 然后重启nginx。

$ sudo ln -sf ~/web/vultr.conf /etc/nginx/config.d/
$ sudo systemctl restart nginx

使用git部署博客

我们可以在本地撰写博客,然后推送到服务器,让hexo自动生成静态文件,使用vultr用户登录,创建一个git库。

$ cd ~/web/git/vultr
$ git init --bare
$ cd hooks

新建脚本post-receive用于部署博客

#!/bin/bash
deploy_to_dir="/home/vultr/web/git/hexo"

GIT_WORK_TREE=$deploy_to_dir git checkout -f master
echo "DEPLOY:   master  copied to  $deploy_to_dir"

hexo_dir="/home/vultr/web/web/vultr/"

cd $hexo_dir

hexo clean && hexo --silent g

if [[ $? == 0 ]]; then
    echo "Congratulations! Your blog has been correctly deployed"
else:
    echo "Unfortunately your blog has not been deployed correctly"
fi

在部署之前,还需要执行以下命令:

cd ~/web/web/vultr/
rm -rf source scaffolds _config.yml themes
ln -sf /home/vultr/web/git/hexo/themes/tranquilpeak  themes/
ln -sf /home/vultr/web/git/hexo/source .
ln -sf /home/vultr/web/git/hexo/scaffolds .
ln -sf /home/vultr/web/git/hexo/_config.yml .

配置本地git

首先确保本地电脑安装了git,然后新建git库。

$ mkdir -p ~/vultr/git/vultr`
$ cd ~/vultr/git/vultr and git init
$ git remote add production ssh://vultr@example.com:/home/vultr/web/git/vultr

然后安装hexo并撰写博客:

$ mkdir ~/vultr/vultr && cd ~/vultr/vultr
$ hexo init && npm install --save
$ mv  source  _config.yml themes scaffolds ~/vultr/git/vultr
$ ln -sf ~/vultr/git/vultr/source .
$ ln -sf ~/vultr/git/vultr/_config.yml .
$ ln -sf ~/vultr/git/vultr/scaffolds .
$ hexo new "Test Post"

接下来就可以推送博客了:

$ cd ~/vultr/git/vultr
$ git add . && git commit -m "new post"
$ git push production master

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • git bash的安装和配置教程

    分布式 : Git版本控制系统是一个分布式的系统, 是用来保存工程源代码历史状态的命令行工具;

    业余草
  • 【番外篇】pipework和openvSwitch学习

    Pipework允许您在任意复杂的场景中将容器连接在一起。Pipework使用cgroups和namespace,并使用“普通”LXC容器(用它创建...

    BH9AP_Librant
  • Caffe(13)--(SSRNet模型)Keras转Caffe教程

    SSR-Net: A Compact Soft Stagewise Regression Network for Age Estimation paper:h...

    对角巷法师
  • 适配器模式简介

    适配器模式可以提高我们的开发效率,比如我们常见的LIstView、GridView和RecyclerView都需要使用Adapter。他就像一个粘合剂,将两个不...

    先知先觉
  • Kotlin入门教程——目录索引

    Kotlin是谷歌官方认可的Android开发语言,即将发布的Android Studio 3.0版本也会开始内置Kotlin,所以未来在App开发中Kotli...

    用户4464237
  • Android 中的Binder跨进程通信机制与AIDL

    如果对进程、线程概念还很懵懂的同学可以看一下之前发表的一篇博客,里面是基础概念: IPC进程间通信/跨进程通信 http://blog.csdn.net...

    先知先觉
  • 在WordPress 5.x 中把 HTML 转换成 Markdown 编写文件

    即使在 WordPress 5 启用新的 Gutenberg 编辑器之后,很多 Markdown 的插件都失效了。因为不支援到最新的 WordPress 5。

    用户4539203
  • Android Architecture Blueprints----安卓架构详细分析

    首先,让我们看一下google给出的框架: github : https://github.com/googlesamples/android-archit...

    先知先觉
  • 安卓滚动字幕以及TextSwitcher、ImageSwitcher使用

    项目源码下载:https://github.com/libin7278/TextSwitcher

    先知先觉
  • goweb开发学习(一)

    4、建立Go的工作空间(workspace,也就是GOPATH环境变量指向的目录)

    anna

扫码关注云+社区

领取腾讯云代金券