树莓派是在一个内网环境中,如果想要在外网访问,可以通过以下2种方式实现:
- 硬件穿透,这里不进行讲解,自行搜索零遁了解,
- 软件穿透,比较成熟的方案有花生壳或者蒲公英,但这两种方案都一些缺点:限制流量,限制带宽,收费高
其他的无所谓,但收费高是绝对接受不了的,所以我决定自己搭建内网穿透,首先需要购买一台带有公网id的服务器,经过一下午的多维度对比,最终我买了一台50块左右的阿里云服务器(轻量应用服务器)
内网穿透
内网穿透在frp - 内网穿透搭建这边篇文章中有详细的搭建过程,这里只给出简单的配置和原理
Server端
1 | [common] |
Client
1 | [blog http] |
这里有2个细节
- 阿里云服务器frp中会监听80端口,当我们访问http://www.juneleo.com时,frp会监听到
- 阿里云服务器端frp的配置中设置了subdomain_host二级域名,在树莓派中设置了subdomain子域名,访问时将使用www.juneleo.com 映射到127.0.0.1:8000
网站部署
博客使用了hexo,可以参考hexo 使用这边文章,我这里直接使用了nginx进行了部署
1 | server { |
代码部署
代码仓库是搭建在树莓派中的,所以这里有3个问题需要解决
- git仓库搭建
- 代码提交
- 代码部署
git仓库搭建
1 | git init --bare blog.git |
代码提交
代码提交是通过ssh提交的,所以我们还frp进行穿透
ssh frp配置
1 | [ssh] |
代码提交
1 | git remote add origin ssh://root@39.106.87.9:7003/root/projects/blog.git |
- root 树莓派root用户
- 39.106.87.9为服务器的ip地址
- 7003为服务器的端口,这个端口会映射到树莓派的22端口
- /root/projects/blog.git 为树莓派的git仓库目录
代码部署
代码提交到仓库后,我们需要将代码checkout到指定的目录,这里使用了hooks中的post-update
1 | vim /root/projects/blog.git/hooks/post-update |