hexo部署到搬瓦工vps+宝塔面板
安装宝塔
略过。。。。。。
安装git
当然以下操作都是在你远程服务器上操作的
centos 输入以下命令
git --version // 如无,则安装
yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-devel
yum install -y git
配置git仓库
创建用户git并配置仓库
useradd git
passwd git // 设置密码
su git // 这步很重要,不切换用户后面会很麻烦
mkdir -p /www/wwwroot/hexoblog // 项目存在的真实目录,由于需要用到宝塔 我们把博客地址放到宝塔网站地址下
如果上面mkdir出错是因为我们没有把git用户添加到sudoers中
做如下操作
sudo su //输入密码进入root用户
cd /etc/
vim sudoers
找到root ALL=(ALL) ALL
在下面添加
git ALL=(ALL) ALL
注意对齐
然后进入git用户执行如下命令
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钩子函数,输入了内容如下(原理可以参考上面的链接)
输入如下内容
#!/bin/sh
git --work-tree=/www/wwwroot/hexoblog --git-dir=/home/git/repos/hexoblog.git checkout -f
添加完毕后修改权限,执行如下命令
chmod +x post-receive
exit // 退出到 root 登录
chown -R git:git /home/git/repos/hexoblog.git // 添加权限
测试git仓库是否可用,另找空白文件夹,执行如下命令
注意这一步在自己的电脑上测试
git clone git@server_ip:/home/git/repos/hexoblog.git
如果能把空仓库拉下来,就说明 git 仓库搭建成功了
当然你会提示你拉下来的是空仓库
本地电脑设置
建立ssh信任关系,在本地电脑,执行如下命令
ssh-copy-id -i ~/.ssh/id_rsa.pub git@server_ip
ssh git@server_ip // 测试能否登录
这步如果报错一下代码那就对了
ssh: connect to host 102.xx.xx.65 port 22: Connection refused
因为搬瓦工ssh端口是随机生成的并不是22
解决方法1
添加22端口
找到SSH的配置文件sshd_config具体的路径在/etc/ssh/sshd_config
输入命令
vi /etc/ssh/sshd_config
添加port 22
重启ssh服务,尝试以下2条命令
service sshd restart
systemctl restart sshd.service
查看是否修改成功
netstat -nlpt | grep ssh
我开了两个端口,所以是4行
解决方法2
修改本地电脑_config.yml的deploy
repo: git@yourIP:yourPort
/home/git/repos/hexoblog.git
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等登录,执行如下命令
cat /etc/shells // 查看`git-shell`是否在登录方式里面,有则跳过
which git-shell // 查看是否安装
vi /etc/shells
添加上2步显示出来的路劲,通常在 /usr/bin/git-shell
修改/etc/passwd中的权限,将原来的
git:x:1002:1002::/home/git:/bin/bash #也许你的不是这个
修改为
git:x:1000:1000:,,,:/home/git:/usr/bin/git-shell #修改为这个
宝塔面板设置
添加站点
Hexo配置文件设置
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仓库
hexo clean && hexo d -g
去浏览器输入你的域名访问网站试试吧!
其他问题
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,直接用宝塔修改就行!
本文参考资料:
https://rowe98.github.io/2019/05/14/gitRepoBlog/
https://0727.site/2019/11/22/%E7%94%A8%E5%AE%9D%E5%A1%94%E9%9D%A2%E6%9D%BF%E5%B0%86hexo%E5%8D%9A%E5%AE%A2%E9%83%A8%E7%BD%B2%E5%88%B0%E9%98%BF%E9%87%8C%E4%BA%91%E6%9C%8D%E5%8A%A1%E5%99%A8/
https://www.banwago.com/177.html
https://www.cnblogs.com/aisowe/p/11886386.html
http://blog.chinaunix.net/uid-26284395-id-2949145.html
https://blog.csdn.net/node_One/article/details/103213995