Hexo部署到云服务器
以下是我在部署Hexo项目到云服务器的步骤,以及所遇到的一些问题和解决方法。
git 的安装(压缩包安装)
当我们需要将 Hexo 项目代码上传到服务器时,我们可以借助Git工具,下面是以编译的方式安装git的过程。当然,我们也可以使用 **yum install git
**命令进行直接安装,但这样的方式安装的版本低。
访问 https://git-scm.com/download/linux 查看git的最新版本,这里是
可先将文件下载到本地后,再上传到服务器中,也可以在服务器中使用 wget 命令进行下载
1
2yum remove git -y # 删除旧版的git
wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.39.0.tar.gz --no-check-certificate将下载好的压缩文件解压
1
tar -zxf git-2.39.0.tar.gz
切换到解压后的 git-2.39.0 文件夹中,并使用 make 命令进行编译
1
2
3
4
5
6进行编译前需要安装以下开发包,否则会报错
sudo yum install -y openssl-devel
sudo yum install -y curl-devel
sudo yum install -y expat-devel
已安装以上开发包的,执行下面命令进行编译
make all prefix=/usr/local/git将 git 安装到 /usr/local/git 中
1
make install prefix=/usr/local/git
配置 git 环境变量,vim 编辑器打开 /etc/bashrc,并写入 git 的 bin 目录
1
export PATH=$PATH:/usr/local/git/bin
刷新配置,使其生效
1
source /etc/bashrc
完成以上步骤后,可查看版本号以验证是否安装成功
1
git --version # 查看 git 版本
创建用户,并配置 SSH 免密登录
服务器 ssh 密钥配置
服务器端创建用户和密码(用户名和密码自定义,这里我以 gituser 账号为例)
1
2adduser gituser # 创建用户
passwd gituser # 设置密码将用户添加到 wheel 用户组
1
usermod -G wheel gituser
变更 sudoers 权限
1
chmod 740 /etc/sudoers
vi 打开 sudoers 配置
1
vi /etc/sudoers
在 root ALL=(ALL) ALL下添加以下内容,保存并退出
1
gituser ALL=(ALL) ALL
将 sudoers 文件权限修改为只读
1
chmod 400 /etc/sudoers
本地生成 SSH 密钥
本地下载安装好 git ,在 https://git-scm.com/ 下载对应版本的安装包进行安装
安装好 git 后,桌面右键点击 Git Bash Here 打开 git 终端,输入:
1
ssh-keygen -t rsa # 直接一直回车即可
将 .ssh 目录下的 生成的.pub 文件中的内容进行复制
服务器端配置公钥
切换到刚刚创建的用户
1
su gituser
创建 .ssh 文件夹,创建 authorized_keys文件,并写入刚刚复制的公钥内容
1
2
3
4mkdir ~/.ssh
vim ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
chmod 700 ~/.ssh
nginx 配置(手动安装配置)
创建网站目录 hexo ,并修改其权限
1
2
3mkdir /var/hexo
chown -R gituser:gituser /var/hexo/
chmod -R 755 /var/hexo/安装 nginx
1
yum install -y nginx
启动 nginx
1
systemctl start nginx.service
查看 nginx 服务状态
1
systemctl status nginx.service
修改 nginx 转发配置
vim /usr/local/nginx/conf/nginx.conf
,在 server 里写入以下内容1
2
3
4
5
6
7
8
9
10
11
12server{
listen 80
root /var/hexo; # 改为创建的目录路径
server_name [域名或 IP 地址];
include /etc/nginx/default.d/*.conf;
location / {
}
error_page 404 /404.html;
location = /40x.html {
}
}重启 nginx
1
systemctl restart nginx.service
在搭建的时候发现一个错误,当我把网站目录所有权设置为 git 用户时,nginx 出现 403 权限问题,后来使用
ps aux|grep nginx
查看当前 nginx 的启动权限时发现 nginx 的启动权限为 www 用户,因此将其改变为 git 用户或者 root 用户权限,即可解决问题(修改权限后记得重启 nginx 服务)。
配置远程 git 仓库
切换到 root 用户,在 var 目录下创建 git 目录,并赋予其权限
1
2
3
4exit
cd /var
chown -R gituser:gituser /var/git/ # 修改目录所有权
chmod -R 755 /var/git/ # 修改用户权限进入 git 目录,创建 git 仓库,并修改权限
1
2
3cd /var/git/
git init --bare hexoblog.git
chown gituser:gituser -R hexoblog.git创建钩子文件
1
vim /var/git/hexoblog.git/hooks/post-receive
进入编辑文件,写入以下代码(以下代码要看自己设置的路径为主)
1
2#!/bin/bash
git --work-tree=/var/hexo --git-dir=/var/git/hexoblog.git checkout -f保存文件,并修改文件权限
1
chmod +x /var/git/hexoblog.git/hooks/post-receive
修改 hexo 站点配置文件
打开本地 hexo 项目的 _config.yml 文件,修改以下内容
1
2
3
4
5
6deploy:
type: git
repo: 'gituser@[服务器IP]:/var/git/hexoblog.git'
# 当我们修改SSH端口时,需要指定端口,如SSH端口为 5234,则repo修改如下:
# repo: 'ssh://gituser@[服务器IP]:5234/usr/local/nginx/git/hexoblog.git'
branch: master安装 hexo 自动部署工具
1
npm install hexo-deployer-git --save
保存配置后,重新构建和部署项目
1
2
3hexo clean # 清理缓存
hexo g # 生成项目文件
hexo d # 上传到服务器
若在使用 hexo d 提交项目文件时,出现以下错误:
1 | On branch master |
排查错误发现,之前安装git时,将其安装在了/usr/local/git中,所以需要创建软连接
1 | ln -s /usr/local/git/bin/git-receive-pack /usr/bin/git-receive-pack |