【Hexo博客】部署到腾讯云轻量应用服务器(使用宝塔面板)
前言
之前博客一直用的 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 | [lighthouse@VM-16-16-centos ~]$ sudo /etc/init.d/bt default |
进入“防火墙”页面,开启8888端口。
通过外网面板地址访问宝塔面板,输入宝塔账号密码。
我使用的是宝塔面板腾讯云联合定制版,接下来需关联腾讯云API密钥:
新建秘钥(https://console.cloud.tencent.com/cam/capi ),在宝塔面板输入。
成功进入宝塔面板。
2.添加站点
点击左侧导航栏的“网站”,点击添加站点
,
输入买的域名,点击提交
,即可在 /www/wwwroot/
下生成相应同名文件夹。
点击该站点右边的设置
,在域名管理
中添加服务器公网IP地址。
3.安装 Git
打开终端,两种方式使用终端:
- 返回腾讯云服务器控制台,一键登录,即可弹出终端。(最简单,直接就能输命令。)
- 或者可以用宝塔的终端,但需要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 | adduser git #添加名字叫git的用户,我们用来做服务器库,方便将本地文件推送上去 |
方向键下滑找到root ALL=(ALL) ALL
,
敲击键盘i
进入插入模式
1 | #在root ALL=(ALL) ALL 下方添加一行 |
键盘Esc
退出插入,:wq
保存退出。
然后执行命令:
1 | chmod 400 /etc/sudoers #将其权限修改为文件所有者可读 |
2.给git用户添加ssh密钥
这一步是为了建立主机与服务器连接,使其不需要密码也能登陆。
打开自己电脑的 Git Bash,在控制台中输入这行命令:
1 | $ ssh-keygen -t rsa -C "你的域名" |
输入完毕后按回车,程序会要求输入一个密码,输入完密码后按回车会要求再确认一次密码,如果不想要密码可以在要求输入密码的时候按两次回车,表示密码为空,并且确认密码为空,此时电脑的c盘>用户>自己的用户名>.ssh
目录下已经生成好了公钥 id_rsa.pub
文件。可以在 Bash 窗口通过cd
命令和vim
命令打开公钥 id_rsa.pub
,添加密钥时需要复制那一坨字符。
打开宝塔面板终端,
添加密钥:
1 | su git #切换到git用户 |
修改权限:
1 | cd ~ |
本地测试:
1 | # 在本地电脑 Bash 窗口 |
用ssh -v去连有问题的服务器,会有比较详细的调试信息在屏幕上输出,可以帮助判断是哪一步出了问题。主要是看是客户端还是服务器的问题。如果是客户端的问题,应该log中有写。如果是没有什么有用信息,就可能是服务器端出问题了。
若提示是否继续连接,输入yes回车即可:
Are you sure you want to continue connecting (yes/no/[fingerprint])?
如果不出现failed字样,说明成功。
3.创建Git仓库
注意!上面我们创建的是一个名为git的用户,现在我们在git用户下创建一个git仓库,二者不同,不要搞混了!
创建 git 仓库,用于存放博客网站资源。
1 | su root #切换到超级管理员 |
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 |
|
然后,按Esc
键退出编辑模式,输入:wq
保存退出。
然后修改文件权限,使得其可执行:
1 | cd /home/git/repos/hexoBlog.git/hooks/ |
到这里,我们的 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 | # Deployment(部署) |
然后打开本地的 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
最后的最后,
真的很感谢在我脑子懵逼不知道干什么的时候
老弟@提莫酱的解答,
我问了那么多不懂的简单到极致的问题,
现在想来都不好意思了快……