前言

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

操作系统 CPU 内存 带宽
CentOS 7.8 64bit 1核 2GB 5Mbps

先说好,我的是轻量应用服务器,和云服务器是两个不同的产品,部分操作方式可能略有不同。

我在购买服务器时就选择了宝塔Linux面板腾讯云联合定制版,可以直接用,大家没安装宝塔面板的请安装。

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


一、环境准备

1.登录宝塔面板

登录腾讯云控制台:https://console.cloud.tencent.com/

点击访问轻量应用服务器:https://console.cloud.tencent.com/lighthouse

进入“应用管理”页面,点击“登录”按钮,即可弹出远程登录的黑框。

输入下方命令获取宝塔账号密码:

sudo /etc/init.d/bt default
1
2
3
4
5
6
7
8
9
10
11
12
13
[lighthouse@VM-16-16-centos ~]$ sudo /etc/init.d/bt default
==================================================================
BT-Panel default info!
==================================================================
外网面板地址: http://***********:8888/********
内网面板地址: http://***********:8888/********
*以下仅为初始默认账户密码,若无法登录请执行bt命令重置账户/密码登录
username: ******
password: ******
If you cannot access the panel,
release the following panel port [8888] in the security group
若无法访问面板,请检查防火墙/安全组是否有放行面板[8888]端口
==================================================================

进入“防火墙”页面,开启8888端口。

通过外网面板地址访问宝塔面板,输入宝塔账号密码。

我使用的是宝塔面板腾讯云联合定制版,接下来需关联腾讯云API密钥:

新建秘钥(https://console.cloud.tencent.com/cam/capi ),在宝塔面板输入。

成功进入宝塔面板。

2.添加站点

点击左侧导航栏的“网站”,点击添加站点

输入买的域名,点击提交,即可在 /www/wwwroot/ 下生成相应同名文件夹。

点击该站点右边的设置,在域名管理中添加服务器公网IP地址。

3.安装 Git

打开终端,两种方式使用终端:

  1. 返回腾讯云服务器控制台,一键登录,即可弹出终端。(最简单,直接就能输命令。)
  2. 或者可以用宝塔的终端,但需要root密码,密码请前往腾讯云服务器控制台 -> 应用管理 -> 关机 -> 重置密码 -> 开机 -> 宝塔管理面板 -> 终端 -> 输入root密码 -> 登录。(第一次麻烦点,但以后就能直接在宝塔里用终端了)
1
yum install git
Loaded plugins: fastestmirror, langpacks
Repository epel is listed more than once in the configuration
Determining fastest mirrors
epel                                                                         | 4.7 kB  00:00:00     
extras                                                                       | 2.9 kB  00:00:00     
os                                                                           | 3.6 kB  00:00:00     
updates                                                                      | 2.9 kB  00:00:00     
(1/4): extras/7/x86_64/primary_db                                            | 243 kB  00:00:00     
(2/4): epel/7/x86_64/updateinfo                                              | 1.0 MB  00:00:00     
(3/4): epel/7/x86_64/primary_db                                              | 7.0 MB  00:00:01     
(4/4): updates/7/x86_64/primary_db                                           |  12 MB  00:00:01     
Package git-1.8.3.1-23.el7_8.x86_64 already installed and latest version
Nothing to do -->

查看 git 版本:

1
git --version

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

4.安装 Nginx

点击宝塔面板左侧导航栏的“软件商店”,下拉页面找到 Nginx 并安装,

我选的极速安装,当然你可以选编译安装。

安装完成,打开右边的绿色开关,将会把Nginx放在首页显示。

当然你也可以通过终端命令执行 Nginx 的安装、启动、测试。

浏览器输入服务器公网 IP 地址,若能够正常获取欢迎页面,说明 Nginx 安装成功。

宝塔面板会根据我们刚刚添加的站点自动为我们生成Nginx配置文件,一般无需改动。


二、Git 仓库搭建

之前推 Hexo 的静态文件都是推到 GitHub 的仓库,现在服务器也是一样,需要仓库来保存。

1.添加一个用户git

打开终端,三行命令:

1
2
3
4
5
adduser git   #添加名字叫git的用户,我们用来做服务器库,方便将本地文件推送上去

#然后给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中有写。如果是没有什么有用信息,就可能是服务器端出问题了。

若提示是否继续连接,输入yes回车即可:

Are you sure you want to continue connecting (yes/no/[fingerprint])?

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

3.创建Git仓库

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

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

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

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

hexo clean
hexo generate
hexo deploy

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


四、域名备案与解析

我的域名是从阿里云买的,

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

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


参考教程:

[1] : CSDN - 将Hexo部署到云服务器(使用宝塔面板)

[2] : 算法小站hexo博客部署到腾讯云服务器上

[3] : 腾讯云- 将个人博客迁移到云服务器上

[4] : 简书- Windows下生成SSH密钥

[5] : 简书 - Hexo 教程:Hexo 博客部署到腾讯云教程

[6] : CSDN - ssh连接失败,排错经验

因为之前没用过云服务器,没用过宝塔面板,没进行过SSH链接,没解析过域名……属于每一步都懵逼的状态。也由于找到的参考教程很多细节各不相同,让我真的很头疼,生怕哪一步走弯路,所以每个步骤都经过自己校对和尝试理解原理,然后写成了此篇笔记。

此外,想知道怎么把博客远程仓库地址从 GitHub 转移到 国内Gitee(码云)的可以去看我这篇文章 → 【Hexo博客】远程仓库从GitHub换成Gitee


最后的最后,
真的很感谢在我脑子懵逼不知道干什么的时候
老弟@提莫酱的解答,
我问了那么多不懂的简单到极致的问题,
现在想来都不好意思了快……