Hexo网站搭建与服务器部署

Hexo网站搭建与服务器部署

Hexo网站搭建

正在更新中。。。


Hexo部署在服务器上

之前博客一直用的 GitHubPage,因为墙的原因,有的时候网络真的卡到爆,既然前段时间双十一促销的时候买了腾讯的轻量应用服务器,就想着早点把博客弄上去,但也一拖再拖,今天得空,赶紧弄了吧。

本文在 Windows10 操作系统下演示。

一、环境准备

1. 安装宝塔面板

在服务器上安装宝塔(Centos7.9系统):

1
2
yum install -y wget && wget -O install.sh https://download.bt.cn/install/install_6.0.sh && sh install.sh ed8484bec

2. 添加站点

点击左侧导航栏的“网站”,点击添加站点,
输入买的域名,点击提交,即可在 /www/wwwroot/ 下生成相应同名文件夹。
点击该站点右边的设置,在域名管理中添加服务器公网IP地址。

3. 安装Git

使用终端工具链接服务器运行如下指令:

1
yum install git

安装完成后查看一下版本git --version ,如果此时能查看到 git 的版本号,说明我们已经安装成功了。

4.安装Nginx

点击宝塔面板左侧导航栏的“软件商店”,下拉页面找到 Nginx 并安装,安装完成,打开右边的绿色开关,将会把Nginx放在首页显示。
浏览器输入服务器公网 IP 地址,若能够正常获取欢迎页面,说明 Nginx 安装成功。
宝塔面板会根据我们刚刚添加的站点自动为我们生成Nginx配置文件,一般无需改动。


二、Git 仓库搭建

1.添加一个git用户

链接服务器终端
adduser git #添加名字叫git的用户,我们用来做服务器库,方便将本地文件推送上去

1
2
3
#然后给git 用户分配root 权限
chmod 740 /etc/sudoers #改变sudoers文件的权限为文件所有者可写
vim /etc/sudoers #打开sudoers文件文件

方向键下滑找到root ALL=(ALL) ALL,
敲击键盘i进入插入模式

1
2
#在root ALL=(ALL) ALL 下方添加一行 
git ALL=(ALL) ALL

键盘Esc退出插入,:wq保存退出。
然后执行命令:

1
chmod 400 /etc/sudoers  #将其权限修改为文件所有者可读

2.给git用户添加ssh密钥

这一步是为了建立主机与服务器连接,使其不需要密码也能登陆。
打开自己电脑的 Git Bash,在控制台中输入这行命令:

1
2
3
4
5
6
7
$ ssh-keygen -t rsa -C "你的域名"

# -t 指定密钥类型,默认是 rsa ,可以省略
# -C 用于识别这个密钥的注释,可以输入任何内容,也可以不写
# -f 指定密钥文件存储文件名,默认id_rsa

#如果不想要上面这些,可以只输入 ssh-keygen

输入完毕后按回车,程序会要求输入一个密码,输入完密码后按回车会要求再确认一次密码,如果不想要密码可以在要求输入密码的时候按两次回车,表示密码为空,并且确认密码为空,此时电脑的c盘>用户>自己的用户名>.ssh目录下已经生成好了公钥 id_rsa.pub 文件。可以在 Bash 窗口通过cd命令和vim命令打开公钥 id_rsa.pub,添加密钥时需要复制那一坨字符。
打开宝塔面板终端,
添加密钥:

1
2
3
4
5
su git  #切换到git用户
mkdir -p ~/.ssh #创建目录,-p 确保目录名称存在,不存在的就建一个。
vim ~/.ssh/authorized_keys #创建并编辑authorized_keys文件

## 将本地电脑的 id_rsa.pub 文件打开后的那一大坨字符全部复制进去,保存退出

修改权限:

1
2
3
cd ~
chmod 600 .ssh/authorized_keys #为authorized_keys文件赋予文件所有者可读可写的权限
chmod 700 .ssh #为.ssh文件夹赋予文件夹所有者可读可写可执行的权限

