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

584

近期在阿里云买了个学生服务器,就想着把github上的博客迁移过来。整个过程陆陆续续花了一个多星期的时间,也踩了不少坑,在此做个记录备忘。

准备工作

开启端口,轻量级服务器不用手动开,默认带了三个。ECS服务器需要自己配置。
开启端口如下:

1、安装git

使用yum安装即可

yum install git

完成后输入git version,若显示git版本信息即安装成功。

2、安装Node.js

  1. 去官网下载https://nodejs.org/en/download/,博主是用的最新版10.15.3,请务必使用7以上的版本,不然使用hexo时会报错。

  2. 解压缩改名放到/usr/local

tar xvJf node-v10.15.3-linux-x64.tar.xz

将解压的 Node.js 目录移动到 /usr/local 目录下

mv node-v10.15.3-linux-x64 /usr/local/node-v10
  1. 软链接到 /bin 目录
ln -s /usr/local/node-v10/bin/node /bin/node
ln -s /usr/local/node-v10/bin/npm /bin/npm
  1. 配置环境变量
    将 /usr/local/node-v6/bin 目录添加到 $PATH 环境变量中可以方便地使用通过 npm 全局安装的第三方工具
echo 'export PATH=/usr/local/node-v10/bin:$PATH' >> /etc/profile

使环境变量生效

source /etc/profile
  1. 测试是否成功
    输入node -vnpm -v,若显示版本号,即安装成功。

3、安装Hexo

  1. 安装Hexo
    执行以下命令即安装Hexo:
npm install -g hexo-cli

安装完成后输入hexo version,若显示版本信息则安装成功。

  1. 具体hexo教程请自行百度,百度上有详细介绍(后续再补)。

4、安装Nginx

  1. 使用 yum 来安装 Nginx
yum install nginx
  1. 启动Nginx
systemctl start nginx

此时访问http//(你的ip地址),看到nginx测试界面则表示启动成功。

  1. 继续输入以下命令使Nginx开机自动启动:
systemctl enable nginx
  1. 配置静态服务器访问路径
    Nginx 需要配置静态资源的路径信息才能通过 url 正确访问到服务器上的静态资源。
    即是要将HEXO生成的静态资源的路径放置到Nginx的访问路径

打开 Nginx 的默认配置文件 /etc/nginx/nginx.conf ,将默认的 root /usr/share/nginx/html 修改为: root /…//public (此处可能在此配置文件的42行,即为hexo初始化的文件夹)

修改完成后保存,输入以下命令重启Nginx:

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
  1. 创建证书
  • 切换到git用户:su git

  • 创建.ssh目录:mkdir .ssh && chmod 700 .ssh

  • 然后在云服务创建authorized_keys公钥保存文件:touch .ssh/authorized_keys && chmod 600 .ssh/authorized_keys

tip:公钥保存文件authorized_keys是一行添加一个

  1. 创建git仓库目录
    创建一个名为blog的git仓库
mkdir /var/repo
cd /var/repo
git init --bare blog.git
  1. 配置 GIT HOOKS(钩子)
vim /var/repo/blog.git/hooks/post-receive

添加以下内容,wq保存。

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

设置权限

chmod +x /var/repo/blog.git/hooks/post-receive
  1. 改变 blog.git 目录的拥有者为 git 用户
chown -R git:git blog.git
  1. 创建静态文件目录并将3步骤生成的git仓库链接到静态文件目录下
  • 创建静态文件目录(文章网页):mkdir /var/www/hexo
  • 链接git仓库:chown -R git:git /var/www/hexo
  • 配置权限:chmod -R 755 /var/www/hexo
  • 这样git仓库更新便会自动同步到hexo目录下
  1. 禁用shell登录
    输入以下指令vim /etc/passwd找到下面这行:
git:x:1001:1001:,,,:/home/git:/bin/bash

改为:

git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell

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

  1. 测试
    当上述步骤都完成后,我们就可以测试下git服务器是否部署成功,最简单的方法便是使用clone来校验。
    在用户git控制台输入git clone git@服务器ip:/var/repo/blog.git,当弹出密码输入框即环境搭建成功。

6、后续

  • 剩下的操作与使用git操作无异,提交代码至git服务器,git代码会自动推送至public目录,然后通过nginx代理即可访问自己的博客啦~

  • 点击 参考原文1

  • 点击 参考原文2

感谢以上两位博主的博客,没有他们的前置我也搭不出来现在的博客。若有侵权,请联系博主删除。