用宝塔面板把 Hexo 部署到服务器

前言:之前是把博客部署到GitHub上的,结果实在是太慢,发现阿里云服务器促销就买了一台,然后就把部署过程记录下来了,这里我用的是Ubuntu。

思路概览:

  1. 搭建并创建git仓库
  2. 将本地博客deploy到Git仓库。
  3. 使用git-hooks实现自动部署到网站目录。
  4. 用Nginx实现外部访问网站的功能。

一、环境安装

1.安装宝塔和Nginx

点这里前往官网获取安装脚本,ssh连接到服务器运行系统对应安装脚本命令就行了。

安装好登录面板后会弹出环境安装,部署Hexo只勾选Nginx即可

环境安装好之后到网站页添加站点,记好网站目录名如:xmdblog.com

添加站点

2.安装git

点这里前往官网安装页,运行对应系统的安装命令即可。

二、部署

1.git仓库搭建

创建用户git

adduser git  #添加git用户 

chmod 740 /etc/sudoers #改变sudoers文件的权限为文件所有者可写

vim /etc/sudoers #在root ALL=(ALL) ALL 下方添加一行

git ALL=(ALL) ALL

chmod 400 /etc/sudoers #将其权限修改为文件所有者可读

vim基础:按i编辑,ESC退出编辑,按:输入命令,输入wq命令按回车保存并退出

为git用户创建ssh密钥连接,本地电脑打开PowerShell,cd到用户文件夹运行一下命令生成.ssh密钥,已经有了的可以跳过。

ssh-keygen -t rsa -C "网站目录名"

服务器端使用ssh公钥

su git  #切换到git用户 

cd #切换到根目录

mkdir -p ~/.ssh #创建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,保存,用PowerShell运行ssh git@服务器IP测试是否可以连接到git用户

git用户下创建git仓库

sudo mkdir /home/git/repos  #新建目录,这是git仓库的位置 

cd /home/git/repos

sudo git init --bare xmdblog.git #初始化一个名叫xmdblog的仓库,可以自定义仓库名

配置钩子实现自动部署

找到 /home/git/repos/xmdblog.git/hooks/post-update.sample 改名post-update,内容改为

#!/bin/sh 

git --work-tree=/www/wwwroot/网站目录名 --git-dir=/home/git/repos/仓库名.git checkout -f

然后赋予权限

cd xmdblog.git/hooks/ 

sudo chmod +x post-update #赋予其可执行权限

sudo chown -R git:git /home/git/repos/ #仓库所有者改为git

sudo chown -R git:git /www/wwwroot/网站目录名/ #站点文件夹所有者改为git

如果报错.user.ini无法操作,在网站目录里删除这个文件即可。

2.本地配置

修改本地Hexo配置\_config.yml文件

deploy:

type: git

repo: git@服务器IP:/home/git/repos/仓库名.git #域名解析到服务器后也可以把这里的服务器IP换成域名

branch: master

上传

hexo clean  #清除缓存 

hexo generate #生成静态页面

hexo delopy #将本地静态页面目录部署到服务器

给网站配置好ssl,建议配置重定向到www.域名.com,现在不出问题的话你已经可以访问到自己的博客啦!