用Hugo创建Blog站点并部署到VPS


备份,转载并整理至他人博客。未完成且未经过验证


VPS端配置情况

一、安装Git仓库,并配置权限

apt-get update
apt-get install git-core

添加 git 用户

useradd git
vi /etc/sudoers
1.使 git 用户拥有 sudo 权限

在 User privilege specification 配置字段下添加git ALL=(ALL:ALL) ALL

2.给 sudoer 文件添加权限

chmod 740 /etc/sudoers

3.使git 用户拥有 bash 脚本解释器

编辑 /etc/passwd 文件,vi /etc/passwd将最后一行 git 用户的 /bin/sh 改为 /bin/bash

4.创建 git 用户密码,并建立用户目录、配置权限
passwd git
mkdir /home/git
chown -R git:git /home/git

二、新建 VPS 端的 git 仓库

1.在 VPS 上新建一个 git 仓库作为远程仓库。切换到 git 用户并转到 git 用户文件夹
su git
cd /home/git
mkdir blog.git
cd blog.git
2.初始化仓库

git init --bare

3.在 /home/git 路径下创建存放 SSH 公钥的文件夹 .ssh 并进入,在该文件夹下新建公钥文件并编辑
cd /home/git
mkdir .ssh
cd .ssh
vi authorized_keys

将前文 Windows 本地 /c/Users/Xeon/.ssh/ 位置生成的 SSH 公钥文件 id_rsa.pub 内容复制粘贴到 authorized_keys 文件中并 :wq 保存

4.新建网页文件存放目录,通过root用户新建 /var/www 路径,并转到 /var/www 文件夹
exit
mkdir -p /var/www
cd /var/www
mkdir blog
5.修改 /var/www/blog 文件夹权限,给用户Git赋予/tmp的操作权限,提示后输入root密码:
chown -R git:git /var/www/blog/
sudo chmod -R 777 /tmp

三、设置 git 钩子脚本

创建一个 git 钩子脚本,主要目的是当 Windows 本地的文件被远程推送到 VPS 的 blog.git 仓库时,触发脚本自动将 blog.git 里的内容克隆一份到 /var/www/blog 中

1.切换为 git 用户和文件夹,新建 post-receive 脚本文件
su git
cd
cd blog.git/hooks/
vi post-receive

post-receive内容如下:

#!/bin/bash

GIT_REPO=/home/git/blog.git
TMP_DIR_CLONE=/tmp/blog
PUBLIC_WWW=/var/www/blog
rm -rf ${TMP_DIR_CLONE}
git clone $GIT_REPO $TMP_DIR_CLONE
rm -rf $PUBLIC_WWW/*
cp -rf $TMP_DIR_CLONE/* $PUBLIC_WWW
2.给 post-receive 脚本文件添加可执行权限

chmod +x post-receive

四、VPS 上 Nginx 设置

Winodows 本地配置情况

一、安装Hugo客户端

从 Github 下载 Hugo 对应版本的压缩包。然后解压至D:\Hugo\bin

配置系统路径:
打开开始菜单栏,搜索高级系统设置
打开高级系统设置,点击环境变量,在下半部分的系统变量中找到 Path ,点击,点击新建
把路径D:\Hugo\bin输进去,再确定即可(可能要重启才能生效)
打开命令行,查看 Hugo 的版本,以判断上面步骤是否成功,代码如下:

#查看hugo是否安装成功   

hugo version 

二、Windows 本地 Git 设置

在 Windows 本地安装 Git 的方法参考其他

安装后需要在本地新建一个 git 用户,设置用户名和邮箱(仅作用户识别使用,可填写任意邮箱地址)。在任意路径下打开 Git Bash 命令窗口,输入以下指令:

git config --global user.name "name"
git config --global user.email "emailaddress"

其中 “name” 和 “emailaddress” 字段填入自己的用户名和邮件地址(均可任意填写)

为了后续远程推送文件方便,在本地生成 ssh 密钥备用: ssh-keygen -t rsa -C "emailaddress" bash 会要求输入 Windows 用户的密码,无密码直接 enter。从而在 c/Users/Xeon/.ssh/ 路径下会生产 ssh 密钥,有公钥 id_rsa.pub 和密钥 id_rsa 两个文件

在 Hugo 生成的静态网页文件夹,即 D:\Hugo\Sites\blog\public 文件夹中打开 Git Bash 窗口,输入以下命令:

git init
git add --all
git commit -m "Description"

上面三个命令的意思分别是: 创建 git 仓库; 添加全部文件; 提交文件,其中 -m 表示本次更新的描述,描述内容为 “Description” 中的内容,按情况自行填写。 从而本地的 Git 仓库搭建完成,远程提交静态网页文件之前需要现在 VPS 上进行设置

三、Windows 本地推送

首先在 Windows 本地测试一下能否以 git 用户 ssh 登陆到 VPS ssh -p "22" git@VPS_ip 若提示 WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!,可将 Windows 本地 /c/Users/Xeon/.ssh/ 下的 known_hosts 文件删除

本地推送

回到已经创建为本地仓库的 D:\Hugo\Sites\blog\public 文件夹中打开 Git Bash 窗口,输入以下命令添加远程仓库:

git remote add origin git@your_VPS_IP:/home/git/blog.git
git remote set-url origin ssh://git@your_VPS_IP:SSH_Port/home/git/blog.git

以上命令中的 your_VPS_IP 为你 VPS 的 IP,SSH_Port 为你的 VPS SSH 登陆端口(一般默认为22)。 以上命令仅在初次推送前设置,以后无需设置

推送本地仓库到 VPS: git push origin master

此时用浏览器访问域名 your_domain.com,即可打开自己的 blog 站点,并且自动开启了 HTTPS 加密

以后 Windows 本地更新内容后,只需在 D:\Hugo\Sites\blog\public 路径下打开 Git Bash 输入以下命令:

git init
git add --all
git commit -m "description"
git push origin master

即可将更新内容推送到 VPS