在VPS上建立HEXO静态博客

不管在哪里写HEXO博客,本地客户端是少不了的,本地端这里略过,之前有记录,只记录在VPS和其它在本地需要操作的部分,而域名定位到服务器,也需要提前在域名服务商那边设置下。

VPS服务器端配置

创建用户

创建用户用于服务器端站点管理,如下:

# adduser hexo //创建用户
# passwd hexo //设置密码

赋予hexo用户root权限,无需密码操作的权限,否则到后面 Hexo 部署的时候会提示无权限,
先给予修改权限,然后使用vi命令在/etc/sudoers中添加一行,不会vi编辑临时搜一下,简单。

# chmod 740 /etc/sudoers
# vi /etc/sudoers

找到这一行添加

root ALL=(ALL) ALL
hexo ALL=(ALL) ALL #这个是添加的

然后更改读写权限。

# chmod 440 /etc/sudoers

注意!! 服务器端代码如果是#开头代表root用户的命令,$开头代表hexo用户的命令!

配置本地端无密码ssh登录服务端

本地端生成ssh Key

# ssh-keygen -t rsa -f test -C "test key"  //后面的可以不要直接就ssh-keygen -t rsa
                    ~~ 名字  ~~   备注

服务器端

# su hexo
$ cd ~
$ mkdir .ssh

本地端运行git bash here输入下面代码,复制公钥到服务器

# ssh-copy-id hexo@ip -p 
//ssh-copy-id <登录部署服务器用户名>@<部署服务器地址> -p <部署服务器ssh端口> 
//ssh-copy-id 可能需要另行安装 
//如果ssh默认端口是22,则不需要 -p

服务器端修改.ssh目录的权限以及authorized_keys 的权限(这个必须修改,要不然还是需要密码)

# sudo chmod 600 ~/.ssh/authorized_key
# sudo chmod 700 ~/.ssh

本地端测试无密码登入

# ssh hexo@ip -p 
// ssh <登录部署服务器用户名>@<部署服务器地址> -p <部署服务器ssh端口>

如果不成功,并且你的 VPS 的 ssh 端口不是 22 的话,请在Git Bash执行vi ~/.ssh/config,输入以下内容并保存:(成功就跳过这一步)

Host #VPS的IP
HostName #VPS的IP
User #用户名
Port #SSH 端口
IdentityFile ~/.ssh/id_rsa

安装配置nginx

简单来说,nginx是代理服务器,有它我们就能按照域名或IP访问网页了

添加nginx源

root用户在服务端的/etc/yum.repos.d目录下创建一个yum源文件nginx.repo

# vi /etc/yum.repos.d/nginx.repo

用vi编辑写入如下内容,建立文件复制粘贴应该都会吧

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

安装nginx

# yum install nginx -y
# nginx -v //查看版本号验证

删除原配置文件重新配置

# rm /etc/nginx/conf.d/*

添加以下内容到/etc/nginx/conf.d/hexo.conf
将你的域名和服务器下的网站根目录挂钩,主页是根目录下index.html

server {
    listen         80 ;
    root /home/hexo/www;//这里可以改成你的网站目录地址,我将网站放在/home/hexo/www
    server_name example.com www.example.com;//这里输入你的域名或IP地址
    access_log  /var/log/nginx/hexo_access.log;
    error_log   /var/log/nginx/hexo_error.log;
    location ~* ^.+\.(ico|gif|jpg|jpeg|png)$ {
            root /var/www/hexo;
            access_log   off;
            expires      1d;
    }
    location ~* ^.+\.(css|js|txt|xml|swf|wav)$ {
        root /var/www/hexo;
        access_log   off;
        expires      10m;
    }
    location / {
        root /home/hexo/www;//这里可以改成你的网站目录地址,我将网站放在/home/hexo/www
        if (-f $request_filename) {
            rewrite ^/(.*)$  /$1 break;
        }
    }
}

修改nginx配置文件

将/etc/nginx/nginx.conf中的user值修改为hexo

切换到hexo用户,用户主目录下新建www文件夹作为网站根目录

# su hexo
$ cd ~
$ mkdir www

验证配置是否正确

$ sudo nginx -t

启动nginx服务并测试

$ sudo service nginx start
$ echo "hello nginx!" > /home/hexo/www/index.html	//站点根目录下新建index.html

在浏览器中输入你的域名或VPS的IP地址,出现hello nginx!字样表示nginx代理服务器搭建成功!然后删除index.html

安装配置git

安装git

$ sudo yum install git

初始化git仓库
用户主目录下新建hexo.git文件夹用作git仓库并初始化

$ cd ~
$ mkdir hexo.git
$ cd hexo.git
$ git init --bare	//初始化git仓库

配置git仓库的hooks hooks钩子

就是将不同目录的数据实现同步。具体如下,在git仓库hooks目录下创建文件post-receive并修改权限

$ cd hooks
$ touch post-receive
$ chmod 755 post-receive

将以下内容添加到post-receive中

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

接下来我们就试试把博客发布到VPS服务器吧!下面都是本地端的操作。

部署项配置

deploy:
  type: git	#部署方式
  repo: hexo@domain:/home/hexo/hexo.git # 站点管理用户@域名:git仓库路径
  branch: master	#分支,我们只用主分支即可

部署验证

$ hexo clean	//清除缓存(实际是删除db.json和public文件夹)
$ hexo g	//生成静态页面(public文件夹)
$ hexo d	//部署到服务器

浏览器输入你的域名看看吧!

参考

VPS服务器搭建Hexo博客教程
在VPS上搭建hexo博客,利用git更新
搭建Hexo博客(Github+Travis+VPS)

留下评论