将Hexo部署到云服务器
本来Hexo是部署在GitHub上的(可以看我之前文章Hexo搭建静态博客 – Taitres’ Blog包括了Hexo的基本使用),但是访问太慢了,并且想折腾一下,还想整个个人云盘,就买了个腾讯云的轻量应用服务器,把Hexo搬过来了,看了很多文章,记录下最终的解决方案。
思路是:
- 在服务器上搭建Git环境,创建Git仓库
- 在主机生成Hexo静态文件,通过与服务器连接,推到服务器上的Git仓库
- 通过git-hooks实现自动部署到网站资源目录
- Nginx做静态文件服务器,实现外界对网站资源目录的访问
一、环境准备
1. 安装宝塔面板
#centos
yum install -y wget && wget -O install.sh https://download.bt.cn/install/install_6.0.sh && sh install.sh ed8484bec
#Ubuntu
wget -O install.sh https://download.bt.cn/install/install-ubuntu_6.0.sh && sudo bash install.sh ed8484bec
安装nginx和git
yum install -y nginx git
3.Nginx服务器配置
通过宝塔面板可以方便地修改Nginx的配置文件,在taitres.cc的设置中找到配置文件,应该是自动配好了的,没有就自己设置下,也可以使用其他端口
二、Git仓库搭建
之前推hexo的静态文件都是推到GitHub的仓库,现在服务器也是一样,需要仓库来保存
1.添加一个用户git
在服务器端
adduser git #添加git用户
chmod 740 /etc/sudoers #改变sudoers文件的权限为文件所有者可写
vim /etc/sudoers
#在root ALL=(ALL) ALL 下方添加一行
git ALL=(ALL) ALL
chmod 400 /etc/sudoers #将其权限修改为文件所有者可读
2.给git用户添加ssh密钥
这一步是为了建立主机与服务器连接,使其不需要密码也能登陆
#在主机端打开powershell,cd到C:\Users\admin\.ssh生成密匙,如已有密匙可跳过这一步
ssh-keygen -t rsa -C "www.xiaopangz.com"
# -t 指定密钥类型,默认是 rsa ,可以省略
# -C 用于识别这个密钥的注释,可以输入任何内容
# -f 指定密钥文件存储文件名,默认id_rsa
#在服务器端
su git #切换到git用户
mkdir -p ~/.ssh
touch ~/.ssh/authorized_keys #创建authorized_keys文件
chmod 600 ~/.ssh/authorized_keys #为authorized_keys文件赋予文件所有者可读可写的权限
chmod 700 ~/.ssh #为.ssh文件夹赋予文件夹所有者可读可写可执行的权限
复制公匙id_rsa.pub内容到服务器/home/git/.ssh/authorized_keys,关闭终端,使用ssh git@server
重新登录服务器,测试是否能不要密码登录到git用户,如出现Permission denied的问题可尝试文章末尾的解决办法
3.创建Git仓库
mkdir /home/git/repos #新建目录,这是git仓库的位置
cd /home/git/repos
git init --bare taiblog.git #初始化一个名叫taiblog的仓库
4.配置钩子实现自动部署
找到 /home/git/repos/taiblog.git/hooks/post-update.sample
改名post-update
,内容改为
#!/bin/sh
git --work-tree=/www/wwwroot/www.xiaopangz.com --git-dir=/home/git/repos/taiblog.git checkout -f
然后给权限
cd /home/git/repos/taiblog.git/hooks/
chmod +x post-update #赋予其可执行权限
chown -R git:git /home/git/repos/ #仓库所有者改为git
chown -R git:git /www/wwwroot/www.xiaopangz.com/ #站点文件夹所有者改为git
5.测试Git仓库是否可用
#在主机端,如果能将仓库拉下来,说明Git仓库搭建成功
git clone git@server_ip:/home/git/repos/taiblog.git
三、本地配置和测试
1.本地配置
修改本地Hexo博客文件夹中的_config.yml
文件
deploy:
type: git
repo: git@server:/home/git/repos/taiblog.git
branch: master
2.测试
hexo clean #清除缓存
hexo generate #生成静态页面
hexo delopy #将本地静态页面目录部署到云服务器
也可以在package.json 中添加 npm 脚本,这样就可以直接npm run dd一下执行
"scripts": {
"build": "hexo generate",
"clean": "hexo clean",
"deploy": "hexo deploy",
"dd": "hexo clean && hexo g -d",
"server": "hexo server",
"ss": "hexo clean && hexo g && hexo s"
},
然后访问自己的IP看看是否成功