部署 Hexo
一、将Hexo部署到gitee上
在本地的hexo博客目录中通过npm安装插件:
1 | sudo cnpm install hexo-deployer-git --save |
修改配置文件_config.yml
:
1 | deploy: |
之后在博客文件夹下执行一系列命令,就会将博客部署到gitee上面:
1 | hexo clean |
然后在gitee上面仓库中操作gitee pages服务即可。
部署成功之后,就可以通过gitee提供的链接访问网站了,链接如下:https://z2huo.gitee.io/hexo-blog/
。
但是遇到了一个问题,网站中所有的css文件都404了,获取不到,从网上面查阅资料了解到,gitee上面部署博客的仓库的名称需要与注册gitee的用户名一致,即z2huo
。
所以新建与gitee用户同名的仓库,重复一遍上述的步骤,所有的css文件就能够访问到了。
这里发现了一个gitee上面的特点:如果仓库名和gitee用户名称一致的话,gitee pages服务提供的网站地址会与其他情况有所不同:
可以看到上面两个截图中网站地址的差异。
二、将Hexo部署到阿里云ECS上
1、前提条件
1.1 登陆服务器为root用户
以下的操作建立在root用户权限之下,如果权限不足请申请root权限或采用sudo
关键字
1.2 为ECS实例分配密钥对
本地连接ECS实例的方式可以选择用户密码,我接下来的操作因为在购买ECS的时候即分配了密钥对,所以在连接ECS实例的时候都通过ssh链接的方式。
新建密钥对并绑定密钥对到ECS实例后,会将公钥保存在服务器的~/.ssh/authorized_keys
中,然后让用户下载私钥到本地,我们放到本地机器的~/.ssh/
目录下。
1.3 本地存在多个密钥对的情况
我本地除了有用来登陆ECS实例的密钥对外,还有登陆github的密钥对,还有登陆gitee的密钥对,可以通过在本地用户home根目录下创建~/.ssh/config
文件来指定需要连接的主机名(IP地址)的证书位置,config文件示例如下:
1 | Host github |
这样在通过ssh
命令连接远程主机时就可以省略一些参数了,比如在没有config的情况下,连接ECS时不通过-i
参数指定证书文件地址,输出如下:
1 | sudo ssh root@111.111.111.111 |
配置了config之后,可以通过如下方式直接连接到ECS实例:
1 | ssh aliyun |
在实际操作中,上面的配置文件中有一个问题,证书文件的位置中,通过~
来代指用户home目录,连接时会有问题,所以将其替换为绝对路径,即/Users/myAccount/.ssh/github
1.4 需要安装git和nginx
需要安装git和nginx,操作如下:
1 | apt install git nginx |
2、在ECS上创建git仓库
建立文件路径。
1 | mkdir /var/repo/ |
修改目录权限,因为我是通过root用户登陆的服务器,所以不需要修改目录的权限。当然,如果新增一个用户来专门用来执行部署hexo博客的操作的话,可以单独新增一个用户,之后修改目录的归属权等,之后的修改目录权限的操作都是在这个前提之下。
1 | chown -R $USER:$USER /var/repo/ |
创建远程git仓库
1 | cd /var/repo/ |
3、配置Nginx托管文件目录
创建文件路径。
1 | mkdir -p /var/www/hexo/ |
修改目录权限。
1 | chown -R $USER:$USER /var/www/hexo |
修改nginx配置文件中的root,指向上面新增的目录。
1 | vim /etc/nginx/nginx.conf |
修改内容如下:
1 | # For more information on configuration, see: |
重启nginx服务
1 | service nginx restart |
此时,就搭建好了nginx服务器,因为修改了root指向的目录为/var/www/hexo
,想要测试的话在该目录下新增index.html文件,之后通过ECS服务器的ip访问即可。
4、创建Git钩子文件
在新增的hexo-blog.git仓库中新增一个钩子文件。
1 | vim /var/repo/hexo-blog.git/hooks/post-receive |
输入文件内容如下:
1 | #!/bin/bash |
保存文件后赋予该文件执行权限。
1 | chmod +x /var/repo/hexo-blog.git/hooks/post-receive |
5、将hexo博客部署到ECS的远程git上
修改本地的hexo博客的_config.yml
文件,最后内容如下:
1 | deploy: |
之后在本地执行hexo博客的部署操作
1 | hexo clean |
6、通过ECS的ip来访问部署的博客
相关链接
OB links
OB tags
#Hexo #SSH #Nginx #Git #建站