想法(不看也罢)
近期准备使用宝塔部署博客,部署如果还要手动拉取太浪费时间,还是自动同步才是最好的选择,这里分享一个用webhook实现自动部署的插件,实现自动部署,感谢 @xinpro 的支援,现在在准备迁移工作,由于现用的域名被拿去备案了,现在用的是备用域名(话说我域名有点多啊),在GitHub上使用是可以,不过因为是静态部署的,没办法搞cdn加速,虽然优化了几次,虽然速度提升上去了,但还是到达不了心里面的要求,心里最低要求加载速度要在3s以内才合格,等迁到宝塔后,进行各种各样的优化,提示访问速度。
准备工作
- 安装宝塔(废话)
- git
- 本地安装hexo
本地安装Hexo
这里就不叙述了,布置过程网上有很多,也可以看我的教程。
安装宝塔面板
今日到你自己的控制台找到自己的服务器,选择登录
创建宝塔面板
- 官网地址:宝塔官网
- 点击
Linux
,点击安装,找到Centos
(推荐)安装。 - 在终端输入安装指令:
1
yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh
- 等待安装完毕,记住登陆网址、用户名和密码。
登录宝塔面板
- 在浏览器里输入
外网面板地址
,然后输入用户名
和密码
。 - 登录后选择推荐即可
- 在浏览器里输入
在等待安装的过程中,在左侧→面板设置栏目里面,修改登陆地址、用户名和密码,方便自己记录。
添加自己的域名。
宝塔安装git
本地的就不说了,如果需要的可以看本地部署教程,这里介绍宝塔安装git。
打开你的终端。
进入到管理员账号(好像是默认的)。
1
sudo su root
安装
git
1
yum install git
查看git版本。
1
git version
将项目拉取到你的服务器上。
1
git clone <url> //在你的项目路径下执行,使用ssh链接比较好
配置SSH公共密钥
配置SSH公共密钥,让宝塔有访问GitHub权限
1
ssh-keygen -t rsa // 一直回车
查看并获取SSH公钥
1
cat ~/.ssh/id_rsa.pub
配置到GitHub仓库,部署公钥settings>keys
宝塔安装webhook
执行脚本(注意更改)
执行脚本如下,有两处须要批改 gitPath=”/www/wwwroot/$1”(留神你的阿里云文件门路,如果不一样须要批改) gitHttp=”https://gitee.com/yourname/$1.git“(留神你的近程仓库地址,肯定要改) .env.test这个根据环境改成对应的,比如正式环境改成.env.www,具体请看下面的文章解说在webhook里面添加一个钩子执行脚本如下: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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
echo ""
#输出当前时间
date --date='0 days ago' "+%Y-%m-%d %H:%M:%S"
echo "Start"
#判断宝塔WebHook参数是否存在
if [ ! -n "$1" ];
then javascript:;
echo "param参数错误"
echo "End"
exit
fi
#git项目路径($1是param后面的参数,指向你的服务器的目录)
gitPath="/www/wwwroot/$1"
#git 网址 (替换成你的git地址,可选择https方式或者ssh方式)
gitHttp="https://gitee.com/yourname/$1.git"
echo "Web站点路径:$gitPath"
#判断项目路径是否存在
if [ -d "$gitPath" ]; then
cd $gitPath
#判断是否存在git目录
if [ ! -d ".git" ]; then
echo "在该目录下克隆 git"
sudo git clone $gitHttp gittemp
echo "切换develop分支"
sudo git checkout develop
echo "移动+删除文件夹"
sudo mv gittemp/* .
sudo mv gittemp/.[^.]* .
sudo rm -rf gittemp
else
echo "切换develop分支"
sudo git checkout develop
echo "更新文件"
sudo git checkout .
sudo git pull origin develop
sudo git fetch -p
fi
echo "配置文件"
sudo cp .env.test .env
echo "设置目录权限"
sudo chown -R www:www $gitPath
echo "End"
exit
else
echo "创建目录"
sudo mkdir $gitPath
cd $gitPath
echo "在该目录下克隆 git"
sudo git clone $gitHttp gittemp
echo "切换develop分支"
sudo git checkout develop
echo "移动+删除文件夹"
sudo mv gittemp/* .
sudo mv gittemp/.[^.]* .
sudo rm -rf gittemp
echo "配置文件"
sudo cp .env.test .env
echo "设置目录权限"
sudo chown -R www:www $gitPath
echo "End"
exit
fi
代码中的.env解说
传统正式环境和测试环境比如数据库配置不一样,可能我们需要两套配置 像以上代码有测试配置文件.env.test,推送后会自动复制为.env,正式环境钩子代码自行修改下改成 .env.www 这样的好处不管是否正式或者测试环境,只需要配置多个.env,这样代码不需要任何修改即可运行正式或测试环境