用树莓派搭建自己的服务器(可公网访问) 您所在的位置:网站首页 树莓派当服务器用 用树莓派搭建自己的服务器(可公网访问)

用树莓派搭建自己的服务器(可公网访问)

2024-07-14 18:29| 来源: 网络整理| 查看: 265

     以前的一些尝试:

       想过很多种外网访问树莓派的方案,比如说ngrok 反向代理什么的,但是免费的反向代理服务速度太慢太不稳定了,而且其本质就是将端口转发到另一台服务器上,然后我们访问处于公网的该服务器对应端口,与处在局域网的树莓派通信。如果是为了搭建服务器而去租另一台服务器,就有点本末倒置了,所以反向代理方案,pass!

        其实很多路由器是自带端口转发的功能的,你可以把局域网的设备进行mac,ip的绑定,然后转发你要转发的局域网ip和端口到公网ip上,你就可以通过公网ip和对应端口,访问你的局域网设备了。但是问题在于,我们普通家庭的ip都是动态ip,由运营商的DHCP服务器动态分配,每隔一段时间,或者路由器重启,公网ip都会发生改变。所以如果你想访问你的局域网设备,就必须知道你家里的公网ip是多少,非常麻烦。然后我天真的想到了申请电信的固定ip,公网ip固定了,那只要用路由器的端口转发功能把树莓派的端口映射到公网ip上就可以直接访问树莓派了。但是申请固定ip远比我想象的要麻烦,而且还要额外的费用,

打扰了。

    DDNS的大致原理介绍:

       最后了解到DDNS(动态域名解析服务)的技术,真正解决了我的问题。我们知道DNS的大致原理是,购买一个域名,将域名和公网ip进行绑定,访问主机时,ip地址写对于的域名就可以了,dns服务器会把这个域名自动解析成对应的ip地址。而DDNS:Dynamic Domain Name Server,动态域名解析服务,就是通过调用域名提供商的对于api,用脚本定时去获取某个域名对应的ip,如果和本地的公网IP不一致了,就进行修改,这样你的域名就可以和你的公网ip保持一致了。

 

         配置过程

  1材料准备:

   树莓派一台,带有端口转发功能的路由器一台,一个域名(我买的是阿里云的域名)

    2服务搭建:

   首先在路由器里进行设置,将树莓派的局域网ip固定下来,然后设置端口转发,将22端口转发给虚拟主机的21端口(22端口是文件传输端口,反正我主要是用来进行ssh连接),这个时候你已经可以用公网ip在putty上对你的树莓派进行ssh连接了。接下去就是购买域名,去阿里云注册一个域名,然后加入一条解析,因为等下我们调用的api不支持增加记录,只支持修改解析记录,所以需要一条默认的记录。做完这一步,只要你的公网ip没有马上变化,你已经可以用这个域名进行一些连接了。加下去就是写python脚本,调用api,进行ip的修改,这个网上教程很多,我也是直接用了现成的脚本,给大家分享一下吧,只要把config.json修改成你对应的数据就行了(accessid ,accesspasswd ,一级域名,二级域名,解析方式:默认A),修改完之后,运行语句: python3 DDNS.py就可以修改你的解析了。

    但是这样还不够,需要让这个修改解析的脚本定时去运行,所以我用了crontab来设置定时运行,树莓派好像是自带crontab的,在ubuntu和debian上的一些简单命令是:

 

安装:apt-get install cron启动:service cron start重启:service cron restart停止:service cron stop检查状态:service cron status查询cron可用的命令:service cron检查Cronta工具是否安装:crontab -l增加定时启动记录:crontab -e

增加记录的方式也很简单,格式是    m h dom mon dow command

m: 表示分钟,范围0到59 h:表示小时,范围0到23 dom:表示日,范围1到31 mon:表示月,范围1到12 dow:表示星期,范围0到7,0和7都是星期日 command:表示命令

比如每10分钟运行一次脚本的命令就是:

*/10 * * * *  cmd命令

 

这里非常坑的问题是,多一个或者少一个空格空格都可能会导致语法错误,建议先在命令行执行一下试试,成功的话就复制粘贴过去。

 

还有一个就是查看crontab服务是否是开机自启动,并且添加自启动、

 

树莓派默认系统下设置crontab【定时任务】为开机启动和开机不启动

 

systemctl is-enabled cron.service  --- 查看crond是否为开机自启动

 

systemctl enable cron.service  --- 将服务设置为开启启动

 

systemctl disable cron.service  --- 关闭服务开机自启动

 关于DDNS的python脚本,我暂时还没有放到我的gitee上,需要的联系我。

完成了以上的工作我们就实现了树莓派服务器的搭建,虽然性能是远远不够的,但是拿来玩一玩还可以可以的,毕竟一个域名一年才8块钱,真香。

 

 

   

   



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有