如何在服务器上搭建hexo博客
总体来说还是比把hexo搭建到github上要复杂一些的,期间遇到了不少坑,也参考了很多资料,这里详细的总结一下具体的步骤。
hexo的架构
首先我们要理解hexo是如何实现静态博客通过云服务器访问的
通过上图我们可以知道,整个流程就是在本地通过
hexo g
渲染博客的静态文件,然后通过hexo d
把静态文件 push到服务器上我们自己创建的git仓库,服务器再通过 git-hooks 同步网站根目录,这样就可以访问了
搭建流程
第一步: 安装node.js以及本地Hexo初始化
第二步: 服务器环境搭建,包括安装 Git 、Nginx配置 、创建 git 用户
第三步: 使用Git自动化部署发布博客
本地环境
安装node.js
$ brew install node
初始化Hexo博客
首先创建 你的Hexo 目录
$ mkdir "your hexo dir name"//创建一个自定义的hexo目录,比如我就在用户根目录创建了一个myhexo文件夹(macOS) $ cd "your hexo dir name"//进入到刚刚创建的目录
然后安装 hexo-cli,安装hexo-cli 需要 root 权限,使用 sudo 运行
sudo npm install -g hexo-cli
初始化该文件夹
hexo init
安装hexo的扩展插件
npm install
等执行成功以后安装两个插件, hexo-deployer-git 和 hexo-server ,这俩插件的作用分别是使用Git自动部署,和本地简单的服务器。
npm install hexo-deployer-git --save npm install hero-server --save
以及一些其他插件(*非必选)
npm install hexo-admin --save npm install hexo-generator-archive --save npm install hexo-generator-feed --save npm install hexo-generator-search --save npm install hexo-generator-tag --save npm install hexo-generator-sitemap --save
到这里hexo的本地搭建已经基本结束了,快来新建一个文章并在本地启动吧~
生成自己的第一篇文章
使用 hexo new <文章名称> 来新建文章,该命令会成成一个 .md文件放置在 sources/_posts文件夹。(*在hexo目录下执行命令)
hexo new "hello Hexo"
执行该命令后在hexo目录下的 sources/_posts文件夹里生成了刚刚创建的hello
Hexo.md的markdown文件,然后就可以通过本地或者在线的markdown编辑器就可以创作自己的博客了~
编辑完毕以后, 使用hexo g将 .md文件渲染成静态文件,然后启动hexo-server
hexo g hexo server
打开 http://localhost:4000 如果看到 hexo 的初始页面证明安装成功。
生成ssh公钥密钥
$ cd ~/.ssh $ ssh-keygen
它先要求你确认保存公钥的位置(.ssh/id_rsa),然后它会让你重复一个密码两次,如果不想在使用公钥的时候输入密码,可以留空;具体生产方法可以参考这里
这个公钥将会复制到服务器的证书中,添加公钥之后可以防止每次 push 都输入密码。
至此,本地环境的搭建已经基本结束。
服务器环境搭建
安装nginx
因为我们是拿nginx做 Web 服务器,所以我们需要安装部署好nginx,如果没有安装,推荐使用LNMP一键安装包
我们可以专门为hexo创建一个部署目录,比如我创建了/home/www/hexo文件夹,并把nginx的配置文件nginx.conf中的部署目录改为/home/www/hexo,配置文件一般在/usr/local/nginx/conf里;同样可以使用默认目录,nginx的默认目录为/var/www/html,如果使用LNMP一键安装包,则默认的部署目录为/home/wwwroot/default
安装node.js
$ curl -sL https://deb.nodesource.com/setup_4.x | sudo -E bash - $ apt-get install -y nodejs
如果遇到问题可以参考Node.js部署到阿里云服务器里边有更详细的关于node.js的步骤
安装git
$ apt-get install git
创建一个git用户
$ sudo adduser git
虽说现在的仓库只有我们自己在使用,新建一个 git 用户显得不是很有必要,但是为了安全起见,还是建议使用单独的 git 用户来专门运行
git 服务
添加证书登录
把刚在在本地创建或者已经拥有的公钥,也就是 ~/.ssh/id_rsa.pub 文件里的内容添加到服务器的 /home/git/.ssh/authorized_keys 文件中,如上所说,添加公钥之后可以防止每次 push 都输入密码。(*可以直接执行cat ~/.ssh/id_rsa.pub | pbcopy
复制)
初始化 Git 仓库
可以将git仓库放到自定义位置,我是将其放在 /var/repo/blog.git 目录下的
$ sudo mkdir /var/repo $ cd /var/repo $ sudo git init --bare blog.git
使用 --bare 参数,Git 就会创建一个裸仓库,裸仓库没有工作区,我们不会在裸仓库上进行操作,它只为共享而存在。
配置 git hooks
我们这里要使用的是 post-receive 的 hook,这个 hook 会在整个 git 操作过程完结以后被运行,关于 hooks
的详情内容可以参考这里。
在 blog.git/hooks 目录下新建一个 post-receive 文件
$ cd /var/repo/blog.git/hooks
编辑这个文件
$ vim post-receive
在 post-receive 文件中写入如下内容
#!/bin/sh git --work-tree=/home/www/hexo --git-dir=/var/repo/blog.git checkout -f
注意,/home/www/hexo 要换成你自己的部署目录,正如上文所说,我是的配置目录是/home/www/hexo。/var/repo/blog.git是git仓库的位置。上面那句 git 命令可以在我们每次 push 完之后,把部署目录更新到博客的最新生成状态。这样便可以完成达到自动部署的目的了。
设置这个文件的可执行权限
chmod +x post-receive
改变 blog.git 目录的拥有者为 git 用户
$ sudo chown -R git:git blog.git
禁用 git 用户的 shell 登录权限
出于安全考虑,我们要让 git 用户不能通过 shell 登录。可以编辑 /etc/passwd 来实现
vim /etc/passwd
将
git:x:1001:1001:,,,:/home/git:/bin/bash
改成
git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell
这样 git 用户可以通过 ssh 正常使用 git,但是无法登录 sehll。
至此,服务器环境的搭建已经基本结束。
配置本地_config.yml文件,完成自动化部署
现在配置 hexo 的 deploy。
修改 hexo 目录下的 _config.yml 找到 deploy, 修改为:
deploy: type: git repo: git@www.moumaobuchiyu.com:/var/repo/blog.git branch: master
repo 的地址为你自己的地址以及 git 仓库目录
至此,我们的 hexo 自动部署已经全部配置好了
开始使用
新建文章:
$ hexo new "post name"
生成 & 部署:
$ hexo clean && hexo g && hexo d
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
MySQL敏感数据加密及解密
MySQL敏感数据加密及解密大数据时代的到来,数据成为企业最重要的资产之一,数据加密的也是保护数据资产的重要手段。本文主要在结合学习通过MySQL函数及Python加密方法来演示数据加密的一些简单方式。 准备工作为了便于后面对比,将各种方式的数据集存放在不同的表中。 创建原始明文数据表 / 创建原始数据表 / CREATE TABLE f_user (id int(11) NOT NULL AUTO_INCREMENT,name varchar(50) DEFAULT NULL,tel varchar(20) DEFAULT NULL,pwd varchar(50) DEFAULT NULL, PRIMARY KEY (id)); / 新增原始数据 /INSERT INTO f_user VALUES (1,'曹操','10000000000','Cc@123'),(2,'关羽','21000000000','Guanyu@21'),(3,'刘备','20000000000','LB#200000'); 创建MySQL加密表 CREATE TABLE f_user_m (id int(...
- 下一篇
5种将死的编程语言
云栖号:https://yqh.aliyun.com第一手的上云资讯,不同行业精选的上云企业案例库,基于众多成功案例萃取而成的最佳实践,助力您上云决策! 现在的开发人员都趋向于使用新的编程语言,那么旧的编程语言呢?它们的前途一般是这样两种:仍然可以使用,但逐渐不受大家欢迎;直接完全死去。和之前的十佳最受欢迎的编程语言相反,本文我们预测以下这几种编程语言面临着死亡威胁: Perl 曾几何时,几乎每个人都在使用Perl语言编程。但是那些经常使用的人慢慢地发现,关于这个Perl语言似乎总是有点不对劲。至少我知道有这么个叫做“piecemeal”的编程语言,它的创造者似乎就只是将这个功能堆在另一个功能上面而已,并没有好好考虑将它们结合在一起。 事实上,甚至是它的创造者也不得不承认这种编程语言是有问题的。经过完整地改造之后,现在的开发工作开始倾向于使用Perl6,这个大概是在2000年的时候。至于Perl?俨然已经销声匿迹了!所以完全没有必要去学习它了。顺便说一句,下面这个“Goodbye World”就是用Perl写的: #!/usr/bin/perl print “Content-type:...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8编译安装MySQL8.0.19
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- SpringBoot2整合Redis,开启缓存,提高访问速度
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Hadoop3单机部署,实现最简伪集群
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果