4-13 部署博客到阿里云ECS服务器
🖼 所有搭建博客的汇总在这里:Blog全程搭建
🌻第五步:在ecs部署hexo
5.1 在本地电脑创建秘钥
这个秘钥用于在mac上链接到虚拟机,推送需要
为了使本地可以跟远程的github建立联系,需要在本地配置SSH密钥,这样我们就可以在本地直接提交代码到GitHub上或者远端git仓库。
如果你是第一次配置SSH,则配置一下git的username 和 email
1 | git config --global user.name "你要设置的名字" |
之后生成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 | chmod 740 /etc/sudoers |
按”i”进入编辑模式,”ecs”退到底行模式,英文输入法输入”:wq!”强制保存退出
在底行模式中,”yy”可以复制一行,”dd”可以删除一行
在root ALL=(ALL) ALL
下面添加
1 | git ALL=(ALL) ALL |
4、改回权限
1 | chmod 400 /etc/sudoers |
5、设置git账户密码
1 | passwd git |
6、切换至git用户,创建 ~/.ssh 文件夹和 ~/.ssh/authorized_keys 文件,并赋予相应的权限
1 | su git |
按”i”进入编辑模式,将我们在MacBook中生成的id_rsa.pub文件中的公钥复制到authorized_keys中,按”esc”,然后按”:wq”,保存退出。
7、接着,输入一下命令,赋予权限
1 | chmod 600 /home/git/.ssh/authorized_keys |
8、在本地Git终端中测试是否能免密登录git,其中SERVER为填写自己的云主机IP,执行输入yes后输入你之前配置的git密码,无报错就说明好了。
打开终端,输入以下命令,其中SERVER填写自己的云主机ip,执行输入yes后不用密码说明配置成功了。
1 | ssh -v git@SERVER |
(如果你的电脑直接已经和该服务器建立链接,再次链接会显示对应的port站点已经被占用,你应该先断开当前链接,再去创建新的链接,这个可以参考下图去做,我当时找了半天)
1 | ssh-keygen -R 120.79.58.242 |
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 | chown -R git:git /www/wwwroot/repo |
3、接下来创建hexo目录作为网站根目录,并赋予权限:
1 | mkdir /www/wwwroot/hexo |
4、接下来创建一个空白的git仓库
1 | cd /www/wwwroot/repo |
5、创建一个新的 Git 钩子,用于自动部署.
在 /www/wwwroot/repo/hexo.git 下,有一个自动生成的 hooks 文件夹。我们需要在里边新建一个新的钩子文件 post-receive。
1 | vim /www/wwwroot/repo/hexo.git/hooks/post-receive |
进入编辑模式,然后将下面那两行代码粘贴进去,保存退出。
1 |
|
修改权限:
1 | chown -R git:git /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添加站点
2、访问创建成功站点
3、电脑本地推送hexo项目到服务器
按照下面配置推送地址,推送后,可以通过浏览器正常访问到我们的hexo博客
如果出现什么问题可能需要删除文件,此处可能出现下面问题,原因是宝塔在hexo下新建了一个.user.ini,其具有不可标志‘i’,我们需要移除这个标志
1、检查文件属性:首先,使用、Isattr 命令检查文件的扩展属性,看是否设置了不可变标志‘i’
1 | lsattr /www/wwwroot/hexo/.user.ini |
2、移除不可变标志:如果文件被设置为不可变,您可以使用‘chattr’命令移除这一属性:
1 | chattr -i /www/wwwroot/hexo/.user.ini |
这将允许您修改或删除文件。
3、再给文件夹赋权
1 | chown -R git:git /www/wwwroot/hexo |
4、重新推送,可以推送成功
4、申请网站SSL证书(不申请访问不了)
1、申请不一定要在服务器,在mac本地亦可,只需要验证域名是自己的就可以(验证的时候需要到域名解析那里进行一定的配置)
2、配置到宝塔linux对应的php站点,在SSL中进行相关配置,代理后强制https访问
3、很多地方都能购买和申请(但是不便宜),我使用的证书是Let’s Encrpy的免费证书,90天需要更新一次(但是更新后提示安全风险,我重新申请之后就不提示了,第一次申请需要手动,之后在宝塔Linux内直接申请就OK)
4、更多相关可以自己去找教程
5、配置完成!!
恭喜你💐,成功配置,此时你可以本地编写hexo博客,直接推送到服务器,服务器会直接推送到你的域名,外网可以直接访问到你的博客。