0%

hexo博客部署到服务器上

搭建博客

如果已经满足部署到github上的条件请跳过

安装hexo

  1. git
  2. nodejs
  3. hexo

这三个是必须的,安装其他教程的安装配置好环境变量之后,输入hexo -v,我的版本如下

INFO Validating config
hexo: 5.2.0
hexo-cli: 3.1.0
os: Windows_NT 10.0.18363 win32 x64
node: 12.16.1
v8: 7.8.279.23-node.31
uv: 1.34.0
zlib: 1.2.11
brotli: 1.0.7
ares: 1.15.0
modules: 72
nghttp2: 1.40.0
napi: 5
llhttp: 2.0.4
http_parser: 2.9.3
openssl: 1.1.1d
cldr: 35.1
icu: 64.2
tz: 2019c
unicode: 12.1

安装好git之后配置好ssh密钥

1
2
git config --global user.name "name"
git config --global user.email "email@email.email"

然后根据你邮箱生成密钥

1
ssh-keygen -t rsa -C "email@email.email"

创建博客

创建一个空文件夹,在此处运行gitbash,

1
hexo init

success Saved lockfile.
Done in 6.88s.
INFO Start blogging with Hexo!

说明下载成功

创建git仓库备份

非必须,后悔药,懂得都懂

新建一个.gitignore文件,把/public写进去

本地运行

1
hexo s

INFO Validating config
INFO Start processing
INFO Hexo is running at http://localhost:4000 . Press Ctrl+C to stop.

打开浏览器查看吧

image-20201007105337721

打开的页面就是使用文档,我不再赘述了

服务器

本地: Windows 10

服务器: CentOS 7

安装git

1
# yum insatll -y git

和$是linux下的命令提示符,前者表示root,后者表示一般用户

为了安全,我们新建一个用户叫git

1
2
3
# useradd git # 添加用户名为git
# passwd git # 设置用户git的密码
# su git # 切换到git

请不要直接复制粘贴进去,因为有前缀,自己手打一遍可以加深印象

建立Git仓库

1
2
3
4
$ cd ~ # 到git用户的个人文件夹,默认为/home/git/
$ mkdir -p projects/blog # 部署的静态资源所在位置
$ mkdir repos && cp repos # 创建仓库文件夹并到该文件下
$ git init --bare blog.git # 创建一个裸露的仓库

然后利用钩子函数自动部署

1
2
$ cd blog.git/hoos
$ vim post-receive # 请自行学习vi/vim

添加以下内容

!/bin/sh

git —work-tree=/home/git/projects/blog —git-dir=/home/git/repos/blog.git checkout -f

配置权限

1
2
3
$ chmod +x post-receive #可执行权限
$ exit # 退出git用户
# chown -R git:git /home/git/repos/blog.git # 分配用户组及用户

测试

在本地

1
git clone git@<your_ip_address>:/home/git/repos/blog.git

换成你的ip即可

若出现

Cloning into ‘blog’…
git@47.100.90.111’s password:
warning: You appear to have cloned an empty repository.

配置完成。

然后建立ssh公钥链接

本地使用Gitbash ,因为Windows的用户文件夹不是~,而是%HOMEPATH%,夺麻烦呀,用gitbash可以帮你减少输入量。

1
2
ssh-copy-id -i ~/.ssh/id_rsa.pub git@<your_ip_address> # 将本机的公钥复制到服务器中,需要输入一次密码(git用户的密码)
ssh git@<your_ip_address> // 测试无需密码能否登录

安全

禁用git用户的shell登录权限,只能使用git clone和git push等命令

1
2
# which git-shell
# vim /etc/shells # 把第二步显示的东西添加进来

然后

1
# vi /etc/passwd
1
2
- git:x:1000:1000::/home/git:/bin/bash
+ git:x:1000:1000:,,,:/home/git:/usr/bin/git-shell

中间的数字不是确定的

安装NGINX

1
2
# yum install nginx # 安装
# nginx # 运行

配置

1
# vim /etc/nginx/nginx.conf

修改用户避免出现权限问题

1
2
3
4
5
6
7
8
9
10
11
12
13
- user nginx;
+ user root;
# ...
http {
# ...
server {
# ...
- root /usr/share/nginx/html/;
+ root /home/git/projects/blog;
# ...
}
# ...
}

然后重启nginx

1
# nginx -s reload

本地修改博客配置

1
2
3
4
deploy:
type: git
repo: git@<your_ip_address>:/home/git/repos/blog.git
branch: master
1
2
添加部署插件,若之前安装过可跳过
npm install hexo-deployer-git --save

配置https

首先需要配置域名和一份证书,可以使用 Let’s Encrypt 的免费证书或在阿里云等服务商处代为申请。

推荐使用Certbot进行一键HTTPS配置。

使用nexT主题并优化

以下为我的个人配置

我的版本是7.8.0

<不想弄了>

-----------看到底线啦 感谢您的阅读-------------