vultr搭建hexo博客

2019-02-22 15:27:37 浏览数 (1)

准备工作

安装如下依赖:

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

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

代码语言:javascript复制
$ 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文件,内容如下

代码语言:javascript复制
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/mainline/centos/7/$basearch/
gpgcheck=0
enabled=1

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

代码语言:javascript复制
$ cp nginx.repo /etc/yum.repo.d/
$ yum update and yum install -y nginx
$ systemctl enable nginx and systemctl start nginx

创建用户

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

代码语言:javascript复制
$ useradd -d /home/vultr -m -r -U -s /bin/bash
$ passwd vultr
$ usermod -aG nginx vultr
$ usermod -aG wheel vultr

创建SSH秘钥

代码语言:javascript复制
$ ssh-keygen -b 4096 -C "vultr@example.com"

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

代码语言:javascript复制
$ ssh-copy-id -i ~/.ssh/id_rsa.pub vultr@example.com

安装hexo

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

代码语言:javascript复制
### 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

代码语言:javascript复制
$ cd ~/web/web/vultr
$ sudo npm install -g hexo-cli hexo-server
$ hexo init && npm install --save

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

代码语言:javascript复制
$ hexo g

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

安装nginx

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

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

代码语言:javascript复制
$ chown -R vultr:nginx ~/web

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

代码语言:javascript复制
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。

代码语言:javascript复制
$ sudo ln -sf ~/web/vultr.conf /etc/nginx/config.d/
$ sudo systemctl restart nginx

使用git部署博客

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

代码语言:javascript复制
$ cd ~/web/git/vultr
$ git init --bare
$ cd hooks

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

代码语言:javascript复制
#!/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

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

代码语言:javascript复制
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库。

代码语言:javascript复制
$ 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并撰写博客:

代码语言:javascript复制
$ 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"

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

代码语言:javascript复制
$ cd ~/vultr/git/vultr
$ git add . && git commit -m "new post"
$ git push production master

0 人点赞