如何在服务器上搭建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
相关文章
|
7月前
|
Ubuntu JavaScript 关系型数据库
在阿里云Ubuntu 20.04服务器中搭建一个 Ghost 博客
在阿里云Ubuntu 20.04服务器上部署Ghost博客的步骤包括创建新用户、安装Nginx、MySQL和Node.js 18.x。首先,通过`adduser`命令创建非root用户,然后安装Nginx和MySQL。接着,设置Node.js环境,下载Nodesource GPG密钥并安装Node.js 18.x。之后,使用`npm`安装Ghost-CLI,创建Ghost安装目录并进行安装。配置过程中需提供博客URL、数据库连接信息等。最后,测试访问前台首页和后台管理页面。确保DNS设置正确,并根据提示完成Ghost博客的配置。
在阿里云Ubuntu 20.04服务器中搭建一个 Ghost 博客
|
弹性计算 关系型数据库 Apache
基于ECS搭建云上博客
本场景将基于一台配置了CentOS 7.7操作系统的ECS实例(云服务器)。通过本教程的操作,您可以在一台CentOS 7.7操作系统的ECS实例上安装和部署LAMP环境,然后安装 WordPress,帮助您快速搭建自己的博客。
基于ECS搭建云上博客
|
2月前
|
域名解析 弹性计算 程序员
想要轻松地搭建一个即开即用的WordPress博客吗?借助宝塔面板镜像+阿里云ECS,迅速拥有自己的个人博客
拥有个人博客是每位程序员的梦想,但对服务器不熟悉的初学者而言,搭建博客颇具挑战。本文介绍利用阿里云市场的宝塔面板镜像与ECS云服务器,轻松搭建WordPress博客的方法,让您快速拥有专属博客空间。通过简单的操作步骤,即使是新手也能轻松上手,实现从零到有的博客搭建过程。
200 3
|
5月前
|
域名解析 弹性计算 监控
阿里云服务器搭建博客网站教程
1. 购买阿里云ECS实例 2. 配置域名解析至服务器IP 3. 安装Nginx/Apache,部署网站文件 4. 安装MySQL等数据库,创建博客所需数据库 5. 安装WordPress等博客平台,按指南配置 6. 可选:启用SSL证书提升安全性 7. 设置备份与监控,确保安全稳定 完成以上步骤,即可在阿里云上成功搭建博客。记得更新维护,有问题参考阿里云文档或联系客服。 ```
183 0
|
6月前
|
Linux 数据安全/隐私保护
基于阿里云服务器使用宝塔面板搭建 Typecho 博客
基于阿里云服务器使用宝塔面板搭建 Typecho 博客
|
7月前
|
弹性计算 关系型数据库 MySQL
带你读《弹性计算技术指导及场景应用》——2. 免费试用ECS,轻松搭建WordPress博客平台使用
带你读《弹性计算技术指导及场景应用》——2. 免费试用ECS,轻松搭建WordPress博客平台使用
231 0
|
7月前
|
弹性计算 监控 关系型数据库
阿里云ECS e实例最佳实践测评:搭建云上博客
阿里云ECS e实例最佳实践测评:搭建云上博客
56176 2
|
安全 JavaScript 前端开发
如何下载博客模板部署在自己的服务器上
如何下载博客模板部署在自己的服务器上
61 0
|
弹性计算 关系型数据库 Apache
基于ECS搭建云上博客
本场景教你如何在 ECS云服务器(CentOS7)的环境下,通过部署 LAMP环境并安装 WordPress 快速搭建个人博客。
|
弹性计算 关系型数据库 Serverless
基于ECS和云数据库RDS MySQL Serverless搭建超可爱的二次元博客搭建心得
使用Ubuntu系统,通过使用Apache2、PHP以及云数据库RDS MySQL Serverless搭建Wordpress博客,并对其进行二次元美化,完成之后分享一下参加此活动的感受。