本地测试:

1
2
3
# 在本地电脑 Bash 窗口
ssh -v git@SERVER
# 注意!别直接复制SERVER这个单词!@后面替换成服务器IP

用ssh -v去连有问题的服务器,会有比较详细的调试信息在屏幕上输出,可以帮助判断是哪一步出了问题。主要是看是客户端还是服务器的问题。如果是客户端的问题,应该log中有写。如果是没有什么有用信息,就可能是服务器端出问题了。

若提示是否继续连接(Are you sure you want to continue connecting (yes/no/[fingerprint])?),输入yes回车即可:

如果不出现failed字样,说明成功。

3.创建Git仓库

注意!上面我们创建的是一个名为git的用户,现在我们在git用户下创建一个git仓库,二者不同,不要搞混了!

创建 git 仓库,用于存放博客网站资源。

1
2
3
4
5
su root  #切换到超级管理员
mkdir /home/git/repos #新建目录(repository仓库的缩写),这是git仓库的位置
cd /home/git/repos
git init --bare hexoBlog.git #在repos目录下,初始化一个名为 hexoBlog 的空git储存库

4.配置钩子实现自动部署

自动部署是通过Git钩子实现的,在服务器上的裸仓库 hexoBlog.git 里创建一个钩子,在满足特定条件时将静态 HTML 文件传送到 Web 服务器的目录下。

在 /home/git/repos/hexoBlog.git 下,有一个自动生成的 hooks 文件夹,我们进入:

1
cd hexoBlog.git/hooks

我们需要在里边新建一个新的钩子文件 post-update:

1
vi post-update

按i键进入文件的编辑模式,在该文件中我们要输入下边的两行代码(记得替换你上面创建的站点域名),指定 Git 的工作树(源代码)和 Git 目录(配置文件等):

1
2
#!/bin/sh
git --work-tree=/www/wwwroot/你的站点域名 --git-dir=/home/git/repos/hexoBlog.git checkout -f

然后,按Esc键退出编辑模式,输入:wq 保存退出。

然后修改文件权限,使得其可执行:

1
2
3
4
5
cd /home/git/repos/hexoBlog.git/hooks/
chmod +x post-update #赋予其可执行权限
chown -R git:git /home/git/repos/ #仓库所有者改为git
chown -R git:git /www/wwwroot/你的站点域名/ #站点文件夹所有者改为git

到这里,我们的 git 仓库算是完全搭建好了。

若想测试git仓库是否可用,可以在本地电脑桌面新建一个文件夹,右键选择“git bush here”,然后执行命令:(别忘了把下面server_ip替换成服务器IP地址)

1
git clone git@server_ip:/home/git/repos/hexoBlog.git

出现下面两句话也请放心,这不是报错,

Cloning into ‘hexoBlog’…
warning: You appear to have cloned an empty repository.

只是提醒我们克隆的git储存库可能是空的,不过这当然了,因为才刚创建的。

打开这个新建的文件夹就会发现克隆成功的hexoBlog文件夹了,说明git仓库可用。

然后从桌面删掉这个测试用的新建文件夹吧。


三、修改本地电脑配置

打开本地的 hexo 博客所在文件夹,打开站点配置文件_config.yml(注意,不是主题的配置文件),下滑到最下面的部署代码做以下修改:

1
2
3
4
5
6
7
# Deployment(部署)
## Docs: https://hexo.io/docs/one-command-deployment
deploy:
type: git
repo: git@你的服务器IP地址:/home/git/repos/hexoBlog.git #服务器仓库地址
branch: master

然后打开本地的 hexo 博客所在文件夹,执行部署的三句命令:

1
hexo cl;hexo g;hexo d

打开你的公网 IP,看是不是已经部署成功了。


四、域名备案与解析

我的域名是从阿里云买的,当然:要先备案通过

登录阿里云域名控制台:https://dc.console.aliyun.com/next/index

备案后解析到腾讯云服务器就行了。