文章讲述如何利用远程服务器,以及本地hexo实现博客的搭建
主要是实操:
一般要想让博客能够在公网上被访问,需要有IP地址,或者是利用github.io进行搭建,本篇文章主要是针对远程服务器进行搭建。
hexo的架构
对于如何使用hexo,请参考博客
理解图片的含义,也就是通过本地的hexo g渲染博客的静态文件,然后通过push将静态文件推送到远程服务器的git仓库,服务器再通过git-hooks同步网站根目录(需要安装Apache),这样就可以通过网络访问自己的博客。
搭建流程
- 安装node.js以及本地hexo初始化
- 服务器环境的搭建,包括安装git,安装httpd,创建git用户
- 使用Git自动化部署发布博客
初始化Hexo博客
创建一个存放自己博客文章的目录
# mkdir blog
# cd blog
初始化该文件夹
hexo init
安装hexo的扩展插件
npm install
等执行成功以后安装两个插件, hexo-deployer-git 和 hexo-server ,这俩插件的作用分别是使用Git自动部署,和本地简单的服务器。
npm install hexo-deployer-git --save
npm install hexo-server --save
尝试生成自己的一篇博客
hexo new "文件名"
此时在source/_posts目录下面会新增刚刚new的文件名的.md文件,编辑该文件。
hexo g && hexo server
打开http://localhost:4000 可以看到hexo的初始页面表示成功初始化成功!
当然可以直接使用ip地址实现访问
# hexo server -i <IP地址>
生成SSH公钥密钥黑科技(可以不用一直输入密码)(可选)
在本地客户端输入:ssh-keygen
# ssh-keygen
系统会在~/.ssh
目录中生成一个id_rsa
和一个id_rsa.pub
文件
-
方法一:直接将文件
id_rsa.pub
拷贝到服务器的~/.ssh
目录里面的 authorized_keys,修改权限为600 -
方法二:利用命令:
ssh-copy-id 用户名@IP地址
直接将客户端生成的公钥文件传送到远程主机。过程需要输入密码*
这个时候使用ssh 登录远程服务器就可以不用输入密码了!
安装Apache
centos下安装apache比较简单
# yum install httpd
# systemctl enable httpd
# systemctl restart httpd
测试一下安装是否成功,在服务器的浏览器上输入127.0.0.1,可以看到Apache的test页面则为安装成功!
Apache的网站目录一般为/var/www/html,不需要更改。
初始化Git仓库,服务器环境下#
可以将git仓库放在任意地方,目前是将仓库放在/var/repo/blog.git目录下面
# mkdir /var/repo
# cd /var/repo
#git init --bare blog.git
使用 --bare 参数,Git 就会创建一个裸仓库,裸仓库没有工作区,我们不会在裸仓库上进行操作,它只为共享而存在。
配置git hooks
利用post-receive的hook,在git操作完成后会被运行。
在blog.git/hooks目录下面新建post-receive文件
# cd /var/repo/blog.git/hooks
编辑文件
#!/bin/sh
git --work-tree=/var/www/html --git-dir=/var/repo/blog.git checkout -f
/var/www/html目录要换成自己服务器的网站目录,git是git仓库的位置。
添加文件的权限
chmod +x post-receive
配置本地_config.yml 文件,完成自动化部署#
修改hexo目录下的_config.yml找到最后面的deploy,修改为:
deploy:
type: git
repo: root@<IP地址>:/var/repo/blog.git
branch: master
至此,我们的hexo自动部署就已经全部完成
开始你的博客
参考上面的新建博客的方法
最后使用命令行进行提交:
# hexo clean && hexo g && hexo d
到服务器上打开127.0.0.1,如果IP地址外网可以访问,直接输入IP地址便可以访问博客。