将Hexo博客部署至腾讯云服务器(Ubuntu18.04)
注:本文参考自https://staunchkai.com/hexo_deploy.html
原本我的hexo是部署在Github上的。但是,就今年来说,基于美国贸易政策影响,Github已经限制了一些国家的用户访问。一名国外的开发者发表声明:Github封禁了他的账号,不能访问私有仓库,认为他在开发核武器。看到这,我不禁笑了出来,然后我就萌发了,将博客迁回国内的想法(当然,我不会告诉你,真正的原因是是因为访问速度太慢了。)
部署环境
-
本地环境
- Windows10(64bit)
- 环境:git,Node.js,hexo
- 生成本地静态网站
-
服务器环境
- 腾讯云主机(Ubuntu18.04)
- 环境:git,Nginx
- 使用git自动化部署发布
服务器配置
安装Git
1 | sudo apt install -y git |
创建git用户
1 | sudo adduser git |
在合适的位置增加以下内容
1 | git ALL=(ALL) ALL |
如图:
保存并退出,修改回权限
1 | chmod 400 /etc/sudoers |
本地创建密钥
1 | ssh-keygen -t rsa |
一路回车,直至如下图所示:
切换至 git 用户,创建.ssh文件夹以及 authorized_keys 文件并将本地的id_rsa.pub文件内容粘贴到里面。(切记是id_rsa.pub,而不是id_rsa)
1 | su git |
修改权限
1 | cd ~ |
测试
在本地Windows上,使用Git Bash
1 | ssh -v git@SERVER_ip |
测试结果为,不需要密码直接进入。
创建网站目录
创建一个目录作为网站根目录,并赋予权限
1 | su root |
安装配置Nginx
1 | sudo apt install -y nginx # 安装 |
此时去访问服务器的公网IP地址,可以看到Nginx的欢迎页面,至此Nginx安装成功。
PS:原谅我忘记截图,只好从网上截取。Ubuntu下Nginx安装成功就是这样子的,不过centos的好像比这个漂亮一些,有兴趣的可以自行度娘。
配置Nginx
1 | vim /etc/nginx/sites-available/default # 编辑配置 |
配置如下:
1 | server { |
使用nginx -t命令检查配置文件的语法是否出错。然后使用systemctl restart nginx.service systemctl命令重启服务即可。
自动化部署
建立git裸库
1 | su root |
这里使用的是post-receive这个钩子,当git有收发的时候就会调用这个钩子。 在blog.git裸库的 hooks 文件夹中,新建post-receive文件。
1 | vim blog.git/hooks/post-receive |
填入以下内容,其中 /home/hexo 为网站目录
1 | #!/bin/sh |
添加权限
1 | chmod +x /home/git/blog.git/hooks/post-receive |
本地配置
在本地中,和部署到 pages 服务一样,需要先 hexo g 命令生成静态文件,通过 hexo s 命令能够正常进行本地访问,并且确保已经安装了 hexo-deployer-git。
配置_config.yml
1 | deploy: |
至此,就可以按照正常流程部署了。
1 | hexo clean |