hexo部署到阿里云

1 安装nginx

2 安装 git

3 创建git仓库

4 配置钩子

5 hexo 配置

6 宝塔添加站点

搭建流程

第一步: 安装node.js以及本地Hexo初始化
第二步: 服务器环境搭建,包括安装 GitNginx配置 、创建 git 用户
第三步: 使用Git自动化部署发布博客

1 安装nginx

安装宝塔:https://www.bt.cn/

利用宝塔安装后 nginx

2 安装 git

yum install git

检查安装信息:git --version

2.1 创建git用户

adduser git
chmod 740 /etc/sudoers
vim /etc/sudoers

找到以下内容,并添加git用户权限git ALL=(ALL) ALL

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

保存退出后改回权限:

chmod 400 /etc/sudoers

然后给新加的用户git设置权限,编辑/etc/passwd将:git:x:1003:1003:,,,:/home/git:/bin/bash 改成:git:x:1003:1003:,,,:/home/git:/usr/bin/git-shell 这样git就只能使用git-shell而不能使用bash。

vim /etc/passwd

2.2 git服务器打开RSA认证

vim /etc/ssh/sshd_config

在sshd_config中开启以下几项

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile  .ssh/authorized_keys

随后设置Git用户的密码

#需要root权限
sudo passwd git

2.3 配置ssh

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

su git
mkdir ~/.ssh
vim ~/.ssh/authorized_keys
#然后将电脑中的 .ssh/id_rsa.pub 将公钥复制粘贴到 authorized_keys
chmod 600 ~/.ssh/authorized_keys
chmod 700 ~/.ssh

然后就可以本机上git执行ssh 命令测试是否可以免密登录ssh -v [email protected] 至此,Git用户添加完成

ssh -v [email protected]服务器IP地址

2.4 如果报错

如图这种错误,是因为known_hosts这个文件还是以前访问过服务器的,可以删除known_hosts再次免密访问就可以了。

known_hosts这个文件究竟有什么用?里面放的是什么内容?

ssh会把你每个你访问过计算机的公钥(public key)都记录在known_hosts。当下次访问相同计算机时,OpenSSH会核对公钥。如果公钥不同,OpenSSH会发出警告, 避免你受到DNS Hijack之类的攻击。

3 创建git仓库

执行命令:

sudo git init --bare /home/git/hexo.git

使用–bare 参数,Git 就会创建一个裸仓库,裸仓库没有工作区,我们不会在裸仓库上进行操作,它只为共享而存在。

sudo chown -R git:git /home/git/hexo.git

4 配置钩子

4.1 创建post-receive

以git用户配置

hexo.git/hooks 目录下新建一个 post-receive 文件,进入cd /home/git/hexo.git/hooks/,编辑这个文件vim post-receive

cd /home/git/hexo.git/hooks/
vim post-receive

post-receive 文件中写入如下内容:

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

设置这个文件的可执行权限:

chmod +x post-receive

注意,/www/wwwroot/hexo 要换成你自己的部署目录,正如上文所说,我是的配置目录是/www/wwwroot/hexo。其中/home/git/hexo.git是git仓库的位置。上面那句 git 命令可以在我们每次 push 完之后,把部署目录更新到博客的最新生成状态。这样便可以完成达到自动部署的目的了。

4.2 去创建work-tree文件夹

如果work-tree的路径不存在,不会自动创建的。

如果路径不存在、或者该文件夹所有者不是git,即使本地hexo d成功,阿里云的git也不会push成功,导致/www/wwwroot/hexo下没有文件夹

cd /www/wwwroot/
mkdir hexo

5 hexo 配置

对应的这里_config.yml改为

deploy:
- type: git
  repo: [email protected]服务器IP地址:/home/git/hexo.git
  branch: master

6 宝塔添加站点


参考资料:
https://www.jianshu.com/p/e1ccd49b4e5d

打赏
  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!

客官,赏一瓶怡宝吧。

支付宝
微信