Hexo 通过 git 部署到 docker 的 centos7 里

docker的centos7安装

1
2
3
4
5
6
docker pull centos:7.8.2003
cat /etc/redhat-release
docker run -d -i -t --name centos_bash centos:7.8.2003 /bin/bash
docker exec -it centos_bash bash
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum install -y net-tools

git配置

服务器安装git

在刚刚的黑框里输入,然后回车:

1
yum install -y git

image-20201122005214748

此时git已经安装成功。

1
2
3
4
5
6
7
8
9
10
11
12
# 创建git账户
adduser git

# 安装sudo命令
su -
yum update -y
yum install -y sudo
sudo -l # 验证是否正确安装了sudo命令

# 添加git账户权限
chmod 740 /etc/sudoers
vi /etc/sudoers

点击 / 键,进入查找模式,按下 n 查找下一个,按下 N 查找上一个

image-20201122012543116

点击i,添加以下内容,然后按 Esc 键,此时最底下的 —INSERT— 消失,再输入 :wq,即保存退出。

1
git     ALL=(ALL)     ALL

image-20201122012932747

1
2
3
4
5
6
7
8
9
10
11
12
# 改回权限
chmod 400 /etc/sudoers

# 设置 git 账户密码
sudo passwd git

#切换至 git 用户,创建~/.ssh 文件夹和~/.ssh/authorized_keys 文件,并赋予相应的权限
su git && mkdir ~/.ssh && vi ~/.ssh/authorized_keys
# 按”i” 进入编辑模式,将我们在 win10 中生成的 id_rsa.pub 文件中的公钥复制到 authorized_keys 中,按”esc”,然后按”:wq”,保存退出。

# 赋予权限
chmod 600 /home/git/.ssh/authorized_keys && chmod 700 /home/git/.ssh

在电脑本地桌面,右键”Git Bash Here”,输入一下命令,其中 SERVER 填写自己的云主机 ip,执行输入 yes 后不用密码说明配置成功了。

1
ssh -v git@SERVER

如果你之前配置过git,可能你会出现以下这种错误。

微信图片_20191203082833-2019-12-3-8-28-59.png

可以看到

1
Offending ECDSA key in /c/Users/jonty/.ssh/known_hosts:2

是.ssh/known_hosts 这个文件第二行出现冲突了。只要用笔记本打开,将这个文件的第二行删掉即可。

11-2019-11-30-16-29-57.png

重新执行刚刚的命令

1
ssh -v git@你的服务器ip

12-2019-11-30-16-30-12.png

这说明已经连接成功了。

6.2 创建仓库目录及相关配置

1、创建目录
在var目录下创建repo作为Git仓库目录,返回服务端命令行切换到root账户,然后输入:

1
mkdir /var/repo

13-2019-11-30-16-30-43.png

赋予权限:

1
2
chown -R git:git /var/repo
chmod -R 755 /var/repo

接下来创建hexo目录作为网站根目录,并赋予权限:

1
2
3
mkdir /var/hexo
chown -R git:git /var/hexo
chmod -R 755 /var/hexo

接下来创建一个空白的git仓库

1
2
cd /var/repo
git init --bare hexo.git

14-2019-11-30-16-31-7.png

创建一个新的 Git 钩子,用于自动部署.

在 /var/repo/hexo.git 下,有一个自动生成的 hooks 文件夹。我们需要在里边新建一个新的钩子文件 post-receive。

1
vim /var/repo/hexo.git/hooks/post-receive

进入编辑模式,然后将下面那两行代码粘贴进去,保存退出。

1
2
#!/bin/bash
git --work-tree=/var/hexo --git-dir=/var/repo/hexo.git checkout -f

修改权限:

1
2
chown -R git:git /var/repo/hexo.git/hooks/post-receive
chmod +x /var/repo/hexo.git/hooks/post-receive

到这里Git仓库已经搭建完毕了。

7 配置Nginx

为了部署和维护,我们使用宝塔面板来一键部署Nginx

1
yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && bash install.sh

中途输入”y”回车等待一会就好了。在执行结果最后会出现地址,用户名,密码等。

15-2019-11-30-16-31-40.png

复制这个地址打开,输入账号密码即可进入宝塔面板。

16-2019-11-30-16-31-50.png

注意:这里也有可能你进不去面板页面,是因为你的服务器没有开8888这个端口(具体看你的宝塔面板连接的端口),去阿里云轻量服务器控制台中的“安全”->“防火墙”,右上角的”添加规则”,添加相应的端口即可。看下面的第二张图。

