0%

hexo部署到搬瓦工vps+宝塔面板

安装宝塔

略过。。。。。。

安装git

当然以下操作都是在你远程服务器上操作的

centos 输入以下命令

git –version // 如无,则安装

1
2
yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-devel
yum install -y git

配置git仓库

创建用户git并配置仓库

1
2
3
4
useradd git
passwd git // 设置密码
su git // 这步很重要,不切换用户后面会很麻烦
mkdir -p /www/wwwroot/hexoblog // 项目存在的真实目录,由于需要用到宝塔 我们把博客地址放到宝塔网站地址下

如果上面mkdir出错是因为我们没有把git用户添加到sudoers中
做如下操作

1
2
3
sudo su //输入密码进入root用户
cd /etc/
vim sudoers

找到root ALL=(ALL) ALL
在下面添加

1
git ALL=(ALL)   ALL

注意对齐

然后进入git用户执行如下命令

1
2
3
4
5
6
7
su git
sudo mkdir -p /www/wwwroot/hexoblog
cd /home/git/
mkdir repos && cd repos
git init --bare hexoblog.git
cd hexoblog.git/hooks
vi post-receive // 创建hook钩子函数,输入了内容如下(原理可以参考上面的链接)

输入如下内容

1
2
#!/bin/sh
git --work-tree=/www/wwwroot/hexoblog --git-dir=/home/git/repos/hexoblog.git checkout -f

添加完毕后修改权限,执行如下命令

1
2
3
chmod +x post-receive
exit // 退出到 root 登录
chown -R git:git /home/git/repos/hexoblog.git // 添加权限

测试git仓库是否可用,另找空白文件夹,执行如下命令
注意这一步在自己的电脑上测试

1
git clone git@server_ip:/home/git/repos/hexoblog.git

如果能把空仓库拉下来,就说明 git 仓库搭建成功了
当然你会提示你拉下来的是空仓库

本地电脑设置

建立ssh信任关系,在本地电脑,执行如下命令

1
2
ssh-copy-id -i ~/.ssh/id_rsa.pub git@server_ip
ssh git@server_ip // 测试能否登录

这步如果报错一下代码那就对了

1
ssh: connect to host 102.xx.xx.65 port 22: Connection refused

因为搬瓦工ssh端口是随机生成的并不是22

解决方法1

添加22端口
找到SSH的配置文件sshd_config具体的路径在/etc/ssh/sshd_config
输入命令

1
vi /etc/ssh/sshd_config

添加port 22

port22

重启ssh服务,尝试以下2条命令

1
2
service sshd restart
systemctl restart sshd.service

查看是否修改成功

1
netstat -nlpt | grep ssh

22

我开了两个端口,所以是4行

解决方法2

修改本地电脑_config.yml的deploy
repo: git@yourIP:yourPort/home/git/repos/hexoblog.git

1
2
3
4
deploy:
type: 'git'
repo: git@yourIP:yourPort/home/git/repos/hexoblog.git
branch: master

注:此时的 ssh 登录 git 用户不需要密码!否则就有错,请仔细重复步骤 3-4
如果第 5 步能成功,为了安全起见禁用git用户的 shell 登录权限,从而只能用git clone,git push等登录,执行如下命令

1
2
3
cat /etc/shells // 查看`git-shell`是否在登录方式里面,有则跳过
which git-shell // 查看是否安装
vi /etc/shells

添加上2步显示出来的路劲,通常在 /usr/bin/git-shell

修改/etc/passwd中的权限,将原来的

1
git:x:1002:1002::/home/git:/bin/bash  #也许你的不是这个

修改为

1
git:x:1000:1000:,,,:/home/git:/usr/bin/git-shell  #修改为这个

宝塔面板设置

添加站点

hexo website

Hexo配置文件设置

hexo config

1
2
3
4
5
deploy:
type: 'git'
#repo: https://github.com/yourname/yourname.github.io.git
repo: git@yourIP:/home/git/repos/hexoblog.git
branch: master

push到vps git仓库

1
hexo clean && hexo d -g

去浏览器输入你的域名访问网站试试吧!

其他问题

1
2
3
4
5
6
7
8
9
10
11
12
Could not chdir to home directory /home/git: Permission denied
fatal: '/home/git/repos/hexoblog.git' does not appear to be a git repository
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.
FATAL Something's wrong. Maybe you can find the solution here: https://hexo.io/docs/troubleshooting.html
Error: Spawn failed
at ChildProcess.<anonymous> (D:\Documents\site\hexoblog\node_modules\hexo-util\lib\spawn.js:51:21)
at ChildProcess.emit (events.js:223:5)
at ChildProcess.cp.emit (D:\Documents\site\hexoblog\node_modules\cross-spawn\lib\enoent.js:34:29)
at Process.ChildProcess._handle.onexit (internal/child_process.js:272:12)

这个提示是权限问题把git权限修改为www,直接用宝塔修改就行!