
- 很多同学喜欢把hexo博客搭建在gitpage或者codingpage上,今天我尝试了下把它搭建在vps上。实现gitpage、codingpage和vps同步部署。
- 首先我们要弄明白,它的原理。hexo的部署工作其实就是把,hexo根目录下的public文件夹中的内容推送到服务器上。我们甚至可以直接把public文件夹中的内容拷贝到,nginx的网站根目录下来实现访问。但这样太麻烦了,我们可以通过设置来达到一次部署多端推送的目的。
1、服务器环境搭建
1.1安装git和nginx
1
2
3
4yum install git
yum install -y nginx
#启动nginx服务
service nginx start
1.2创建一个网站的根目录(用于存放网站的部署的静态文件)
1
2
mkdir blog1.3建立git仓库
1
git init --bare blog.git
1.4使用 git-hooks 同步网站根目录
在这里我们使用的是 post-receive这个钩子,当git有收发的时候就会调用这个钩子。 在 ~/blog.git 裸库的hooks文件夹中,新建post-receive文件。意思就是删除/var/www/blog/下的文件,并将root/blog.git下的文件clone到/var/www/blog目录下,这里注意一下,我这里使用的是cenOS服务器,登录默认给予的是root权限,所以这里的/root即为/home1
2
3
rm -rf /var/www/blog
git clone /root/blog.git /var/www/blog
然后我们赋予这个文件夹权限:1
chmod +x post-receive
1.5配置Nginx
在里面添加:1
vim /etc/nginx/conf.d/blog.conf
重启nginx:1
2
3
4
5server{
listen 80;
server_name www.lee1224.com lee1224.com;
root /var/www/blog;
}1
service nginx restart
2、本地hexo配置
- 当我们完成了上述服务器端操作时候,就要回到本地,开始配置hexo。
- 进入我们本地初始化的项目源文件中,看到有一个_config.yml文件,是整个项目的配置文件,打开在最后一行你会发现deploy字样,输入下列信息:
1
2
3deploy:
type: git
repo: root@IP:blog.git
3、补充
- 设置完成后发现每次部署都要输入Linux登录密码。我们可以通过配置配置SSH公钥。
1、生成公钥。注意: 键入这个命令后,会提示让你给这个公钥配置密码(passphrase),我们既然是为了避免多次输入密码, 这里为什么还要给公钥配置密码呢,所以我们要一路回车,不理他(会出现三次)1
ssh-keygen
2、然后将本地公钥拷贝到服务器。这条命令由多个语句组成,依次分解开来看:1
2#首先cd到公钥目录
ssh user@host 'mkdir -p .ssh && cat >> .ssh/authorized_keys' < ~/.ssh/id_rsa.pub
(1)”$ ssh user@host”,表示登录远程主机;
(2)单引号中的mkdir .ssh && cat >> .ssh/authorized_keys,表示登录后在远程shell上执行的命令:
(3)”$ mkdir -p .ssh”的作用是,如果用户主目录中的.ssh目录不存在,就创建一个;
(4)’cat >> .ssh/authorized_keys’ < ~/.ssh/id_rsa.pub的作用是,将本地的公钥文件~/.ssh/id_rsa.pub,重定向追加到远程文件authorized_keys的末尾。
写入authorized_keys文件后,公钥登录的设置就完成了。 - 到这里就全都配置完毕啦!



