🖼 所有搭建博客的汇总在这里:Blog全程搭建

🌻第五步:在ecs部署hexo

5.1 在本地电脑创建秘钥

这个秘钥用于在mac上链接到虚拟机,推送需要

为了使本地可以跟远程的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文件并复制其内容

5.2 在ecs服务器上创建git用户

git用户是我们推送使用的

1、安装git(Ubuntu就是apt,Centos就是yum,CentosStream就是dnf)

1
apt install git

2、创建git用户

1
adduser git

3、添加git账户权限

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

按”i”进入编辑模式,”ecs”退到底行模式,英文输入法输入”:wq!”强制保存退出

在底行模式中,”yy”可以复制一行,”dd”可以删除一行

root ALL=(ALL) ALL 下面添加

1
git    ALL=(ALL)   ALL
2428.1.添加git权限

4、改回权限

1
chmod 400 /etc/sudoers

5、设置git账户密码

1
passwd git

6、切换至git用户,创建 ~/.ssh 文件夹和 ~/.ssh/authorized_keys 文件,并赋予相应的权限

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

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

2428.2.查看.ssh下的公钥

7、接着,输入一下命令,赋予权限

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

8、在本地Git终端中测试是否能免密登录git,其中SERVER为填写自己的云主机IP,执行输入yes后输入你之前配置的git密码,无报错就说明好了。

打开终端,输入以下命令,其中SERVER填写自己的云主机ip,执行输入yes后不用密码说明配置成功了。

1
ssh -v git@SERVER
2428.3.输入密码,连接成功

(如果你的电脑直接已经和该服务器建立链接,再次链接会显示对应的port站点已经被占用,你应该先断开当前链接,再去创建新的链接,这个可以参考下图去做,我当时找了半天)

2428.4.重新远程链接服务器主机
1
2
3
ssh-keygen -R 120.79.58.242
ssh git@120.79.58.242
# yes 后输入密码

5.3 创建目录和钩子

1、我们需要赋予git用户访问以下目录的权利

2、/www/wwwroot/repo是一个git仓库,仓库中有个钩子自动推送内容到下面目录

3、/www/wwwroot/hexo是我们放博客的地方
如此,我们只需要推送到repo/,博客内容就能正常推送到hexo/

1、创建目录
在var目录下创建repo作为Git仓库目录,返回服务端命令行切换到root账户,然后输入:

1
mkdir /www/wwwroot/repo

2、赋予权限:

1
2
chown -R git:git /www/wwwroot/repo
chmod -R 755 /www/wwwroot/repo

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

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

4、接下来创建一个空白的git仓库

1
2
cd /www/wwwroot/repo
git init --bare hexo.git

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

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

1
vim /www/wwwroot/repo/hexo.git/hooks/post-receive

进入编辑模式,然后将下面那两行代码粘贴进去,保存退出。

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

修改权限:

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

到这里自动推送的Git仓库就搭建完毕了。

🌹第六步:推送本地博客到ecs服务器

1、请确定你在”宝塔linux”和 “阿里云ecs安全组”放开80、443端口的权限

2、请确定DNS已解析域名到服务器ip

(如果xxx.com域名访问失败,www.xxx.com访问成功,可以把xxx.com通过CNAME解析到www.xxx.com

3、https协议安全访问(正常部署是http,访问会提示不安全,保密性差容易被攻击)

(使用ISRG的Let’s Encrypt,长期免费,90天一个周期自动续费?)

1、宝塔Linux添加站点

2428.5.添加PHP站点

2、访问创建成功站点

2428.6.正常访问站点

3、电脑本地推送hexo项目到服务器

按照下面配置推送地址,推送后,可以通过浏览器正常访问到我们的hexo博客

2428.7.推送示例

如果出现什么问题可能需要删除文件,此处可能出现下面问题,原因是宝塔在hexo下新建了一个.user.ini,其具有不可标志‘i’,我们需要移除这个标志

2428.8.删除文件权限不足

1、检查文件属性:首先,使用、Isattr 命令检查文件的扩展属性,看是否设置了不可变标志‘i’

1
lsattr /www/wwwroot/hexo/.user.ini

2、移除不可变标志:如果文件被设置为不可变,您可以使用‘chattr’命令移除这一属性:

1
chattr -i /www/wwwroot/hexo/.user.ini

这将允许您修改或删除文件。

3、再给文件夹赋权

1
2
chown -R git:git /www/wwwroot/hexo
chmod -R 755 /www/wwwroot/hexo

4、重新推送,可以推送成功

4、申请网站SSL证书(不申请访问不了)

1、申请不一定要在服务器,在mac本地亦可,只需要验证域名是自己的就可以(验证的时候需要到域名解析那里进行一定的配置)

2、配置到宝塔linux对应的php站点,在SSL中进行相关配置,代理后强制https访问

3、很多地方都能购买和申请(但是不便宜),我使用的证书是Let’s Encrpy的免费证书,90天需要更新一次(但是更新后提示安全风险,我重新申请之后就不提示了,第一次申请需要手动,之后在宝塔Linux内直接申请就OK)

4、更多相关可以自己去找教程

5、配置完成!!

恭喜你💐,成功配置,此时你可以本地编写hexo博客,直接推送到服务器,服务器会直接推送到你的域名,外网可以直接访问到你的博客。