centos8 搭建hexo

原文地址:centos8 搭建hexo

本地操作

安装 Git 和 Node.js

本地需要安装GitNode.js,安装过程略。

安装完git后还要配置环境变量:

右键我的电脑 –> 属性,然后点击高级系统设置 –> 环境变量 –> 选择用户变量或系统变量中的Path,点击编辑;找到Git安装目录,添加以下地址:

```

D:\Program Files\Git\bin

D:\Program Files\Git\mingw64\libexec\git-core

D:\Program Files\Git\mingw64\bin

```

配置SSH 公钥

Windows 上安装Git for Windows之后在开始菜单里打开 Git Bash 输入:

```

git config --global user.name "你的用户名"

git config --global user.email "你的电子邮箱"

```

```

cd ~

mkdir .ssh

cd .ssh

ssh-keygen -t rsa

```

在系统当前用户文件夹下生成了私钥id_rsa和公钥id_rsa.pub。

初始化 Hexo

在电脑任意目录新建一个文件夹hexo,进入文件夹,在空白处点击右键选择 Git Bash,输入:

```

npm install -g hexo-cli

hexo init

npm install

hexo d -fg

hexo serve

```

这样便在本地初始化了 Hexo 文件夹,然后输入:

hexo new post "第一篇文章"

即可新建一篇文章,用文本编辑器打开hexo/source/_post/第一篇文章.md可以快速开始写作。其余使用方法和配置按照 Hexo 官网操作即可。推荐编辑器hexo-editor

2020/4/27更新: hexo-editor速度太慢,改用Typora

修改 deploy 参数

```

deploy:

type: git

repo: git@你的ip:hexo.git

branch: master

```

VPS操作

首先,在 VPS 上安装 Git 和 nginx。

```

yum update -y

yum install git-core nginx -y

```

Nginx 安装完成后需要手动启动,启动Nginx并设置开机自启:

```

systemctl start nginx

systemctl enable nginx

```

如果开启了防火墙,记得添加 HTTP 和 HTTPS 端口到防火墙允许列表。

```

firewall-cmd --permanent --zone=public --add-service=http

firewall-cmd --permanent --zone=public --add-service=https

firewall-cmd --reload

systemctl restart firewalld.service

```

配置完成后,访问使用浏览器服务器 ip ,如果能看到以下界面,表示运行成功。

配置用户

然后新增一个名为 git 的用户,过程中需要设置登录密码,输入两次密码即可。

```

adduser git

passwd git

```

给用户git赋予无需密码操作的权限(否则到后面 Hexo 部署的时候会提示无权限)

```

chmod 740 /etc/sudoers

vi /etc/sudoers

```

在图示位置root ALL=(ALL:ALL) ALL的下方添加

```

git ALL=(ALL:ALL) ALL

```

然后保存。然后更改读写权限。

```

chmod 440 /etc/sudoers

```

上传 SSH 公钥

接下来要把本地的 ssh 公钥上传到 VPS 。执行

```

su git

cd ~

mkdir .ssh && cd .ssh

touch authorized_keys

vi authorized_keys

```

现在要打开本地的Git Bash,输入vi ~/.ssh/id_rsa.pub,把里面的内容复制下来粘贴到上面打开的文件里。

接着把ssh目录设置为只有属主有读、写、执行权限。代码如下:

```

chmod 600 ~/.ssh/authorized_keys

chmod 700 ~/.ssh

```

然后建立放部署的网页的 Git 库。

```

cd ~

mkdir hexo.git && cd hexo.git

git init --bare

```

测试一下,如果在 Git Bash 中输入ssh git@VPS的IP地址能够远程登录的话,则表示设置成功了。如果你的VPS端口不是22。参考:上传SSH公钥

用户授权

```

su

```

```

mkdir -p /var/www/hexo

chown git:git -R /var/www/hexo

```

配置钩子

现在就要向 Git Hooks 操作,配置好钩子:

```

su git

cd /home/git/hexo.git/hooks

vi post-receive

```

输入内容并保存:(里面的路径看着换吧,上面的命令没改的话也不用换)

```

#!/bin/bash

GIT_REPO=/home/git/hexo.git

TMP_GIT_CLONE=/tmp/hexo

PUBLIC_WWW=/var/www/hexo

rm -rf ${TMP_GIT_CLONE}

git clone $GIT_REPO $TMP_GIT_CLONE

rm -rf ${PUBLIC_WWW}/*

cp -rf ${TMP_GIT_CLONE}/* ${PUBLIC_WWW}

```

赋予可执行权限:

```

chmod +x post-receive

```

配置 nginx

然后是配置 nginx。执行

```

su

```

```

vi /etc/nginx/conf.d/hexo.conf

```

```

server {

  listen  80 ;

  listen [::]:80;

  root /var/www/hexo;

  server_name bore.vip www.bore.vip;

  access_log  /var/log/nginx/hexo_access.log;

  error_log  /var/log/nginx/hexo_error.log;

  error_page 404 =  /404.html;

  location ~* ^.+\.(ico|gif|jpg|jpeg|png)$ {

    root /var/www/hexo;

    access_log  off;

    expires      1d;

  }

  location ~* ^.+\.(css|js|txt|xml|swf|wav)$ {

    root /var/www/hexo;

    access_log  off;

    expires      10m;

  }

  location / {

    root /var/www/hexo;

    if (-f $request_filename) {

    rewrite ^/(.*)$  /$1 break;

    }

  }

  location /nginx_status {

    stub_status on;

    access_log off;

}

}

```

因为放中文进去会乱码所以就不在里面注释了。代码里面配置了默认的根目录,绑定了域名,并且自定义了 404 页面的路径。

最后就重启 nginx 服务器:

```

systemctl restart nginx

```

如果上传网页后,Nginx 出现 403 Forbidden,执行:

```

vi /etc/selinux/config

```

将SELINUX=enforcing 修改为 SELINUX=disabled 状态。

```

SELINUX=disabled

```

重启生效,reboot。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。