Hexo部署在腾讯云

部署环境与准备

1.环境
本地Window11操作系统
腾讯云OpenCloudOS 9操作系统
2.Hexo本地博客
电脑通过SSH密钥连接到你的服务器

配置SSH密钥

为了使本地可以跟远程的github建立联系,需要在本地配置SSH密钥,这样我们就可以在本地直接提交代码到GitHub上或者远端git仓库。
如果你是第一次配置SSH,则配置一下git的username 和 email

1
2
git config --global user.name "你要设置的名字"  
git config --global user.email "你要设置的邮箱"

然后生成SSH密钥:

1
ssh-keygen -t rsa -C "你刚刚设置的邮箱"

然后提示要求设置密码,设置了密码的话之后每次部署都需要输入密码,如果不想设置密码的话,连续三个回车就好了。在这之后会得到两个文件: id_rsa 和 id_rsa.pub

找到id_rsa.pub文件,选择用记事本打开,复制其内容。路径: C:\Users\gt(你的用户名)/.ssh

云服务器部署

1、git配置

1、安装git(git –version可查看版本,若已下载可忽略该步)
在服务器的终端页面依次输入,然后回车

1
2
sudo su root
yum install git

等待一下就安装好了,中途会出现

1
Is this ok [y/d/N]:

输入:y 然后回车即可
此时git已经安装成功
2、创建git账号

1
adduser git

3、添加git账号权限(OpenCloudOS 9操作系统用户不在这里添加权限,可跳过)

1
2
chmod 740 /etc/sudoers  
vim /etc/sudoers

输入上面的命令,回车之后,进入编辑界面。
这里要先点击 “i” 键,进入编辑模式,然后找到以下内容的地方:

1
2
## Allow root to run any commands anywhere  
root ALL=(ALL) ALL

添加以下内容

1
git     ALL=(ALL)     ALL

然后按 “Esc” 键,此时最底下的—INSERT—消失,再输入 “:wq”,即保存退出。
改回权限

1
chmod 400 /etc/sudoers

4、设置git账户密码

1
sudo passwd git

输入两次密码就设置成功了。注意,linux下输入密码是不显示的,你直接输入,输完回车就行了。
5、切换至git用户,创建 ~/.ssh 文件夹和 ~/.ssh/authorized_keys 文件,并赋予相应的权限

1
2
3
su git  
mkdir ~/.ssh
vim ~/.ssh/authorized_keys

按”i”进入编辑模式,将我们在win10中生成的id_rsa.pub文件中的公钥复制到authorized_keys中,按”esc”,然后按”:wq”,保存退出。

接着,输入以下命令,赋予权限

1
2
chmod 600 /home/git/.ssh/authorized_keys  
chmod 700 /home/git/.ssh

在本地Git终端中测试是否能登录git,其中SERVER为填写自己的云主机IP,执行输入yes后输入你之前配置的git密码,无报错就说明好了。
在电脑本地桌面,右键”Git Bash Here”,输入以下命令,其中SERVER填写自己的云主机ip,执行输入yes后说明配置成功了。

1
ssh -v git@SERVER

如果你之前配置过git,可能你会出现以下这种错误。

1
Offending ECDSA key in /c/Users/jonty/.ssh/known_hosts:5

是.ssh/known_hosts 这个文件第五行出现冲突了。只要用记事本打开,将这个文件的第五行删掉即可。

重新执行刚刚的命令

1
ssh -v git@你的服务器ip

2、创建git仓库

1、创建目录
在根目录下创建一个文件夹作为Git仓库目录 例如/blog/repo

1
2
su root
mkdir /blog/repo

2.赋予权限

1
2
chown -R git:git /blog/repo  
chmod -R 755 /blog/repo

3.接下来创建hexo目录作为网站根目录,并赋予权限:

1
2
3
mkdir /blog/hexo  
chown -R git:git /blog/hexo
chmod -R 755 /blog/hexo

4.创建git仓库

1
2
cd /blog/repo  
git init --bare hexo.git

5.创建一个新的 Git 钩子,用于自动部署.

在 /blog/repo/hexo.git 下,有一个自动生成的 hooks 文件夹。我们需要在里边新建一个新的钩子文件 post-receive。

1
vim /blog/repo/hexo.git/hooks/post-receive

6.按i进入编辑模式,然后将下面那两行代码粘贴进去,按esc,然后输入:wq,保存退出。

1
2
#!/bin/bash  
git --work-tree=/blog/hexo --git-dir=/blog/repo/hexo.git checkout -f

7.修改权限

1
2
chown -R git:git /blog/repo/hexo.git/hooks/post-receive  
chmod +x /blog/repo/hexo.git/hooks/post-receive

云服务器网站配置

1.在宝塔面板,点击左栏的网站,添加站点,填写你的域名,没有的话写你的服务器ip地址。其他的不要改。填写完之后提交,然后点击”设置”
点击配置文件

1
2
3
4
5
6
7
8
server  
{
listen 80;
# server_name填写你自己的域名,没有的话填ip
server_name 139.199.181.34;
index index.php index.html index.htm default.php default.htm default.html;
# 这里root填写自己的网站根目录,修改为/blog/hexo
root /blog/hexo;

保存,然后选择“设置”-“网站目录”,将网站目录修改成/blog/hexo,保存。
回到服务器终端,重启宝塔服务,使之生效。

2.进入本地电脑hexo博客的根目录,编辑站点配置文件 _config.yml,找到deploy,修改成以下

1
2
3
4
5
deploy:  
type: git
#repo改为repo: git@你的域名或IP:/blog/repo/hexo.git
repo: git@139.199.181.34:/blog/repo/hexo.git
branch: master

最后在本地电脑hexo博客的根目录右击,Git Bash Here,输入以下命令部署

1
2
hexo cl
hexo d -g

这时候可能出现权限问题,导致部署到git失败。
在服务器终端输入以下命令再次赋予权限即可:

1
2
chown -R git:git /blog/repo/  
chown -R git:git /blog/hexo/

最后再hexo d -g部署,应该就可以看到部署成功了。
自此,已经将博客从本地部署到腾讯云服务器了。