从零开始搭建个人博客(Centos7+Hexo)

目录

  • 前言
    • 1 什么是Hexo
    • 2 预先准备
      • 2.1 操作环境
      • 2.2 云服务器的购买
      • 2.3 其他国内云服务器厂商
  • 搭建博客
    • 1 云服务器端配置
      • 1.1 在本地使用PuTTY链接云服务器
      • 1.2 安装git、创建git用户
      • 1.3 nginx安装和配置
    • 2 本地配置
    • 3 部署到服务器
      • 3.1 ssh登录
      • 3.2 新建仓库,配置hooks
      • 3.3 配置_config.yml
      • 3.4 常见问题

前言

1 什么是Hexo

Hexo 是一个快速、简洁且高效的博客框架。Hexo 使用 Markdown(或其他渲染引擎)解析文章,在几秒内,即可利用靓丽的主题生成静态网页。

Hexo官方文档

2 预先准备

2.1 操作环境

云服务器Centos7(可选腾讯云、阿里云、华为云等)

Windows PC(本地环境使用Windows)

本地安装PuTTY

本地安装git bush

2.2 云服务器的购买

此处以腾讯云为例

进入腾讯云官网,点击“登录“

从零开始搭建个人博客(Centos7+Hexo)_第1张图片

使用微信扫码登录

从零开始搭建个人博客(Centos7+Hexo)_第2张图片

购买适合自己的服务器,这里推荐腾讯云学生机,10元1月,25岁以下免学生认证,可以以优惠价格续费两次
从零开始搭建个人博客(Centos7+Hexo)_第3张图片

购买时选择Centos7,这是本文使用的服务器操作系统

从零开始搭建个人博客(Centos7+Hexo)_第4张图片

购买完成后,就可以在实例中看到自己的服务器了
从零开始搭建个人博客(Centos7+Hexo)_第5张图片

2.3 其他国内云服务器厂商

除了腾讯云,我也推荐大家使用阿里云和华为云,同样有学生优惠的云服务器。

搭建博客

先明确一下本文搭建的个人博客的运作流程:本地有个 hexo 程序,里面包含了 public 文件夹,sources 文件夹,hexo 将 sources 里的*.md文件渲染为静态的 html 文件放到 public 下,然后我们用git推送到服务器的repository,服务器用git hooks把仓库里的文件同步到网站根目录,而 nginx 的作用就是反向代理。

  • 服务器环境:安装git、nginx、创建git用户
  • 本地搭建Hexo环境:安装NodeJs、hexo-cli,生成本地静态网站
  • 使用git自动化部署发布博客

1 云服务器端配置

1.1 在本地使用PuTTY链接云服务器

找到购买的服务器的公网IP
在这里插入图片描述

使用本地的PuTTY进行链接
从零开始搭建个人博客(Centos7+Hexo)_第6张图片
输入账户(root)和密码(购买服务器时设置的,也可以在腾讯云官网控制台修改),需要注意的是这里输密码的时候是看不到自己输入的,输入完成后回车即可。

在这里插入图片描述

1.2 安装git、创建git用户

yum install git
adduser git
chmod 740 /etc/sudoers
vim /etc/sudoers

找到以下内容

## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL

Linux文件操作中,按 " i " 可以修改内容,按 " : " 再输入 " wq " 保存并退出,输入 " q " 直接退出。Linux文件的其他操作在这里不详细叙述,需要的话可以查阅其他资料。

在它下面添加一行

git ALL=(ALL) ALL

保存并退出,将权限修改回来

chmod 400 /etc/sudoers

1.3 nginx安装和配置

yum install nginx # 安装nginx
systemctl start nginx # 启动nginx
systemctl enable nginx.service # 设置为开机启动

此时用浏览器访问服务器公网ip就可以看到

从零开始搭建个人博客(Centos7+Hexo)_第7张图片

修改nginx的配置文件

vim /etc/nginx/nginx.conf

找到server那块改为

server {
        listen       80 default_server;
        listen       [::]:80 default_server;
        server_name  _; # 改为你的域名,还没有绑定域名的话填公网ip
        root         /home/blog; # 网站的根目录,此处仅为示例,也可根据喜好设置其他目录

        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;

        location / {
        }

        error_page 404 /404.html;
            location = /40x.html {
        }

        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
    }

保存退出

然后执行

mkdir /home/hexo    # 此目录为网站的根目录
chown git:git -R /home/hexo

作为服务器上的网站根目录

2 本地配置

安装hexo-cli(windows用git bash运行命令):

sudo npm install -g hexo-cli

初始化hexo,比如我要在/blog下搭建博客,这个目录可以自由选择替换""

cd ~
hexo init blog

之后继续安装hexo-deployer-githexo-server,一个用于git自动部署,一个用于本地简单的服务器。

cd blog
npm install hexo-deployer-git --save
npm install hero-server

执行

hexo g #或者hexo generate	生成hexo博客
hexo s #或者hexo server 将hexo博客部署在本地4000端口	

这时就可以访问http://localhost:4000看到已经部署到本地4000端口的博客了、

3 部署到服务器

服务器和本地的环境已经配置完成,下一步要实现的就是自动化部署。这使得我们可以不用在服务器上执行操作,只要本地 git 推送上去,服务器就会通过git hooks 自动把内容同步到网站根目录。也就是说,我们在本地写好博客,只需在本地执行简单的命令,就可以将博客部署到服务器上,访问自己的网站,就可以看到自己精美的博客了。

3.1 ssh登录

为了以后每次发布时不用输入密码,我们需要创建证书登录,如果自己电脑里没有公钥(我们的公钥在这里:~/.ssh/id_rsa.pub),则创建公钥:

在本地执行

ssh-keygen -t rsa -C "[email protected]" # 填写自己的邮箱

在这里插入图片描述

创建好公钥之后,找到并用记事本打开,将其中的内容复制

在服务器执行

su git # 切换到git用户
cd ~
mkdir .ssh
vim .ssh/authorized_keys

将复制的公钥粘贴进去然后保存退出,继续执行

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

在本地执行

ssh git@你的服务器ip

验证是否ssh配置成功

从零开始搭建个人博客(Centos7+Hexo)_第8张图片

3.2 新建仓库,配置hooks

接着上一步(git用户~目录),在服务器上创建一个裸仓库

git init --bare blog.git

然后

vim ~/blog.git/hooks/post-receive

写入以下内容保存

#!/bin/sh
git --work-tree=/home/hexo --git-dir=/home/git/blog.git checkout -f

赋予权限

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

回到本地执行

3.3 配置_config.yml

用记事本打开hexo 根目录下的 _config.yml 文件,找到 deploy

deploy:
    type: git
    repo: git@SERVER:/home/git/blog.git     # SERVER改为你的服务器的ip
    branch: master      # 分支

之后,打开cmd,cd到博客目录,就可以部署博客了

hexo clean #清除缓存
hexo g #生成博客
hexo d #部署

3.4 常见问题

如果部署后用浏览器访问网站还是nginx欢迎页面,清除下浏览器缓存即可。

你可能感兴趣的:(从零开始搭建个人博客(Centos7+Hexo))