CentOS7+Nginx+本地git+hexo建站过程

CentOS7+Nginx+本地 git+hexo 建站过程

腾讯云服务如下:

域名是 .com.cn 30 块钱一个月,服务器是腾讯云最低的 1 核 1G 内存 50G0.14 块钱一个小时。

感觉还是挺赚的

开机先更新一下

1
yum -y update

Nginx1.12.2 配置

1
2
3
4
yum install nginx
//启动Nginx
systemctl start nginx
systemctl enable nginx

生成一个博客目录并且作为主目录

1
mkdir /usr/share/nginx/html/blog

配置文件是在/etc/nginx/下面的 nginx.conf

将 root 目录/usr/share/nginx/html/ 改成 /usr/share/nginx/html/blog/

服务器 git 配置

1
yum install git

如果提示 Package 已经存在说明刚才更新的时候已经下载了安装包。找得到就直接装,找不到就

1
2
yum remove git
yum install git

重新下载安装一次就好了。

由于整体博客思路是通过本地和服务器 git 链接上传来实现博客。所以需要在服务器端配置 Git

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
//添加一个git用户
adduser git

chmod 740 /etc/sudoers
vim /etc/sudoers

找到以下内容
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
在下面添加一行
git ALL=(ALL) ALL

:wq保存退出后修改回权限
chmod 400 /etc/sudoers

给git账户设置密码
sudo passwd git

切换至git用户,创建 ~/.ssh 文件夹和 ~/.ssh/authorized_keys 文件,并赋予相应的权限
su git
mkdir ~/.ssh
vim ~/.ssh/authorized_keys

// 然后将电脑中执行 cat ~/.ssh/id_rsa.pub ,将公钥复制粘贴到authorized_keys,详情见下面git配置
设置好公钥后设置权限
chmod 600 ~/.ssh/authorized_keys
chmod 700 ~/.ssh

公钥设置好后可以在本地Gitbash通过
ssh -v [email protected]服务器IP
测试是否能连接上服务器

在服务器上光有git帐号是不顶用的
// 使用sudo指令,需要输入git用户的密码
sudo chown -R git:git /usr/share/nginx/html/blog
将nginx的主目录blog赋予git帐号权限

切换到git账户,初始化一个git裸库
su git
cd ~
git init --bare blog.git

新建一个钩子来获取git上传并保存到blog目录
vim ~/blog.git/hooks/post-receive

内容如下:
#!/bin/sh
git --work-tree=/usr/share/nginx/html/blog --git-dir=/home/git/blog.git checkout -f

保存退出后赋予该钩子可执行权限
chmod +x ~/blog.git/hooks/post-receive

这里服务器端就基本配置完成了。

1
2
3
4
5
6
回到root用户
su root
password:

到nginx根目录下面等待文件上传
cd /usr/share/nginx/html/blog

本地 Git+hexo+Node.js 安装配置

本机是 Windows 安装

Git 和 Node.js 都可以直接在官网下载安装

Git 下载地址

Node.js 下载地址

都装好了之后在你的本地博客打开 git bash

1
2
3
4
5
6
$ npm install -g hexo-cli
//hexo的扩展插件
$ npm install hexo-deployer-git --save
$ npm install hexo-server
//初始化hexo
$ hexo init blog

就可以安装上 hexo 并且在本地初始化 hexo 目录

初始化完毕后打开 Git bash 进行配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 将此处的"yourname"替换成自己的用户名(一定要用真实有效的用户名和邮箱,没有可以从github申请一个)
git config --global user.name "yourname"

# 将此处的"youremail"替换成自己的邮箱
git config --global user.email "youremail"

# 将此处的"youremail"替换成自己的邮箱生成ssh密钥
ssh-keygen -t rsa -C "youremail"

cat ~/.ssh/id_rsa.pub
得到的密钥复制到服务器authorzied_keys中保存退出

在本地blog文件夹查看配置文件_config.yml设置上传目录
deploy:
type: git
repo: [email protected]:/home/git/blog.git #此处的SERVER需改为你自己服务器的ip
branch: master #这里填写分支

这里我们的服务器基本已经配置完毕了。先来链接一下服务器看能不能连到

打开 git bash

1
ssh -v [email protected]服务器IP

如果能看到自己的 blog.git 目录则说明 git 链接没有问题

在 blog 目录下打开 git bash

1
2
3
4
5
6
7
可以先在本地查看一下效果,具体的hexo生成文章啊什么的命令可以参考hexo文档(竟然还有B站视频)
hexo server
然后在浏览器查看
http://localhost:4000
如果没有什么问题了。就可以
hexo clean && hexo d -g
清楚缓存,生成静态文件然后上传

上传完成后在服务器端根目录查看是否上传成功。如果没有成功,可以根据 git 上传时的提示分析错误本人错误如下:

  • 本地 git 配置时没有使用有效的 github 帐号(github 帐号是必须的,不然人家凭啥给你提供这个版本服务)。
  • 钩子配置时没有注意添加权限。
  • Nginx 根目录没有修改,git 账户没有根目录 blog 的权限。
  • 如果还有其他问题可以给我发邮箱讨论解决 Pisho’s 邮箱