申请服务器

由于甲骨文的帐号申请失败了,选择用谷歌云的服务器,有了一台服务器就可以24小时响应请求.服务器创建时ip需要选择保留(非临时),这样才不会一直变,DNS才容易解析,但是ip被发现后容易被骇客攻击.
通过本地终端连接服务器:

  1. 服务器需要先设置一下config文件,允许SSH的几个字段设为yes.
1
2
3
4
5
sudo vim /etc/ssh/sshd_config
PermitRootLogin yes
PubkeyAuthentication yes

systemctl restart ssh #重启服务应用更改
  1. 手动将本地的公钥发送到服务器

由于我们还没有用用户名+密码登陆,无法用ssh-copy-id命令发送公钥
需要手动创建一个公钥文件,然后粘贴

本地:

1
cat ~/.ssh/id_rsa.pub # 获得本地端公钥

服务器:

1
vim ~/.ssh/authorized_keys #粘贴到服务器的共钥文件
  1. 在防火墙设定允许22端口流量的ip地址范围,保证连接安全

然后就可以通过ssh命令远程连接服务器终端啦

购买域名

购买自己喜欢的域名.建议购买好的顶级域名,容易被解析到.

选择DNS将自己的域名与服务器地址绑定

可以使用cloudfare或者域名购买商提供的DNS服务,添加A类型的规则,将域名和服务器ip绑定的消息广播到全球DNS,且DNS商应当给域名注册证书.

可以在www.whatsmydns.net中查看DNS全球解析情况、在www.sslshopper.com/ssl-checker.html下查看证书情况

安装博客软件和git

1.初始化一个完整的hexo

1
2
3
4
5
6
7
8
9
10
11
12
sudo apt-get update
sudo apt-get install nodejs npm
sudo npm install -g hexo-cli


sudo mkdir -p /var/www/hexo-site
sudo chown -R www-data:www-data /var/www/hexo-site
sudo chmod -R 755 /var/www/hexo-site
cd /var/www/hexo-site
hexo init
npm install

  1. 初始化一个git仓库
1
git init --bare /var/www/hexo-site.git

3.编辑一个钩子来接受git

1
2
3
4
5
6
7
sudo nano /var/www/hexo-site.git/hooks/post-receive

填入以下内容:
#!/bin/bash
GIT_WORK_TREE=/var/www/hexo-site git checkout -f

sudo chmod +x /var/www/hexo-site.git/hooks/post-receive

3.本地端设定.config下的deploy字端,实现git.

1
2
3
4
deploy:
- type: 'git'
repo: root@35.212.191.65:/var/www/hexo-site.git
branch: master

设置反向代理

由于手动设置反向代理有点麻烦,我们可以用第三方的有前端界面的docker来管理

  1. 安装docker
1
curl -fsSL https://get.docker.com | sh
  1. 安装Nginx Proxy Manager
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
docker run -d \
--name=npm \
-p 80:80 \
-p 81:81 \
-p 443:443 \
-v /home/npm/data:/data \
-v /home/npm/letsencrypt:/etc/letsencrypt \
--restart=always \
jc21/nginx-proxy-manager:latest
```

3. 防火墙开放80、81、443、4000端口
通过ufw或者使用vps运营商的防火墙来开放端口

4. 通过服务器ip:81来访问Nginx Proxy Manager的前端
用户:admin@example.com
密码:changeme

5.设置Proxy Hosts
填写域名(比如buweihao.pw),服务器地址,反向代理端口(比如4000),Websokets Support打开,SSL选择同意申请.

6.安装nginx和配置
nginx可以帮我们渲染前端,我们只需要将hexo的静态文件deploy到云端而不需要一个完整的hexo启动在服务器

```shell
sudo apt install nginx
sudo nano /etc/nginx/sites-available/default #

server {
listen 4000;#80改为我们需要使用的端口,比如前面防火墙开通的4000
server_name your_domain.com; # 替换为你的域名或IP地址

location / {
root /home/your_user/my-hexo-blog/public; # 替换为Hexo生成的静态文件目录
index index.html;
}
}