玩机教程 十一月 14, 2019

Hexo部署到阿里云等云服务器

文章字数 8.1k 阅读约需 7 mins. 阅读次数 1000000

参考链接:

Hexo 从 GitHub 到阿里云

在个人服务器上搭建git服务,创建属于自己的私人仓库

Hexo部署在阿里云服务器上

一、背景

如何将hexo博客从GitHub、码云等平台部署到阿里云、腾讯云等个人云服务其上呢?首先你得有一台个人服务器,相信想要将Hexo部署到个人云服务器上的小伙伴早已经有了个人云服务器了,如果还没有的小伙伴,可以自行购买哟。

这份教程除了简单的将生成的静态博客部署到了自己的云服务器之外,还将整个Hexo配置生成文件放在了服务器上,也就是说,除了本地的Hexo配置生成文件,服务器上也会保留一份Hexo配置生成文件,这样的话就不怕换电脑,可以在多台电脑上进行博客的修改

二、前提

  1. 云服务器,这个肯定是必不可少的,本教程使用的环境是阿里云的Ubuntu18.04
  2. 域名,域名可以没有,但是都用云服务器,有域名的话肯定是美美哒,最好是备案过的域名

三、本地环境

1.安装Node.js

Node.js官网直接下载安装Node.js

2. 安装Git

Git官网直接下载安装Git

Windows用户右击桌面后选择 Git Bash Here
然后配置好全局git的用户名和邮箱:

git config --global user.name "your name"

git config --global user.email "your email"

然后生成ssh秘钥:

ssh-keygen

输入上方的命令后按四下回车键就在本地电脑上生成了ssh秘钥,Windows用户可以在C:\Users\用户名\.ssh目录下看到id_rsaid_rsa.pub这两个文件

3. 搭建Hexo,网上有一堆教程,具体搭建Hexo的方法自行百度谷歌,或者Hexo官网

四、服务器环境

进行所有操作之前可以更新一下软件包:

apt-get update

1. 安装Nginx

要跑HTML静态文件,最起码需要安装一个Web服务器吧,这里用Nginx;

安装命令:

sudo apt install nginx

说明:

  • 所有配置文件位置都在/etc/nginx
  • 虚拟主机配置/etc/nginx/sites-available
  • 程序文件/usr/sbin/nginx
  • 日志文件/var/log/nginx
  • nginx启动脚本/etc/init.d/
  • 默认的虚拟主机的目录/var/www/html

2. 安装Git

安装命令:

apt-get install git

并配置好全局git的用户名和邮箱:

git config --global user.name "your name"

git config --global user.email "your email"

3. 新建git用户

需要为服务器新建一个名为 git 的用户,专门用来进行数据的拉取提交等操作

命令:

sudo adduser git

sudo chmod 755 /home/git

4. 添加ssh信任

命令:

su git

cd ~

mkdir .ssh && chmod 700 .ssh

touch .ssh/authorized_keys && chmod 600 .ssh/authorized_keys

至此,在/home/git/.ssh目录下可以看到有authorized_keys文件,然后将本地(windows)中的秘钥加入到这个文件中

打开C:\Users\用户名\.ssh\id_rsa.pub,将文件中的内容完完全全的复制到服务器上的authorized_keys文件中

5. 创建静态文件仓库并配置

这里我们需要创建两个仓库,一个用来存放Hexo的配置文件,另一个用来存放静态的博客文件;在网上看到一种方式是:建一个仓库,然后再创建分支的方法用来分开存放静态文件与配置文件,但是现阶段对Git的使用还不熟练,后期可能会调整,所以现在就采用创建两个仓库的方式来分开存放

登录git用户:

su git

~目录下创建仓库:

git init --bare blog.git #存博客的仓库

仓库创建之后再配置blog.git,实现自动化部署,即每次在本地执行完hexo d命令之后,服务器会自动把部署目录更新到博客的最新生成状态

blog.git/hooks目录下新建并编辑post-receive文件
命令:

cd /home/git/blog.git/hooks

sudo touch post-receive

sudo chmod +x post-receive

sudo vim post-receive

post-receive文件中写入如下内容:

#!/bin/bash
git --work-tree=/var/www/blog --git-dir=/home/git/blog.git checkout -f

注意:

/var/www/blog中的/var/www是网站的根目录,/blog就是静态博客文件,所以/var/www/blog要换成你自己的部署目录

上面那句 git 命令可以在我们每次执行完hexo d之后,把部署目录更新到博客的最新生成状态,这样便可以完成达到自动部署的目的了

接下来需要到本地的博客中修改配置项,我的博客文件名是blog

打开E:\personal_dir\hexo\_config.yml,找到deploy,然后修改成:

deploy:
- type: git
  repo: git@xxx:/home/git/blog.git
  branch: master

说明:

repo后面 xxx 修改成你的服务器的ip,或者服务器绑定的域名

由于权限问题,repo后面的能用root用户就用root用户,即:root@xxx:/home/git/blog.git

post-receive文件中也可以写入如下内容:

#!/bin/bash
rm -rf /var/www/blog/*
rm -rf /var/www/blog/.git
git clone /home/git/blog.git/ /var/www/blog/

由于权限问题,不知道如何解决,暂时放这里先简单记录一下

6. 创建配置文件仓库并配置

登录git用户:

su git

~目录下创建仓库:

cd ~ #存配置的仓库

git init --bare hexo.git #存配置的仓库

去本地博客根目录下连接远程仓库,右击空白选择Git Bash,然后输入一下命令:

git init #如果本地项目是新建的项目,需要初始化仓库,即创建本地仓库,需要执行这条命令;否则无需执行,直接执行下一条命令

git remote add origin git@xxx:/home/git/hexo.git

然后输入下列命令就可以查看远程连接信息:

git remote -v

说明:

origin可以自己设定一个名字,如果不明白作用可以就用 origin

git@后面 xxx 修改成你的服务器的ip,或者服务器绑定的域名

五、部署、备份迁移等

至此,就可以实现博客备份、自动化部署、博客和配置分开存储、多台电脑共同操作等

1. 部署

每次新增或修改博客后执行两步操作:

第一步:上传博客

执行 hexo d 可以将博客上传到云服务器,上传后会自动部署

第二步:上传博客配置

执行 git push origin master 可以将刚刚新增或修改的记录同步到云服务器上

2. 迁移

前面一系列搭建好后,迁移就比较方便了,首先,新电脑上需要先安装Node.jsGit,然后执行以下命令安装Hexo

npm install -g hexo-cli

装好git之后可以直接使用命令克隆博客配置:

git clone git@xxx:/home/git/hexo.git

克隆后需要在配置根目录下执行:npm install ,安装所有依赖,然后就是测试博客能否启动了,如果报错,可以看看是否是缺少了哪个依赖,新克隆的博客可能会缺少本地测试需要用的 hexo server,执行 npm install hexo-server 进行安装


上一篇:
下一篇:
0%