最近心血来潮,决定将原本托管在github的hexo静态页面搬运到vps上,这里记录一下如何实现。
参考资料:
- https://www.xiaoweihuang.me/2018/11/05/deploy-hexo-to-vps/
- https://www.cnblogs.com/morethink/p/10867173.html
# 本地SSH配置
Hexo部署是通过git来完成的,而git又是基于ssh连接的,所以需要在本地和服务端进行ssh相关配置。
如果之前没有使用git创建过ssh。需要打开git bash, 执行以下命令:
|
|
这里的邮箱和用户名都是服务器用于记录git提交记录的,然后是本地端生成ssh Key:
|
|
执行完后会在C:\Users\Administrator.ssh目录下生成id_rsa和id_rsa.pub两个文件,其中id_rsa.pub文件里的内容是等会要复制到服务器那里的 可以在git bash执行以下命令获取到id_rsa.pub文件里的内容。也可以直接用记事本之类的文本编辑器打开复制
|
|
# VPS服务器配置
首先我们配置服务器上的SSH key。如果没有ssh,则自行安装。这里不再赘述
|
|
# 配置post-update钩子
Git的钩子脚本位于版本库.git/hooks目录下,当Git执行特定操作时会调用特定的钩子脚本。当版本库通过git init或者git clone创建时,会在.git/hooks目录下创建示例脚本,用户可以参照示例脚本的写法开发适合的钩子脚本。
钩子脚本要设置为可运行,并使用特定的名称。Git提供的示例脚本都带有.sample扩展名,是为了防止被意外运行。如果需要启用相应的钩子脚本,需要对其重命名(去掉.sample扩展名)。
|
|
因此我们需要配置post-update钩子以便可以及时更新我们在VPS上存放Hexo 静态文件的目录。
|
|
注释如下行:
|
|
添加如下代码:
|
|
例如:
|
|
当然,这里直接放在/home目录不太妥当,也可以放在其他文件夹例如/usr/local/static
,更符合对于不同用户的权限分离。但是注意,放在非hexo用户的目录下,需要用chmod +777
给目录配置权限,否则git hock无法访问
# Nginx
nginx作为一个完成度非常高的负载均衡框架,和很多成熟的开源框架一样,大多数功能都可以通过修改配置文件来完成,使用者只需要简单修改一下nginx配置文件,便可以非常轻松的实现比如反向代理,负载均衡这些常用的功能。这里我们仅仅用到最简单的功能,但还是介绍一下比较好
# Nginx基本操作
启动nginx:
|
|
停止nginx:
|
|
重启nginx: 当我们修改了nginx的某些配置,为了使配置生效,我们往往需要重启nginx,同样的,linux下依然有两种方式来重启我们的nginx服务:
|
|
其他命令:检查配置文件,同时显示配置文件目录:
|
|
要注意,如果不是在本地服务器直接调试。在服务器端的各种修改很可能因为DNS解析等各种原因不能及时更新。重新nginx之后切忌多ctrl+f5刷新几次,血的教训。
# Nginx简单配置
/etc/nginx/nginx.conf
是新的默认配置文件,但server块在最新版本中不在这里,而是放到了/etc/nginx/sites-available
中,并在/etc/nginx/sites-enabled
中用软连接控制配置。我们这里比较简单,直接修改/etc/nginx/sites-available
中的default文件中的server块就行
|
|
# 更新Hexo的deploy方式
找到本地Hexo博客的站点配置文件_config.yml,找到以下内容并修改:
|
|
可以看到这里只能上传到github一种。但我们想同时传到vps和github托管,可以吗?直接这样写就行:
|
|
如果你修改了SSH端口,可以使用该方法来访问
|
|
之后直接使用:
|
|
就能同时上传到VPS和github托管了!