将Hexo部署到云服务器
前言
看到群里好多人问如何将Hexo部署到云服务器。按我的思想,如果有服务器谁还用Hexo?但居然还真有人。趁着上个月白嫖的腾讯云的机器还没过期,赶紧重装个系统,来咕一篇Hexo如何部署到云服务器。
开始操作
这篇文章并非从安装开始的教程。此教程建立在你已经能通过
http://localhost:4000/
访问到你的博客的基础上进行的教程。因此并不会涉及到Node的安装与配置,Hexo的下载等。如果还没完成可以自行百度或者看我以前的一篇水文:从零开始搭建Hexo博客
一、通过Git生成SSH密钥
1 | // 假如没有设置git的全局信息需要先设置 设置过了可以忽略 |
然后Windows
的同学生成的密钥在C:\Users\yourname\.ssh
路径下,但是Linux
或者MAC
的小伙伴我就不知道了。毕竟没用这两个操作系统搞过。
二、配置GIT服务器
连接服务器可以使用Xshell或者FinalShell等工具。这里我已Xshell为例,另一款工具同理。
登录服务器
由于是刚刚重装的系统,因此登录很简单。看到一如既往的黑底白字。
检查是否存在git,如果没有则需要安装
通过
git --version
命令查看是否存在git命令,我这里显示not found。则代表没有git,需要安装。安装Git
1
2yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-devel -y
yum install -y git安装很快就完成了!
创建用户并配置其仓库
1
2
3
4
5
6
7
8
9
10
11
12
13
14// 创建用户
useradd git
// 设置密码
passwd git
// 切换用户
su git
// 进入git用户的家目录
cd /home/git/
// 项目存在的真实目录(当然你可以创建在其他地方)
mkdir -p projects/blog
// 创建文件夹
mkdir repos && cd repos
// 创建一个裸露的仓库
git init --bare blog.git1
2
3
4
5
6
7cd blog.git/hooks
// 创建 hook 钩子函数,输入了内容如下
vi post-receive
//-------------分割线不需要复制-------------
git --work-tree=/home/git/projects/blog --git-dir=/home/git/repos/blog.git checkout -f
//-------------分割线不需要复制-------------按住ESC,然后输出
:wq
可以保存退出哦!1
2
3
4
5
6// 为刚才的文件添加可执行的权限
chmod +x post-receive
// 退出到 root 登录
exit
// 添加权限
chown -R git:git /home/git/repos/blog.git测试能否将其
clone
在你的电脑上随便找个位置新建一个文件夹,并且将
bash
或者其他命令行工具切换到这里。开始执行以下命令(注意替换成你的服务器ip),测试能否将仓库clone下来。1
git clone git@server_ip:/home/git/repos/blog.git
建立
SSH
信任关系(免密登录)在你自己的电脑上输入以下命令(注意替换成你的文件路径)
1
2
3ssh-copy-id -i C:/Users/yourname/.ssh/id_rsa.pub git@server_ip
// 测试能否登录
ssh git@server_ip翻车了!?
好吧,我居然没有这个
ssh-copy-id
命令,不过无妨,既然不能使用命令,那么我就手动。如果你上面的两个命令没有问题,那么可以跳过我手动建立信任关系的过程。手动设置:
依次执行以下命令
1
2
3
4
5
6
7
8
9
10
11
12
13
14// 切换到git用户
su git
//进入家目录,如果没有.ssh目录,那么需要创建。如果存在直接进入即可
cd ~
//创建.ssh目录
mkdir .ssh
// 赋予权限
chmod 700 .ssh/
// 进入.ssh目录
cd .ssh
// 编辑一个名为authorized_keys的文件,并写入公钥(id_rsa.pub)内容
vi authorized_keys
// 添加完成后赋予权限
chmod 600 authorized_keys图片中的命令如果与给出代码命令有出入,请以给出代码为准,图片仅作参考。
在自己电脑测试能否连接成功。
1
ssh git@server_ip
此时登录就需要密码了。
完成以上步骤后通过
ssh git@server_ip
连接服务器是不需要密码的。如果还是需要密码,请检查你是否遗漏的哪一步没有做为了安全,禁用 git 用户的 shell 登录权限。从而只能用 git clone,git push 等登录
在服务器端输入以下命令:
1
2
3
4
5
6
7
8// 如果不是root用户请切换至root用户
su root
// 查看 git-shell 是否在登录方式里面
cat /etc/shells
// 查看是否安装
which git-shell
vi /etc/shells
// 添加上2步显示出来的路劲,通常在 /usr/bin/git-shell修改
/etc/passwd
中的权限1
2// 修改passwd文件
vi /etc/passwd1
2
3
4
5// 将原来的
git:x:1000:1000::/home/git:/bin/bash
// 修改为
git:x:1000:1000::/home/git:/bin/git-shell
三、配置NGINX服务器
这一步主要是用来开启80端口的服务器。你不会以为要用hexo s
吧?
安装NGINX服务器
1
2
3
4// 安装依赖
sudo yum install -y yum-utils
// 安装nginx服务
sudo yum install -y nginx检查是否安装成功。
看到输出了版本号及代表成功了。
配置NGINX服务器
1
2
3
4
5
6
7
8
9
10
11
12// 直接运行nginx
nginx
// 先停止nginx
nginx -s stop
// 切换到nginx的配置文件目录
cd /etc/nginx
// 编辑文件
vi nginx.conf
//
同时,不然nginx无法访问将 user 改为 root 如下图
修改 root 解析路径(
/home/git/projects/blog/
),如下图1
nginx -s reload
此时在浏览器直接访问你的服务器ip地址即可看到一个提示——404页面
四、配置Hexo发布
配置博客根目录下的
_config.yml
文件1
2
3
4deploy:
type: git #用户名
repo: git@server_ip:/home/git/repos/blog.git #Git仓库
branch: master #分支在
package.json
中添加 npm 脚本1
2
3
4"scripts": {
"deploy": "hexo clean && hexo g -d",
"start": "hexo clean && hexo g && hexo s"
},这下在本地调试就用
npm start
,调试好了就上传到服务器,然后就可以通过服务器的IP访问了!
绑定域名
直接修改NGINX的文件即可。然后域名解析用A记录解析到服务器即可。
配置HTTPS(SSL)
请自行参考百度!