腾讯云部署hexo网站 - 宝塔面板
Ray Cheng 英砖生

前段时间,将hexo博客一直部署在GitHub上,最近放寒假了,有点时间,就用学生优惠买了一个腾讯云轻量服务器,一年112,又加上域名买了5年120,加起来大出血。😭

不过这也是我好久一来一直想要做的事情了,今天捣鼓了不少时间,了解了一些Linux的指令,但最终还是成功部署。

我的服务器是:腾讯云的轻量级服务器,自带宝塔Linux面板

第一步:安装并配置git仓库

部署到Linux服务器上的的逻辑实际上就是将本地的hexo部署到服务器上的git仓库中去,然后使用git的hooks将静态网页自动拉取到服务器中的网站资源网站中。

1.1 服务器安装git

1
yum install git

你可以先运行以下代码查看你是否有git。

1
git --version

有的话会如下显示:

image

1.2 配置git用户并赋予权限

输入以下代码添加githexo用户

1
adduser githexo

这里需要注意的是如果你服务器里本来就有git,没有重新安装git,这里建议最好不要创建git用户名,因为本地可能已经有了一个git,如果这里再使用git为用户名,后面从root切换用户的时候,可能就会直接进入命令行,而不是切换用户。

添加用户后,需要为用户添加权限,先输入以下代码进入到添加权限界面:

1
2
chmod 740 /etc/sudoers
vi /etc/sudoers

在其中输入 i 进入 insert 模式 ,找到 lighthouse ALL=(ALL) ALL NOPASSWD: ALL,在其下方加入一行 githexo ALL=(ALL) ALL,如下图:

  • 有可能你的是sudoers文件中是 root ALL =(ALL) ALL NOPASSWD: ALL
  • 可以看到图片中,我另外两个用户,其中的git用户就是我第一次尝试的时候设置的用户名,出了一点问题。

image

按下 ESC ,输入 :wq ,先按:,再按wq

这时vim语法,感兴趣可以去了解以下,不懂得,照着做就行。

然后再输入以下代码,把文件设为只读:

1
chmod 400 /etc/sudoers 

1.3 设置githexo用户密码

1
sudo passwd githexo
  • 值得注意的是,当你输入了这行代码之后,下一行会出现new passward,你输入的密码是不会显示的,所以要按准了,输入完了点回车,会让你再输入一遍。

如果你也是宝塔面板的话,到这里你可以去宝塔面板-文件-根目录-home目录下,看到多了一个githexo文件夹。

1.4 服务器添加ssh密钥,连接本地

这一步就是为了将你本地电脑上的密钥保存到服务器上,便于一会连接。这个密钥你电脑是有的,一般存储在C:\users\用户名\.ssh文件夹下的id_rsq.pub文件中。

  • 如果你之前曾经部署到GitHub上,那肯定是有这个密钥的,如果没有的话,那么可以去看一下相关的教程。

输入以下命令添加ssh密钥

1
2
3
su githexo #切换到githexo用户
mkdir ~/.ssh #创建.ssh文件夹
vim ~/.ssh/authorized_keys #将ssh密钥粘贴到这行代码后面

第三行代码,也像之前的vim那样,按i进入编辑模式粘贴完按 Esc 键退出编辑模式,输入 :wq保存退出。

修改权限

1
2
3
chmod 755 ~
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

接下来,在本地打开一个终端,以 ssh 的方式登录云服务器

1
2
ssh -v githexo@你的 ip 地址
// 输入密码 即可成功登录云服务器

1.5 创建git仓库和网站资源目录

创建一个 git 仓库,新建一个 post-receive 文件,用来存储本地的提交。

1
2
3
4
su root #切换回root用户
cd /home/githexo
git init --bare hexoblog.git #在/home/githexo下创建新仓库hexoblog.git
chown git:git -R hexoblog.git #给予git用户权限

然后创建一个存放网站资源的文件夹,用于存放hexo生成的静态网站资源

1
2
cd .. #返回上一级
mkdir -p /projects/hexoblog

1.6 通过hooks自动拉取

通过git的hooks自动拉取仓库文件到网站资源文件文件夹

在 hexoblog.git/hooks 文件夹下创建一个 post-receive 钩子,把提交到 git 仓库的文件同步到 home/projects/hexoblog文件夹中

1
2
cd /githexo/hexoblog.git/hooks
vim post-receive
  • 同样先按i进入编辑模式,然后输入以下代码,按ESC退出编辑模式,输入:wq保存

在 post-receive 文件中输入以下代码

1
2
#!/bin/bash 
git --work-tree=/home/projects/hexoblog --git-dir=/home/githexo/hexoblog.git checkout -f

授予 post-receive 文件可执行权限

1
chmod +x /home/git/blog.git/hooks/post-receive

服务端的设置就已经完成了,接下来是修改本地hexo的配置。

第二步:修改本地hexo的部署目录

打开 hexo 的配置文件 _config.yml,找到以下代码,修改部署位置。

1
2
3
4
deploy:
type: git
repo: root@你的ip地址:/home/githexo/hexoblog.git #仓库地址
branch: master #分支

保存配置文件,在hexo文件夹中,打开终端,hexo一键三连。

1
2
3
hexo clean
hexo g //编译
hexo d //部署

第三步:添加域名

3.1 创建二级域名并解析(可选)

这一步是为了添加一个子域名给你的博客网站,你也可以直接使用本来的域名来部署博客网站。我这里是添加了一个blog的子域名。

首先,进入到腾讯云中的云解析DNS界面,并点击右侧的“解析”:

image

其次,点击“添加记录”。在“主机记录”中填写次级域名,“记录值”填写你的服务器的ip地址:

image

3.2 添加站点

  1. 在“域名”一栏,填写刚刚创建的域名“blog.你的域名”。
  2. 在“根目录”中填写之前创建的博客资源存放目录“/home/projects/hexoblog”

image

3.3 添加ssl证书

添加ssl证书是为了让网站能够以“https”开头,不然会被标识为不安全。

点击右侧“设置”-“SSL”-“Let’s Encrypt”,选中上一步中添加的子域名,点击“申请”。

image

申请SSL证书之后,回到“当前证书”,开启“强制HTTPS”

image

以上就是所有内容,现在你就可以使用域名来访问你的博客网站了。