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

2020-02-09T20:07:00

安装宝塔

略过。。。。。。

安装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
当前页面是本站的「Baidu MIP」版。发表评论请点击:完整版 »