个人博客搭建

发布 : 2019-03-31 分类 : tool 浏览 :

开始前准备


开始安装

使用node部署hexo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#查看最新node版本
$ nvm list available

#安装node版本
$ nvm install 11.13.0

#切换到安装的node版本
$ nvm use 11.13.0

#使用node全局安装hexo
$ npm install -g hexo-cli

#初始化你的博客
$ hexo init your-blog
$ cd your-blog
$ git clone git@github.com:dongyuanxin/theme-bmw.git themes/bmw

主题详细使用点这里

1
2
#启动本地服务器,默认4000端口
$ hexo server

部署

官方文档

部署git

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#安装 hexo-deployer-git
$ npm install hexo-deployer-git --save

#../your-blog/_config.yml 82行左右
deploy:
type: git
repo: <repository url> #https://bitbucket.org/JohnSmith/johnsmith.bitbucket.io
branch: [branch] #published
message: [message]

#部署完成运行以下命令将生成html文件上传到指定的git仓库
$ hexo deploy

#清除原先缓存跟文件重新部署
$ hexo clean && hexo deploy

git配置webhook

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#服务器使用lnmpa一键部署web环境
#查看nginx服务所使用的linux用户,默认为www用户

#linux切换用户登录
$ su www

#提示 This account is currently not available进行以下操作

#修改 /etc/passwd 文件
# 将www用户的 :/sbin/nologin 改为 :/bin/bash

#接着切换www用户登录
#生成ssh秘钥
$ ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

#查看生成的ssh秘钥
$ cat ~/.ssh/id_rsa.pub

#部署到git ssh配置中

#git webhook中的请求地址填写阿里云解析的钩子地址

#webhook请求参数选择 application/json方式

阿里云服务器配置

1
# 解析一个额外的域名到服务器,如:webhook.yousite.com,将此域名作为钩子

linux设置权限

1
2
3
4
#假设blog目录部署在/home/www/blog
#设置www用户文件所有权

$ chown -R www:www /home/www/blog

php自动部署git脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
error_reporting(E_ALL);
//设置请求超时时间
set_time_limit(0);

$signature = $_SERVER['HTTP_X_HUB_SIGNATURE'];

//webhook secret
$token = '部署在git webhook中的secret';

//获取json数据
$json_post = file_get_contents("php://input");

//生成签名
$sha1 = hash_hmac('sha1', $json_post, $token);

//签名验证
if ($signature !== 'sha1=' . $sha1) {
echo 'sign error';
exit();
}

//该目录为git检出目录
$dir = '/home/www/blog';

//git更新命令
//有时git会去读取root用户的git配置,导致无权限,更新失败.
//此处暂用手动设置用户信息的方式解决
$command = "cd {$dir} && git config user.name 'xiaoxiaoxiao' ".
"&& git config user.email '1605882811@qq.com' ".
// "&& git checkout . && git pull --force origin master 2>&1"; //强制更新
"&& git checkout . && git fetch --all && git reset --hard origin/master"; //强制覆盖本地分支

//执行命令
exec($command, $output);
var_dump($output);
exit();
本文作者 : xiaoxiaoxiao
原文链接 : http://xxcok.com/passages/blog/
版权声明 : 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!

知识 & 情怀 | 二者兼得

微信扫一扫, 向我投食

微信扫一扫, 向我投食

支付宝扫一扫, 向我投食

支付宝扫一扫, 向我投食

留下足迹