0%

hexo部署到个人服务器

摘要:将 hexo 部署到个人服务器,并使用 git 管理静态文件部署。

一、本地 Hexo 服务安装

(一)查看 node 环境

查看 node 安装情况
node -v
npm -v

(二)安装 hexo-cli

文档详见官方文档
node 环境测试成功,即可使用 npm 安装 Hexo。
npm install -g hexo-cli
安装 Hexo 完成后,请执行下列命令,Hexo 将会在指定文件夹中新建所需要的文件。

1
2
3
$ hexo init <folder>
$ cd <folder>
$ npm install

新建完成后,指定文件夹的目录如下:

1
2
3
4
5
6
7
8
.
├── _config.yml
├── package.json
├── scaffolds
├── source
| ├── _drafts
| └── _posts
└── themes

网站的配置信息在_config.yml,可以在此配置大部分的参数,如设置 theme 属性。

  • 下载 theme 主题-示例:
    git clone https://github.com/iissnan/hexo-theme-next themes/next

(三)常用 hexo 命令

  • 写文章:hexo new "title"
  • 渲染:hexo g
  • 本地验证:hexo server 访问 http://localhost:4000/
  • 部署到远程服务器:hexo d (需要先在_config.yml文件当中设置)

二、Git 软件安装

git 安装:官网下载

在 macOS 上安装

在 Mac 上安装 Git 有多种方式。 最简单的方法是安装 Xcode Command Line Tools。 Mavericks (10.9) 或更高版本的系统中,在 Terminal 里尝试首次运行 git 命令即可。

$ git --version
如果没有安装过命令行开发者工具,将会提示你安装。

如果你想安装更新的版本,可以使用二进制安装程序。 官方维护的 macOS Git 安装程序可以在 Git 官方网站下载

在 Windows 上安装

在 Windows 上安装 Git 也有几种安装方法。 官方版本可以在 Git 官方网站 要注意这是一个名为 Git for Windows 的项目(也叫做 msysGit),和 Git 是分别独立的项目;更多信息请访问 http://msysgit.github.io/。

在服务器安装

Ubuntu 系统:sudo apt-get install git

其他 Linux 上安装 Git:
首先,你可以试着输入git,看看系统有没有安装 Git:

1
2
3
$ git
The program 'git' is currently not installed. You can install it by typing:
sudo apt-get install git

像上面的命令,有很多 Linux 会友好地告诉你 Git 没有安装,还会告诉你如何安装 Git。

如果你碰巧用 Debian 或 Ubuntu Linux,通过一条sudo apt-get install git就可以直接完成 Git 的安装,非常简单。

如果是其他 Linux 版本,可以直接通过源码安装。先从 Git 官网下载源码,然后解压,依次输入:./configmakesudo make install这几个命令安装就好了。

三、服务器 Git 配置

创建 Git 用户

useradd git //添加一个用户 git
passwd git // 设置 git 用户密码

创建网站文件夹

1
2
3
sudo mkdir /home/git/
cd /home/git/
sudo mkdir -p projects/blog // 存放网站文件真实目录

修改文件夹所有者和读写权限:

1
2
chown -R git:git /home/git/projects/blog
chmod -R 755 /home/git/projects/blog

创建 Git 文件夹并设置 hook 函数

1
2
3
4
5
6
cd /home/git
sudo mkdir repos && cd repos
sudo git init --bare blog.git // 创建一个裸露的仓库

cd blog.git/hooks
sudo nano post-receive // 编辑函数文件

post-receive文件内容如下:

1
2
#!/bin/sh
git --work-tree=/home/git/projects/blog --git-dir=/home/git/repos/blog.git checkout -f

修改 hook 钩子函数权限:

1
2
chmod +x post-receive
chown -R git:git /home/git/repos/blog.git

本地测试 git 仓库是否可用

(1)服务器修改过登录端口的,使用下面的命令:
git clone ssh://git@server_ip:port/home/git/repos/blog.git

(2)服务器使用默认 22 端口的,使用下面的命令:
git clone git@server_ip:/home/git/repos/blog.git

复制代码如果能把空仓库拉下来,就说明 git 仓库搭建成功了

建立 ssh 信任关系,免密码远程登录

本地 SSH 认证信息在/Users/<name>/.ssh文件夹中,名称为id_rsa.pub

1
2
cd /Users/zhangminglei/.ssh
cat id_rsa.pub

将需要登录的用户的公钥id_rsa.pub信息粘贴到服务器配置文件:

1
sudo nano /home/git/.ssh/authorized_keys //一行一个

测试是否能直接登录:
ssh git@server_ip //
注:此时的 ssh 登录 git 用户不需要密码,否则就有错

禁用 shell 登录:
出于安全考虑,创建的 git 用户不允许登录 shell,这可以通过编辑服务器当中/etc/passwd文件完成。

找到类似下面的一行:
git:x:1000:1000:,,,:/home/git:/bin/bash
改为:
git:x:1000:1000:,,,:/home/git:/usr/bin/git-shell

这样,git 用户可以正常通过 ssh 使用 git,但无法登录 shell,因为我们为 git 用户指定的 git-shell 每次一登录就自动退出。

四、配置 nginx 服务

在 nginx 配置文件夹新增一个server:

1
2
cd /etc/nginx/conf.d //切换到配置文件夹
sudo nano hexo.conf // 新增一个server

hexo.conf 文件内容示例:

1
2
3
4
5
6
7
8
9
10
server {
listen 80;
server_name a.b.cn; # 修改域名
root /home/git/projects/blog; # 修改为真实网站目录

location / {
index index.html;

}
}

检察配置文件并重载 nginx 配置文件:

1
2
sudo nginx -t
sudo nginx -s reload

无访问权限时的处理方法:

1
2
sudo nano /etc/nginx/nginx.conf
// 将 user 改为 root ,重载nginx 配置

五、更新网站

配置_config.yml 文件:

1
2
3
4
deploy:
type: git
repo: ssh://git@server_ip:port/home/git/repos/blog.git
branch: master

渲染文件并部署:

1
hexo clean && hexo deploy