生成静态文件

写好文章后,执行下面命令生成静态文件

hexo g

会生成public目录,里面就是静态文件,使用FTP软件上传到web服务器上就可以了。

一键部署

这里讲的是部署到自己个人云服务器的方式。
利用git仓库的post-receive hook功能,可以实现一键部署。

首先要在服务器上安装好 nginx和 git。

下面进行一些服务器配置。

- 创建git用户

为了安全可以创建一个普通用户来管理git仓库,这里创建一个用户git

adduser git

- 创建SSH密钥

本地电脑终端里创建ssh密钥,用来git账户的认证。

ssh-keygen -t rsa -C "your_email_address"

一直回车就可以了。
默认是在C盘的用户目录下.ssh目录下创建密钥文件 id_rsa 和 id_rsa.pub

- 复制公钥内容放到服务器

id_rsa.pub是公钥,用记事本等编辑器打开文件,复制内容
进入服务器在 /home/git 目录下创建 .ssh 目录,然后创建 authorized_keys 文件,把公钥内容粘贴进去保存。

- 测试下git用户通过密钥登录

本地终端执行

ssh git@服务器ip地址

如果登录成功那说明密钥配置成功了。以后git推送代码就不需要输入密码了。

- 关闭git用户远程登录,只允许git仓库访问

修改 /etc/passwd 文件,把git用户的登录shell改为git-shell

# 找到git用户一行, id可能不一样
git:x:1001:1001:,,,:/home/git:/bin/bash
# 修改为
git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell

再次测试登录,应该会失败,因为git-shell不允许登录。

- 创建git仓库

在/home/git 目录下创建一个裸仓库

git init --bare blog.git

在blog.git目录下hooks目录内创建 post-receive 文件,内容如下

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

这里work-tree指向的目录就是 nginx网站根目录,根据实际nginx配置修改路径。

- nginx配置

查看nginx配置文件,默认站点根目录一般是 /var/www/html 目录
配置好站点根目录。 访问域名确认下能不能正常访问。

- 目录权限设置

git仓库目录和 nginx网站根目录都要改为 git用户所有,否则会出现权限问题。

chown -R git:git /home/git/blog.git
chown -R git:git /var/www/html

# post-receive文件需要执行权限
chmod +x /home/git/blog.git/hooks/post-receive

- 安装hexo git插件

到hexo项目目录下执行以下命令安装hexo-deployer-git插件

npm install hexo-deployer-git --save

- 配置deploy

打开项目下 _config.yml文件,配置deplay

deploy:
  type: git
  repo: git@xx.xx.xx.xx:/home/git/blog.git
  branch: master

- 一键部署

下面命令是生成静态文件后直接部署,静态文件会推送到个人git仓库,然后git仓库会自动把文件推送到nginx网站根目录。

hexo g -d

访问个人服务器站点查看。
到这里就结束了。