树莓派3b+web服务器frp内网穿透tomcat部署
最近刚好得闲,买了个树莓派3B+,本来是想用作人脸识别测试的,无奈性能卡的那叫一个爽,后来想到自己在阿里云有个空闲的域名,干脆挂个web服务,提供微服务
ddns(跟不上现在网络供应商了,可以忽略此节)
家庭宽带,肯定没有固定ip,利用阿里云提供的接口API来更新域名解析:
详情参考https://blog.****.net/mgsky1/article/details/80466840,给大兄弟大写的赞,很详细!
- 利用python爬取自己外网ip,然后阿里云云解析API(aliyun-python-sdk-core-v3)更新
- 接下来,做个定时任务
# 授执行权限
chmod 755 /你的脚本路径/你的脚本名字.py
# 添加定时任务 2小时执行一次
echo "0 */2 * * * /usr/bin/python3 /你的脚本路径/你的脚本名字.py" > /dev/null 2>&1
# 不输出日志,想要日志的兄弟 >> /你的日志路径/你的日志名字.py".log 2>&1
如果echo添加不了,可以采用
#查看定时任务
sudo crontab -l
#定制定时任务
sudo crontab -e
#如果是第一次进入,会提示你选择vim,nano等编辑工具,看个人喜好选择
#加入
0 */2 * * * python3 /你的脚本路径/你的脚本名字.py > /dev/null 2>&1
- 补充一下
cron运行日志在/var/log/cron.log,树莓派raspbian系统默认没有开启cron日志,执行命令
sudo vim /etc/rsyslog.d/50-default.conf
找到cron.log相关行,将前面注释符#去掉,保存退出,重启rsyslog:
sudo service rsyslog restart
好,折腾到这里恭喜你和我一样白搞了,家里面移动宽带一直都是跟手机绑定也没有去换什么套餐,早两年我还挂过花生壳,做过一个手机远程控制,心想这应该就OK了,进路由器设置个端口映射,可以去装web服务去了。
-
结果
what a u fucking doing ???
然后打了个电话给移动投诉,接电话的小姐姐告诉我现在家庭宽带是不容许有端口映射到外网,以前的对外的动态ip,全部变更成大局域网,我想想也是,现在应用门槛很低,随随便便就能把风花雪月挂到公网上,多么和谐,管制也是该,也就没有为难人家小姐姐了,随便聊了下人生,谈了下理想,那边小姐姐最后都不愿意挂我电话,无奈呀…
frp
内网穿透的工具很多,以前几乎都是无脑的花生壳,因为简单呀,不过看网友兄弟们推荐这个也是傻瓜配置,而且go语言速度,性能没得挑剔,就他了,找找大神们的恩赐, 度娘,必应!!!
感谢[email protected]大神,提供frp serve
http://freenat.win/
- 服务端有大神提供了,接下来我们只要配置对应client连接到服务端,进行端口转发,内网穿透了
[common]
server_addr = freenat.club
#frps服务端地址,下载最新版本的frp,根据大神网站上提示肯定是club后缀的了
server_port = 7000
#frps服务端通讯端口,客户端连接到服务端内网穿透传输数据的端口
privilege_token = frp888
#特权模式**,客户端连接到FRPS服务端的验证**
log_file = frpc.log
#日志存放路径
log_level = debug
#日志记录类别,可选:trace, debug, info, warn, error
log_max_days = 7
#日志保存天数
login_fail_exit = false
#设置为false,frpc连接frps失败后重连,默认为true不重连
protocol = kcp
#KCP协议在弱网环境下传输效率提升明显,但是对frps会有一些额外的流量消耗。服务端须先设置kcp_bind_port = 7000,freenat.bid服务端已设置支持
[http_dsm 这里要换成复杂一点,以免和其他人冲突]
#穿透服务名称,不能和其他已建立的相同,使用公共服务器的建议修改成复杂一点的名称,避免与其他人冲突,很多路由器内置frpc的默认服务名称为[web],很容易很其他人冲突
type = http
#穿透协议类型,可选:tcp,udp,http,https,stcp,xtcp,这个设置之前必须自行搞清楚应该是什么
local_ip = 192.168.1.110
#本地监听IP,可以是本机IP,也可以是本地的局域网内某IP,例如你的局域网是互通的,你可以在路由器上安装frpc,然后local_ip填的群晖的ip,这样也可以把群晖穿透出去
local_port = 8080
#tomcat默认端口,一个字,懒的该了
#本地监听端口,通常有ssh端口22,远程桌面3389等等
use_compression = true
#对传输内容进行压缩,可以有效减小 frpc 与 frps 之间的网络流量,加快流量转发速度,但是会额外消耗一些 cpu 资源
use_encryption = true
#将 frpc 与 frps 之间的通信内容加密传输
custom_domains = *.*.* 你自己的域名
#自定义域名访问穿透服务,一般域名设置了二级域名泛解析以后,这里填*.freenat.bid即可,*自定义,如果不想用域名或者自行搭建frps没有域名,则穿透协议类型选择tcp,见以下tcp部分详解
- 配置一下远程ssh方便以后,你懂滴
[ssh 这里也要换个名字或者加长尾巴]
#proxy name [ssh] is already in use错误
#其它的用户运行过[ssh]命名的子项了并且没关闭frpc进程,所以也要换个名
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6001
- 配置阿里云域名解析
上面
记录值
是大神提供frp serve的固定ip
- 启动frpc
./frpc -c ./frpc.ini
什么显示都没有 看看日志,提示login success就OK了。
- 开机自启动
sudo vi /etc/rc.local
#在exit0前面添加
nohup /frp文件路径/frpc -c /frp文件路径/frpc.ini &
exit0
Tomcat
- 首先当然是检查java环境了,我是安装的最新官方raspbian系统
$ java -version
输出
[email protected]:/etc/init.d $ java -version
java version "1.8.0_65"
Java(TM) SE Runtime Environment (build 1.8.0_65-b17)
Java HotSpot(TM) Client VM (build 25.65-b01, mixed mode)
没有配置java或者用的openjdk的兄弟,网上找找相关文章,很多滴
- 下载tomcat9
# 下载tomcat
wget http://mirrors.hust.edu.cn/apache/tomcat/tomcat-9/v9.0.12/bin/apache-tomcat-9.0.12.tar.gz
#解压
$ tar xvf apache-tomcat-9.0.12.tar.gz
- 创建启动脚本
# 可以启动和停止Tomcat,用命令将Tomcat的启动脚本添加到/ETC/init .d目录中
sudo vi /etc/init.d/tomcat
- init .d文件夹中创建文件Tomcat,文件的内容:
#!/bin/sh
# /etc/init.d/tomcat
# starts the Apache Tomcat service
### BEGIN INIT INFO
# Provides: tomcat
# Required-Start:
# Required-Stop:
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# X-Interactive: true
# Short-Description: Start/stop tomcat application server
### END INIT INFO
export CATALINA_HOME="/home/pi/Tomcat/apache-tomcat-9.0.12"
case "$1" in
start)
if [ -f $CATALINA_HOME/bin/startup.sh ];
then
echo $"Starting Tomcat"
/bin/su pi $CATALINA_HOME/bin/startup.sh
fi
;;
stop)
if [ -f $CATALINA_HOME/bin/shutdown.sh ];
then
echo $"Stopping Tomcat"
/bin/su pi $CATALINA_HOME/bin/shutdown.sh
fi
;;
*)
echo $"Usage: $0 {start|stop}"
exit 1
;;
esac
- 将此文件的权限更新为可执行文件
sudo chmod 755 /etc/init.d/tomcat
- 更新RC.D将tomcat的链接添加到/ETC/RC.D目录中:
sudo update-rc.d tomcat defaults
- 开启服务
sudo /etc/init.d/tomcat start
最后,重启reboot,Tomcat应用服务器现在应该在开机自动启动。