考虑到AWS即将到期,申请了Github的学生开发包薅了Digital Ocean的50刀,用着最便宜的机器挂着博客。
简单记一下部署过程。
建立一个Droplets
略过Digital Ocean注册等等步骤,直接进行新建Droplets(实例)。
选用了如下机型:旧金山2区 | Ubuntu 18.04.3 (LTS) x64 | 1 GB / 1 CPU | 25 GB SSD disk | 1000 GB transfer
勾选添加在账号的SSH公钥,直接嵌入在新实例中。
创建之后,因为使用了SSHKey创建实例,点击Reset root password
,重置一个root密码。
在控制台Console用邮箱发来的重置密钥登录,之后输入一遍重置密钥两遍新密钥即可设定新密码。
使用Windows Terminal SSH登录
正好win的新Terminal还挺好看的,试着在里面加了一个ssh连接配置,前置需要开启电脑的OpenSSH客户端。
打开Terminal设置,直接进入设置文件setting.json
,往下拉,在"list"
下面新增如下内容:
1 | { |
服务端配置
默认都在root用户下进行操作。
创建目录
创建如下两个目录
/root/hexoBlog
博客主目录/root/hexoBlog/www
nginx根目录
nginx相关配置
安装nginx
1 | apt install nginx |
修改nginx根目录
1 | vim /etc/nginx/sites-available/default |
直接修改default文件,将root目录改为上面创建的/root/hexoBlog/www
修改以后检查一次配置文件
1 | nginx -t |
修改文件夹权限
1 | chmod a+r /root |
确保到nginx根目录的路径上每个文件夹都有555以上的权限
重启nginx
1 | service nginx restart |
nginx配置结束
为了确认是否正常工作,可以在/root/hexoBlog/www
下面随便放个index.html再重启,直接在浏览器内访问IP查看能否加载页面。
安装node.js
两行搞定
1 | curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash - |
第一行的setup_12.x
可以换成需要的版本号。
git相关配置
安装git
1 | apt-get install git |
创建一个git用户
用于本地push用
1 | adduser git |
初始化git文件夹
1 | git init --bare blog.git |
/root/hexoBlog/blog.git
git仓库位置,之后本地hexo推送的内容都在这里
配置 hooks
1 | vim /root/hexoBlog/blog.git/hooks/post-receive |
写入并保存如下内容:
1 | #!/bin/sh |
这个hook的目的是将每次push上去的内容从仓库挪到nginx根目录内
改文件权限
1 | chmod +x post-receive |
修改git仓库所有权
交给git用户
1 | chown -R git:git blog.git |
git用户的SSH设置
虽然git用户可以在push的时候输入密码登录,但是太麻烦了,我肯定还是想敲完hexo d -g
就立马切出去干点别的,所以得给git用户也配置一个SSH Key。
(在配置文件/etc/ssh/sshd_config
内,我把使用密码登录关掉了,强制SSH使用私钥进行连接)
1 | PasswordAuthentication no |
由于Digital Ocean嵌入的公钥位置在/root/.ssh/authorized_keys
内,为了让其它用户也能用私钥登录,需要在其它用户的目录内也新建一个authorized_keys
文件填写公钥
切换到git用户,在/home/git
下面新建/.ssh/authorized_keys
完整目录结构如下:
1 | home |
在authorized_keys里面填写公钥,SSH默认使用id_rsa
作为私钥,因此把id_rsa.pub
里面的内容复制进去。
禁用 git 用户的 shell 登录权限
1 | vim /etc/passwd |
将git:x:1001:1001:,,,:/home/git:/bin/bash
改为git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell
本地配置
安装hexo
略过
设置deploy
打开hexo的_config.yml
,修改deploy如下:
1 | deploy: |
测试git的SSH连接
1 | ssh -t git@IP地址 |
连接上后会因为被禁止shell登录强制退出,但是能正常连上就行了。
域名和Cloudflare
由于是从aws搬来的,域名服务商那边的解析已经设置成Cloudflare了,这里重新写一次。
修改NS服务器
首先把域名服务商的DNS解析服务器修改为Cloudflare提供的NS地址,例如
1 | asa.ns.cloudflare.com |
二级域名设置
由于本博客是挂在wsswms.dev下面的blog子域名,因此在Cloudflare里添加一条A记录,名称为blog,内容就设定成服务器IP即可。
缓存
因为博客调试时页面内容变化较大,为了能及时显示,需要清理Cloudflare的缓存或者直接关闭缓存。
Cloudflare的域名首页开启开发模式
;如果需要强制刷新缓存时,进入缓存选项卡选择清除所有内容
。
其它
新版NexT主题自定义css的设置
新版的next修改了自定义css的位置,网上很多关于背景图片/透明度等等的设置在新版中需要做一些改动。
首先打开next主题的_config.yml
文件,在custom_file_path
中启用style: source/_data/styles.styl
这一行。
这里的source指的是hexo博客的source目录,按照默认路径在source/_data/styles.styl
位置创建文件,其功能和旧版中的themes/next/source/css/_custom/custom.styl
是一样的,以修改背景图片为例,在styles.styl
添加如下部分即可:
1 | body { |