17-2019-11-30-16-32-0.png

18-2019-11-30-16-32-7.png

另外如果忘记了宝塔用户名密码,可以去你服务器终端输入:

1
cd /www/server/panel && python tools.py panel testpasswd

下图为宝塔解决方案,链接忘记Linux 3.X/4.x/5.x/6.x 宝塔面板密码的解决方案

19-2019-11-30-16-32-26.png

进入面板之后,会提示叫你修改端口,点击”立即修改”,可以看到”面板端口”这时候是8888,自己选一个值,然后先去服务器防火墙上开放这个端口,跟刚刚的”添加规则”操作一样。

再回到宝塔面板页面将”面板端口”的值修改成你刚刚开放的端口值。

然后需要用新端口,重新进入宝塔面板,就是将原有的链接”:”后面的值改成你的端口即可。

20-2019-11-30-16-32-37.png

在宝塔面板,进入软件商店,输入”Nginx”,然后搜索,安装免费的那个。

21-2019-11-30-16-32-50.png

等待部署完成。

部署完成之后,点击网站,添加站点,填写你的域名,没有的话写你的服务器ip地址。其他的不要改。

22-2019-11-30-16-33-1.png

填写完之后提交,然后点击”设置”

23-2019-11-30-16-33-9.png

点击”配置文件”

1
2
3
4
5
6
7
8
server
{
listen 80;
# server_name填写你自己的域名,没有的话填ip
server_name hjxlog.com;
index index.php index.html index.htm default.php default.htm default.html;
# 这里root填写自己的网站根目录,修改为/var/hexo
root /var/hexo;

保存,然后选择“设置”-“网站目录”,将网站目录修改成以下,保存。

1
/var/hexo

24-2019-11-30-16-33-18.png

回到服务器终端,重启宝塔服务,使之生效。

1
service bt restart

8 修改hexo配置

进入本地电脑hexo博客的根目录,编辑站点配置文件 _config.yml,找到deploy,修改成以下

1
2
3
4
5
deploy:
type: git
#repo改为repo: git@你的域名:/var/repo/hexo.git
repo: git@hjxlog.com:/var/repo/hexo.git
branch: master

最后在本地电脑hexo博客的根目录右击,Git Bash Here,输入以下命令部署

1
2
hexo clean
hexo d -g

这时候可能出现权限问题,导致部署到git失败。

25-2019-11-30-16-33-43.png

在服务器终端输入以下命令即可:

1
2
chown -R git:git /var/repo/
chown -R git:git /var/hexo/

最后再hexo d -g部署,应该就可以看到部署成功了。

26-2019-11-30-16-34-0.png

自此,已经将博客从GitHub pages搬到阿里云服务器了。

27-2019-11-30-16-34-7.png

9 将网站添加https访问

去阿里云申请一个免费的SSL证书,好像要备案,有点忘记了,很快就申请下来了。

进入宝塔面板,”网站”,”设置”,”SSL,”其他证书”

28-2019-11-30-16-34-22.png

将你申请的证书*.key以及*.pem内容,粘贴进去然后保存即可。

29-2019-11-30-16-34-28.png

10 持续更新

2020-03-15 根据评论和邮件反馈遇到的常见问题更新

12020-3-15-11-17-2

根据有同学遇到上图这种情况,如果提示

1
2
Could not resolve hostname ***.com: Name or service not known
Please make sure you have the correct access rights

那么看一下自己的域名是否实名验证成功了,如果已验证。可以ping一下域名看能不能ping得通,有可能是你没有把域名解析到服务器ip地址上了。

另外,Mac OS可能在配置方面和Windows不太一样。具体问题要具体分析,具体解决了。

11 总结

在部署网站的时候,由于之前对Linux没有经验,网络上看到几篇博客,还是没能部署成功,有些博客比如命令中的单词拼写错误,或者前后不衔接,导致部署一直有问题。

还好在部署的同时去网上学一些Linux基本命令,学到了进入编辑模式,编辑完怎么退出等等。之前看了一篇博客,可能作者默认大家都会了,结果我卡在这里了一下。

总的来说,部署还是比较简单的,第一次没成功的同学不要轻易放弃,多去网上找找答案,努力解决问题,加油!

如果因为看我的博客,在部署过程当中出现任何问题,请私信我或者邮箱联系我,帮助大家一起解决问题。