1:前言
在购买了树莓派之后,我一直在找寻它的用处,最近想学基于Python的网站后端框架Django,而树莓派以linux为操作系统,有天生作为网站服务器的优点。以下列举部分。
- 相比于直接购买高配置VPS,使用树莓派+廉价低配VPS做内网穿透,更加划算。
- 相比于使用windows作为网站服务器联系,树莓派可以保持24*7不宕机,避免每次开启电脑都要重新运行服务器程序的麻烦。
开始之前,需要说明的一些软硬件配置。
- 4B+树莓派,4g内存+32g内存卡
- 一台低配置带ipv4地址的VPS。本人使用Ubuntu系统
- 一个域名,需要将A记录解析到VPS的ipv4地址上。非必须,可直接用vps的ip地址访问也是可以的。
2:树莓派上搭建Django服务器
安装Django教程:《Django安装》
在树莓派上安装Django。
在使用python3 manage.py runserver 0.0.0.0:8000
打开服务后,
在shell终端上使用
是可以访问新建的网站的。
但是,使用树莓派内网ip:8000在相同局域网下的笔记本,无法访问网站,必须修改项目配置文件。后期可修改回来,因为我们需要在树莓派上也安装nginx以作为生产环境,现在只是测试。修改项目下的setting.py文件
此时,在笔记本上访问树莓派上面的网站,应该已经能够访问了。
3:内网穿透
为了让外网的人,能够使用ip地址或者域名,访问到树莓派上的网站,需要做内网穿透,首先,需要让VPS能够访问到树莓派。
使用花生壳之类的软件也能实现内网穿透,且不用VPS,但是这类软件收费比较高,所以我们可以用VPS自己搞一个内网穿透。
使用p2p组网的内网穿透软件,比如n2n、zerotier、frp。在github上都能搜得到。frp是一个端口转发的软件,不需要借助别人提供的服务器来做导航,如果只是做网站是非常推荐的,因为这不设及后面讲的nginx做反向代理的步骤,个人是很推荐的。但,如果你有多个VPS或者多个电脑,想组成局域网,建议使用zerotier。我这里使用的是zerotier,因为它配置比较简单。并在此基础上做了网站的反向代理,以实现外网访问内网,和frp直接做端口转发的原理是不同的。
我们需要分别在树莓派和vps上安装zerotier。
然后在zerotier官网创建一个账号,并创建一个网络。可参考教程:
建好网络后,获得十六位网络码
然后,在树莓派和vps输入命令
即可加入此网络
然后回到zerotier官网,管理这两个网络,让他们之间能够互相ping通。此间步骤比较多,需要耐心自学。
内网穿透实现后,在vps上不仅应该能够ping通树莓派虚拟局域网分配的ip,而且使用虚拟局域网ip:端口,应该能够访问到树莓派上的网站。
在vps使用
访问。获取html代码,则内网穿透可以访问网站了。
4:Nginx反向代理
为了让所有外部的人,都能够通过域名或者vps公网ip访问到树莓派的网站,需要在vps上安装nginx,作反向代理。
原理大概是,外部用户,访问vps的ip,浏览器默认不输入端口则访问80端口,http对应80,https对应443。比如用户输入http://x.x.x.x
或者http://example.com
则默认访问vps的80端口。
我们需要为vps开放80端口,并将80端口的访问请求转到树莓派的网站端口。
安装nginx
配置nginx,新建配置文件,并配置nginx
在文件中输入配置
保存退出。
这样通过域名访问vps就能将请求转给树莓派了。外网就能够访问到树莓派了。
No comments:
Post a Comment