前言

想搭个博客记录学习过程,以后可以回顾一下学过的知识。而且现在不怎么发朋友圈了,也可以加个日记板块玩玩。

虽然有hexo+github的免费方案,但因为手里有之前买着积灰的ECS,还是选择了hexo+ECS。

环境说明:

  • 本地:win10
  • 服务器:阿里云ECS,CentOS7

技术简单说明:

  • hexo:将markdown格式的文件转化成静态资源页面

  • git:将静态资源页面推送到服务器

  • nginx:代理静态资源页面部署博客

      一篇博文产生的具体流程是:我先用notion等markdown编辑器编写.md文件,将其复制到hexo根目录的source文件夹下的_post文件夹,或者直接在hexo根目录下启动git bash,使用hexo new post <title>生成新文件,再去修改新文件内容。内容编辑完成后在git bash中使用hexo g命令生成页面,生成后使用命令hexo s可启动本地服务,通过访问localhost:4000查看页面。查看无误后,使用hexo d命令即可发布到服务器,通过外网访问。
    

本地环境配置

安装Node.js

node.js直接去官网下载安装即可

安装完在cmd用下面两个命令查看,有版本号即安装完成

node -v

npm -v

安装Git

同样直接官网下载安装即可

具体安装过程可看这篇博客详解Git安装过程,一般直接next即可,安装好后,鼠标右键点击出现的菜单中有Git Bash和Git Gui则表示安装成功。

安装Hexo并配置

由于npm使用的源服务器在国外,使用npm直接下载很容易遇到卡顿的问题,所以我们可以将npm换成淘宝的镜像服务器。

在选定的安装目录下(如D:\Blog)右键点击打开Git Bash,输入

npm config set registry https://registry.npm.taobao.org
然后安装cnpm
npm install -g cnpm --registry=https://registry.npm.taobao.org

安装hexo

cnpm install -g hexo-cli

初始化hexo,博客目录会生成相应目录和文件

hexo init

安装hexo-deployer-git 和 hexo-server

npm install hexo-deployer-git --save
npm install hexo-server

输入下面两个命令

hexo g

hexo s

即可通过http://localhost:4000访问本地hexo服务。

配置_config.yml

在刚才生成hexo的目录下,找到_config.yml,打开它,找到deploy 做如下配置

1
2
3
4
deploy:
type: git
repo: git@(域名或公网IP):/home/git/blog.git
branch: master

到这里,本地环境配置完成。

服务器环境配置

Nginx安装和配置

Nginx默认通过80端口访问,所以要确保服务器80端口开启,先配置阿里云服务器安全组规则,添加80端口放行。

80

Nginx安装

用Xshell等ssh工具连接上ECS

安装nginx

yum install -y nginx

开启nginx

systemctl start nginx

使nginx开机自启

systemctl enable nginx

访问ECS公网IP,出现centos页面说明安装成功

welcome

Nginx配置

建立博客的目录并赋予权限

cd /home
mkdir www
cd www
mkdir website

cd ..

chmod -R 777 ./www

在/etc/nginx/目录下创建一个文件夹vhost

cd /etc/nginx
mkdir vhost
cd vhost
vim blog.conf

编辑 blog.conf文件内容

1
2
3
4
5
6
7
server{	
listen 80;
root /home/www/website; //这里填博客目录存放的地址~~
server_name ****; //这里填域名如(www.baidu.com) 如果暂时没有域名就填阿里云的公网ip,以后有了再改回来~~
location /{
}
}

按ESC后:wq保存并退出

打开/etc/nginx/目录下的nginx.conf文件

vi /etc/nginx/nginx.conf

include刚刚新建的conf文件

include

如果以后还想添加新的网站,也可以在vhost目录下新建一个conf配置文件。

安装Git并配置仓库

安装Git

yum install git

配置git用户

adduser git

修改git用户权限

chmod 740 /etc/sudoers
vi /etc/sudoers

添加git ALL=(ALL) ALL

git

保存退出后将sudoers文件权限改回原样

chmod 400 /etc/sudoers

自行设置git用户的密码

sudo passwd git

切换到git用户,然后在~目录下创建.ssh文件夹

su git
cd ~
mkdir .ssh
cd .ssh

本地Git Bash生成ssh公钥密钥文件

ssh-keygen -t rsa -C "13xxxxxx13@qq.com"

此时提示输入目录保存公钥密钥,输入后一路回车

此时在刚刚输入的目录下就会有两个文件,分别是id_rsa(秘钥)和 id_rsa.pub(公钥),Windows默认生成在C:\Users\用户名\.ssh

服务器创建authorized_keys文件并把公钥内容复制进来

vim ~/.ssh/authorized_keys

修改authorized_keys和.ssh的权限

chmod 600 ~/.ssh/authorized_keys
chmod 700 ~/.ssh

尝试用Git Bash连接ECS

ssh -v git@服务器公网ip

出现Welcome to Alibaba Cloud Elastic Compute Service !说明登录成功

回到Xshell(现在Git Bash已经登录上git用户,也可以在Git Bash操作),创建git仓库,并新建一个钩子文件post-receive

cd ~
git init --bare blog.git
vi ~/blog.git/hooks/post-receive

修改钩子文件内容,i进入编辑模式,添加

git --work-tree=/home/www/website --git-dir=/home/git/blog.git checkout -f

然后Esc,:wq保存退出。授予钩子文件权限

chmod +x ~/blog.git/hooks/post-receive

尝试发布

尝试写一篇文章并且发布到服务器上,Git Bash输入

hexo new "Hello My First Blog"
hexo clean && hexo generate --deploy

服务器重新运行nginx

nginx -s reload

一切正常的话现在已经可以通过公网ip访问hexo主页了。

hexo常用指令

hexo new "title" 新建文章(md文件),title为文章的标题

hexo new page "pagename" 新建网页,pagename为网页的名称

hexo clean 清除部署的緩存

hexo n == hexo new 新建一篇文章

hexo g == hexo generate 生成静态页面

hexo s == hexo server 本地部署,可预览网站,默认端口为4000,浏览器输入localhost:4000即可进入网站进行预览,回到git-bash按ctrl+c退出预览(退出后localhost:4000失效)

hexo d == hexo deploy 将网站部署到GitHub

hexo g -d 生成页面并部署到服务器

hexo g -s 生成页面并本地部署进行预览