部署环境与准备
-
环境
本机Windows10操作系统
阿里云/腾讯云Centos7.7服务器
-
准备
Hexo 本地博客
Xshell 连接到你的服务器
阿里云服务器配置Git
安装依赖库
yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel
安装编译工具
yum install gcc perl-ExtUtils-MakeMaker package
安装git
git version # 查看git的版本
yum remove git -y # 删除git
cd /usr/local # 切换到要下载的目录
wget https://www.kernel.org/pub/software/scm/git/git-2.28.0.tar.gz #下载git(自带的版本较低)
tar -zxvf git-2.28.0.tar.gz # 解压到当前文件夹
编辑并安装到指定的目录
cd git-2.28.0 #进入到git解压的文件夹
# 不必先在local下面创建git文件夹,不然编辑会出现文件夹名称重复错误!
make prefix=/usr/local/git all #编译源码到指定路径文件夹下
make prefix=/usr/local/git install #安装到指定路径文件夹下
配置git的环境变量
echo 'export PATH=$PATH:/usr/local/git/bin' >> /etc/bashrc
source /etc/bashrc # 刷新环境变量让他生效
git --version # 查看git版本
创建git用户并且修改权限
adduser jiangpeng # 创建用户
passwd jiangpeng # 设置密码
chmod 740 /etc/sudoers # 修改文件夹权限
vim /etc/sudoers # 编辑文件
root ALL=(ALL) ALL # 在root下面新增一行 在文件的100行左右
jiangpeng ALL=(ALL) ALL # 允许我们创建的用户拥有root权限
chmod 600 /etc/sudoers # 再把权限改回来
本地Windows10使用Gitbash创建密钥
ssh-keygen -t rsa # 在本地创建ssh秘钥(创建的位置为当前用户.ssh文件夹里)
ssh-keygen -R 你要访问的IP地址
将本地创建的id_rsa.pub文件中所有内容全部复制到阿里云服务器中
su jiangpeng # 切换用户
mkdir ~/.ssh # 创建文件夹
vim ~/.ssh/authorized_keys # 编辑文件(将秘钥内容全部复制到此文件中)
本地测试
ssh -v jiangpeng@服务器ip(ip就是你服务器的公网ip) # 让你输入密码说明测试成功
阿里云服务器网站配置
创建网站目录并且设置权限
su root # 切换root用户
mkdir /home/hexo
chown jiangpeng:jiangpeng -R /home/hexo # 这里用之前自己创建的用户名(我创建的是jiangpeng)
安装Nginx
yum install -y nginx # yum一键安装(默认配置文件路径为 /etc/nginx/nginx.conf)
systemctl start nginx.service # 启动服务
修改Nginx配置文件
vim /etc/nginx/nginx.conf # 编辑配置文件(:set nu设置行号)
38 server {
39 listen 80;
40 listen [::]:80;
41 server_name jiangpeng.life; # 这里写你的域名或者ip都可以,写域名,你的域名要绑定服务器ip
42 root /home/hexo; # 网站放的目录
重启服务器
systemctl restart nginx.service # 重启nginx服务
新建git仓库并授权
su root # 切换到root用户
cd /home/jiangpeng # 到你自己创建的用户文件夹下
git init --bare blog.git # 创建仓库
chown jiangpeng:jiangpeng -R blog.git # 授权
同步网站根目录
vim blog.git/hooks/post-receive
#!/bin/sh
git --work-tree=/home/hexo --git-dir=/home/jiangpeng/blog.git checkout -f
修改权限
chmod +x /home/jiangpeng/blog.git/hooks/post-receive
在Windows10本地hexo目录修改_config.yml文件
deploy:
type: git
repository: jiangpeng@阿里云服务器ip:/home/jiangpeng/blog.git #用户名@服务器Ip:git仓库位置
branch: master
在本机Windows的Gitbash部署
hexo clean # 清理缓存
hexo g -d # 部署(报错看下面,不报错省略)
# 如果hexo大于3.0版本的可能是因为缺少hexo-deployer-git(Hexo 3.0版本以后分开了),安装一下就可以了。
npm install hexo-deployer-git --save # 安装好以后,重新部署,就可以访问了。
常见报错
git-upload-pack: 未找到命令
bash: git-upload-pack: command not found
fatal: Could not read from remote repository
解决办法
sudo ln -s /usr/local/git/bin/git-upload-pack /usr/bin/git-upload-pack
git-receive-pack: 未找到命令
bash: git-receive-pack: command not found
fatal: Could not read from remote repository
解决办法
sudo ln -s /usr/local/git/bin/git-receive-pack /usr/bin/git-receive-pack
无法远程连接获取
fatal: Could not read from remote repository
解决办法
重试或者 删掉本地ssh公钥重新上传至服务器
key出错
Host key verification failed
解决办法
ssh-keygen -R 你要访问的IP地址