近期在阿里云买了个学生服务器,就想着把github上的博客迁移过来。整个过程陆陆续续花了一个多星期的时间,也踩了不少坑,在此做个记录备忘。
## 准备工作
开启端口,轻量级服务器不用手动开,默认带了三个。ECS服务器需要自己配置。
开启端口如下:

## 1、安装git
使用yum安装即可
```git
yum install git
```
完成后输入git version,若显示git版本信息即安装成功。
## 2、安装Node.js
1. 去官网下载[https://nodejs.org/en/download/](https://nodejs.org/en/download/ "node官网"),博主是用的最新版10.15.3,请务必使用7以上的版本,不然使用hexo时会报错。
2. 解压缩改名放到/usr/local
```git
tar xvJf node-v10.15.3-linux-x64.tar.xz
```
将解压的 Node.js 目录移动到 /usr/local 目录下
```git
mv node-v10.15.3-linux-x64 /usr/local/node-v10
```
3. 软链接到 /bin 目录
```git
ln -s /usr/local/node-v10/bin/node /bin/node
ln -s /usr/local/node-v10/bin/npm /bin/npm
```
4. 配置环境变量
将 /usr/local/node-v6/bin 目录添加到 $PATH 环境变量中可以方便地使用通过 npm 全局安装的第三方工具
```git
echo 'export PATH=/usr/local/node-v10/bin:$PATH' >> /etc/profile
```
使环境变量生效
```git
source /etc/profile
```
5. 测试是否成功
输入`node -v`和`npm -v`,若显示版本号,即安装成功。

## 3、安装Hexo
1. 安装Hexo
执行以下命令即安装Hexo:
```git
npm install -g hexo-cli
```
安装完成后输入`hexo version`,若显示版本信息则安装成功。
2. 具体hexo教程请自行百度,百度上有详细介绍(后续再补)。
## 4、安装Nginx
1. 使用 yum 来安装 Nginx
```git
yum install nginx
```
2. 启动Nginx
```git
systemctl start nginx
```
此时访问`http//(你的ip地址)`,看到nginx测试界面则表示启动成功。
3. 继续输入以下命令使Nginx开机自动启动:
```git
systemctl enable nginx
```
4. 配置静态服务器访问路径
Nginx 需要配置静态资源的路径信息才能通过 url 正确访问到服务器上的静态资源。
即是要将HEXO生成的静态资源的路径放置到Nginx的访问路径
打开 Nginx 的默认配置文件 /etc/nginx/nginx.conf ,将默认的 root /usr/share/nginx/html 修改为: root /…/<folder>/public (此处可能在此配置文件的42行,<folder>即为hexo初始化的文件夹)
修改完成后保存,输入以下命令重启Nginx:
```git
nginx -s reload
```
此时再次访问你的IP地址,若显示上文的hexo初次运行的样子,则说明配置成功。
> **注意:**可能会报403错误,原因是nginx没有权限访问public文件夹,修改方法有两种:1.修改public文件夹的权限,修改为777(即任何人可读可写可执行),不推荐2. 修改nginx.conf中的user(可能在第5行),改为可以访问public文件夹的用户,如root。
## 5、创建git环境
1. 在云服务器上创建一个 GIT 用户,用来运行 GIT 服务
- 创建用户:`adduser git`
- 设置密码:`passwd git`
2. 创建证书
- 切换到git用户:`su git`
- 创建.ssh目录:`mkdir .ssh && chmod 700 .ssh`
- 然后在云服务创建authorized_keys公钥保存文件:`touch .ssh/authorized_keys && chmod 600 .ssh/authorized_keys`
> tip:公钥保存文件authorized_keys是一行添加一个
3. 创建git仓库目录
创建一个名为blog的git仓库
```git
mkdir /var/repo
cd /var/repo
git init --bare blog.git
```
4. 配置 GIT HOOKS(钩子)
```git
vim /var/repo/blog.git/hooks/post-receive
```
添加以下内容,wq保存。
```git
#!/bin/sh
git --work-tree=/var/www/hexo --git-dir=/var/repo/blog.git checkout -f
```
设置权限
```git
chmod +x /var/repo/blog.git/hooks/post-receive
```
5. 改变 blog.git 目录的拥有者为 git 用户
```git
chown -R git:git blog.git
```
6. 创建静态文件目录并将3步骤生成的git仓库链接到静态文件目录下
- 创建静态文件目录(文章网页):`mkdir /var/www/hexo`
- 链接git仓库:`chown -R git:git /var/www/hexo`
- 配置权限:`chmod -R 755 /var/www/hexo`
- 这样git仓库更新便会自动同步到hexo目录下
7. 禁用shell登录
输入以下指令`vim /etc/passwd`找到下面这行:
```git
git:x:1001:1001:,,,:/home/git:/bin/bash
```
改为:
```git
git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell
```
这样,git用户可以正常通过ssh使用git,但无法登录shell,因为我们为git用户指定的git-shell每次一登录就自动退出。
8. 测试
当上述步骤都完成后,我们就可以测试下git服务器是否部署成功,最简单的方法便是使用clone来校验。
在用户git控制台输入`git clone git@服务器ip:/var/repo/blog.git`,当弹出密码输入框即环境搭建成功。
## 6、后续
- 剩下的操作与使用git操作无异,提交代码至git服务器,git代码会自动推送至public目录,然后通过nginx代理即可访问自己的博客啦~
- 点击 [参考原文1][1]
- 点击 [参考原文2][2]
感谢以上两位博主的博客,没有他们的前置我也搭不出来现在的博客。若有侵权,请联系博主删除。
[1]: https://qiming.info/%E9%98%BF%E9%87%8C%E4%BA%91CentOS%E4%B8%8BHexo+Nginx%E5%BB%BA%E7%AB%99%E8%BF%87%E7%A8%8B/#comments
[2]: https://www.jianshu.com/p/70bf58c48010

使用阿里云搭配git搭建博客