前言
Hexo 博客搭建完成后,可以将博客部署到 git 服务商提供的静态网页服务上,如 Github,Gitee等。当然,如果有自己的 VPS 服务器的话,还可以将博客部署到 VPS 服务器上,通过 IP 或者有域名来进行访问。
本文记录将 Hexo 部署到 VPS 的步骤,以供参阅。
环境
VPS端
CentOS 7.6 64位
Git
Nginx
本地
Git
Hexo
本地 Hexo 博客已经搭建好了,再次不做赘述。详细步骤可以参考我之前的文章。
原理
当使用 hexo g 命令生成博客内容时,Hexo 实际上是将我们编写的 md 文件编译成 html 文件,存放在 Hexo 根目录下的 public 文件夹中。而我们使用 hexo d 命令后,Hexo 会把 public 文件夹中的内容通过 git 上传到 git 服务器上,服务器将 public 中的内容部署到博客站点上,我们就可以通过 git 服务器提供的站点网址访问我们的博客内容。
因此,我们要想在 vps 上部署我们的博客,要做的内容其实就很清楚了:
1、在 vps 上创建 git 服务器;
2、在 vps 上创建网站;
3、通过 hero d 命令上传本地博客内容;
4、vps 自动将上传的内容部署到站点内;
5、通过域名或站点网址访问博客。
在 vps 服务器上创建 Git 服务器
安装 Git
首先,我们需要购买一台 安装有 Linux 系统的 VPS 服务器,本文使用的 Linux 系统是 CentOS 64 位。
我们通过 ssh 登录到我们的服务器:
1 | ssh root |
按照提示输入密码后:
出现如下界面表示登录成功。
现在,让我们来看一下 git 是否安装,输入命令
1 | git --version |
如提示未找到命令,说明我们的系统中尚未安装 git,因此我们需要先在系统中安装 git:
1 | yum install git |
出现以上界面说明 git 正在安装。
安装过程中可能会出现询问是否确认安装的界面:
按照提示,确认安装即可。
安装完成后检查一下是否安装成功:
1 | git --version |
出现 git 的版本,说明安装成功。
创建 git 服务器
首先,我们需要在系统中创建一个名为 git 的用户组和用户来运行 git 服务:
1 | groupadd git //创建 git 用户组 |
创建完成后,我们需要给 git 用户添加账户权限,用户权限需要通过编辑 /ect/sudoers 进行设置。
通过命令打开 /ect/sudoers 文件:
1 | chmod 740 /etc/sudoers |
找到:
1 | ## Allow root to run any commands anywhere |
按 i 进入 vim 的编辑模式,添加一行:
1 | git ALL=(ALL) ALL |
按 ESC 键退出编辑模式,输入 :wq 回车退出,并将 /etc/sudoers 改回权限:
1 | chmod 400 /etc/sudoers |
现在,通过
1 | su git |
命令切换至 git 用户:
通过 cd 命令,进入到 /home/git/ 路径下,并输入 pwd 命令查看当前路径以确认是否正确进入到该路径下:
1 | cd /home/git |
接下来,首先,我们先关闭这个 ssh 连接,然后通过 ssh 将本地计算机的 ssh 公钥上传到服务器上(中间需要输入一次 git 用户的密码):
1 | ssh-copy-id git@yourip |
接下来,重新登录到 vps ,切换至 git 用户,进入到 /home/git/.ssh 目录下赋予 authorized_keys 文件及 .ssh 目录相应的权限:
1 | chmod 600 authorzied_keys |
再次退出登录,使用 ssh 通过
1 | ssh git@yourip |
免密码登录到 vps 上。
在 git 目录下,创建 blog.git 目录:
1 | mkdir blog.git |
通过 cd 命令进入到 blog.git 目录下,并输入
1 | git init --bare |
创建裸 git 仓库:
输入
1 | ll /home/git/blog.git |
若上图中红色标注的位置是 git 说明 git 用户对 /home/blog 目录有操作权限,若显示的是 root 则需要
通过
1 | sudo chown git:git -R /home/git/blog.git |
命令对 /home/git/blog.git 目录权限进行更改。
通过 sudo 命令在 /var 检查有没有 www 目录,若没有,则创建 www 目录。
在 www 目录下创建 blog 目录
1 | cd /var |
确保
/home/git/blog.git
/home/git/.ssh
/var/www/blog
三个目录的用户权限组都是 git :
1 | ll /home/git/blog.git |
可以看到,/var/www 目录的权限是 root ,通过以下命令对其权限进行修改:
1 | sudo chown git:git -R /var/www/blog |
自动部署上传内容
这里,我们使用 Git Hooks来进行博客内容的自动部署。
Git Hooks
Git Hooks 可以理解为 Git 在特定事件发生之前或之后执行的脚本。
通过编写 Git Hooks 脚本,我们来实现 Git 服务器对本地计算机 hexo 博客上传后的自动部署功能。
打开 /home/git/blog.git 目录:
1 | cd /home/git/blog.git |
通过 vim 创建 post-receive 文件:
1 | vi post-receive |
将以下内容复制到 post-receive 文件中:
1 |
|
保存退出后,执行
1 | chmod +x post-receive |
命令赋予可执行权限。
安装 Nginx
安装依赖
安装 gcc
首先查看系统中是否已经安装了 gcc :
1 | gcc -v |
如上所示表明系统中已经安装了 gcc,无需再次安装。如果提示未找到命令,说明系统中没有安装 gcc ,可以通过以下命令安装:
1 | yum -y install gcc |
安装 pcre、pcre-devel
1 | yum install -y pcre pcre-devel |
安装 zlib
1 | yum install -y zlib zlib-devel |
安装openssl
1 | yum install -y openssl openssl-devel |
安装 Nginx
下载 Nginx 安装包
1 | wget http://nginx.org/download/nginx-1.9.9.tar.gz |
将文件移动到 /tmp 目录下
1 | mv nginx-1.9.9.tar.gz /tmp |
进入到 /tmp 目录,解压文件
查看 /tmp 目录下内容
进入到 nginx-1.9.9 目录下。
安装 Nginx
在 nginx-1.9.9 目录下执行下面三个命令:
1 | ./configure |
配置 Nginx
切换到 /usr/local/nginx 目录下:
进入到 nginx/config 目录下:
编辑 nginx.conf 文件,将以下内容填入 nginx.conf 中:
1 | vi nginx.conf |
1 | user git git; |
启动 neginx
1 | /usr/local/nginx/sbin/nginx |
其他命令
1 | /usr/local/nginx/sbin/nginx #启动 |
强行停止 nginx
1 | ps -ef | grep nginx #查看 nginx 所有进程 |
设置开机启动
通过源码安装的 nginx 想要设置开机启动,需要手动在 /usr/lib/systemd/system/ 目录下创建 nginx.service 文件。
1 | vi /usr/lib/systemd/system/nginx.service |
写入以下内容:
1 | [Unit] |
如果现在 nginx 处于运行状态,首先要先关闭 nginx。
1 | systemctl enable nginx.service #设置开机自启 |
如果查看 nginx 运行状态显示结果如下:
那么需要先杀死所有nginx 进程:
1 | pkill -9 nginx #关闭所有 nginx 进程 |
重启服务器
1 | reboot |
等待重启完成后,重新连接服务器,查看 nginx 运行状态:
上传博客内容
进入到本机的 Hexo 博客根目录下,打开 _config.yml 文件,在
1 | deploy: |
保存后在此目录下打开终端,输入命令:
1 | hexo clean |
等待上传完成后,在浏览器中输入你的域名或者是 vps 的 ip (需要在 nginx.conf 中声明),就能看到博客的主页了!