申请服务器
由于甲骨文的帐号申请失败了,选择用谷歌云的服务器,有了一台服务器就可以24小时响应请求.服务器创建时ip需要选择保留(非临时),这样才不会一直变,DNS才容易解析,但是ip被发现后容易被骇客攻击.
通过本地终端连接服务器:
- 服务器需要先设置一下config文件,允许SSH的几个字段设为yes.
1 2 3 4 5
| sudo vim /etc/ssh/sshd_config PermitRootLogin yes PubkeyAuthentication yes
systemctl restart ssh #重启服务应用更改
|
- 手动将本地的公钥发送到服务器
由于我们还没有用用户名+密码登陆,无法用ssh-copy-id命令发送公钥
需要手动创建一个公钥文件,然后粘贴
本地:
1
| cat ~/.ssh/id_rsa.pub # 获得本地端公钥
|
服务器:
1
| vim ~/.ssh/authorized_keys #粘贴到服务器的共钥文件
|
- 在防火墙设定允许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
|
- 初始化一个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
填入以下内容:
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来管理
- 安装docker
1
| curl -fsSL https://get.docker.com | sh
|
- 安装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; } }
|