GitHub Action + Hexo 部署到服务器

在本地电脑生成 ssh key

创建 git 用户

设置 ssh

把本机的 id_isa.pub 内容复制到这里:

/home/git/.ssh/authorized_keys

如果通过 ssh 登录仍需要密码的解决方法

找到并修改 /etc/ssh/sshd_config 文件:

#禁用root账户登录,如果是用root用户登录请开启
PermitRootLogin yes

# 是否让 sshd 去检查用户家目录或相关档案的权限数据,
# 这是为了担心使用者将某些重要档案的权限设错,可能会导致一些问题所致。
# 例如使用者的 ~.ssh/ 权限设错时,某些特殊情况下会不许用户登入
StrictModes no

# 是否允许用户自行使用成对的密钥系统进行登入行为,仅针对 version 2。
# 至于自制的公钥数据就放置于用户家目录下的 .ssh/authorized_keys 内
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys

# 有了证书登录了,就禁用密码登录。
PasswordAuthentication no

然后重启 sshd 服务

网站路径

创建网站,以 /www/wwwroot/xaoxuu.github.io 为例,/www/wwwroot/xaoxuu.github.io 的权限要改成 777 并且所有者为 www 才可以访问。

GitHub Action

设置 webhook

post-receive
#!/bin/sh
WEBROOT=/www/wwwroot/xaoxuu.github.io
git --work-tree=$WEBROOT checkout -f master

把上述的 post-receive 文件放在这里:

/home/git/xxx.git/hooks/post-receive

/www/wwwroot/xaoxuu.github.io 的权限要改成 777 才行

GitLab

把上述的 post-receive 文件放在这里:

/var/opt/gitlab/git-data/repositories/root/xxx.git/custom_hooks/post-receive

GitLab 的 ssh 能记住密钥, hook 也正常,缺点就是每个月多花10块钱满足 GitLab 最低配置要求。

404

打开 nginx 配置文件,拉到最后,看到:

include /www/server/panel/vhost/nginx/*.conf;

然后根据这个路径找到自定义的配置文件:

/www/server/panel/vhost/nginx/xaoxuu.com.conf

在其中添加如下代码就可以了:

server
{
...
fastcgi_intercept_errors on;
error_page 404 /404.html;
location = /404.html {
root /www/wwwroot/xaoxuu.github.io;
}
...
}

宝塔相关

关闭面板SSL

如果不小心打开了SSL且无法访问,可以在云服务商那边登录,输入这行命令关闭面板SSL: