自制了一个 Laravel 的 DDNS 工具, 利用 DNSPod 的 API 实现了 DDNS,可以用来代替花生壳之类的软件。
composer require seekerliu/laravel-ddns:dev-master
注册 DNSPod 账户,并获取 ID 及 TOKEN,方法请参考: https://support.dnspod.cn/Kb/showarticle/tsid/227/
你的服务器上需要需要开启 Laravel 调度计划:
Linux:
$ crontab -e
//添加下列一行:
* * * * * /path-to-php/php /path-to-your-project/artisan schedule:run >> /dev/null 2>&1
MacOS 可以在 Terminal 中使用下面命令临时代替,Ctrl + C
可终止:
while true; do php artisan schedule:run; sleep 60; done
Laravel 5.5 中有
Package Discover
功能,故无需进行第 1 步。如未起作用,可手动执行php artisan package:discover
命令。
config/app.php
中添加此行: 'providers' => [
//...
Seekerliu\DynamicDns\ServiceProvider::class,
],
.env
文件中:DDNS_DNSPOD_ID=
DDNS_DNSPOD_TOKEN=
DDNS_DOMAIN=
DDNS_SUB_DOMAIN=
DDNS_DNSPOD_UA="Laravel DDNS Client/0.0.1 ([email protected])"
DDNS_DNSPOD_URI=https://dnsapi.cn/
DDNS_GET_IP_URI=https://seekerliu.com/getip.php
DDNS_ENABLE_LOG=true
.env
文件:# 你的 DNSPOD ID,必填
DDNS_DNSPOD_ID=
# 你的 DNSPOD TOKEN,必填
DDNS_DNSPOD_TOKEN=
# 你在 DNSPOD 解析的根域名,例如: seekerliu.com ,必填
DDNS_DOMAIN=
# 你在 DNSPOD 解析的二级域名,例如:blog,必填
DDNS_SUB_DOMAIN=
# 访问 DNSPOD API 需要的 UA,不用改
DDNS_DNSPOD_UA="Laravel DDNS Client/0.0.1 ([email protected])"
# DNSPOD API URI,不用改
DDNS_DNSPOD_URI=https://dnsapi.cn/
# 获取 json 格式的公网 ip,可以换成自己的,源码在 getip.php 中
DDNS_GET_IP_URI=https://seekerliu.com/getip.php
# 是否开启日志
DDNS_ENABLE_LOG=true
1
bazingaterry 2017-09-30 02:11:06 +08:00 via iPhone
杀鸡用原子弹?
|
2
ioREQcom 2017-09-30 02:38:03 +08:00
最烦这种一看了 laravel 就上来分享,以为自己很牛逼的人了,看我怎么一行 shell 代码搞定,专治吹牛逼的
http://icms.factj.com/article.php?id=2352 |
3
ioREQcom 2017-09-30 02:42:58 +08:00 1
还有这个写的也不错
http://www.anrip.com/post/872 |
4
airycanon 2017-09-30 08:41:22 +08:00
楼上说出了我的心声。
|
5
cappuccinos 2017-09-30 08:44:59 +08:00 via iPhone
不错。
|
6
ihciah 2017-09-30 09:22:25 +08:00
借楼打广告: https://github.com/ihciah/simple-ddns
(如果并发不算大&&不打算用第三方服务... |
7
simaguo 2017-09-30 12:11:05 +08:00
DDNS 是什么,用来解决什么具体问题?小白不懂求轻拍
|
9
seekerliu OP @bazingaterry 也不算原子弹了~ 以前做过一个 composer 的 package,这次改装成 Laravel 专用的一个。对于我这种用 Laravel 做的项目,需要 DDNS 的时候,只需一个命令 composer require ... 就解决了问题,不用再配置别的了
|
11
seekerliu OP @simaguo 就是动态域名解析,比如家里的宽带 IP 经常变化,那么可以用一些软件监测自家 IP 的变化,如果变了,就把新 IP 解析到指定的域名上。
|
12
seekerliu OP @bazingaterry 所以,不是说做 DDNS 需要用到 Laravel,而是给 Laravel 应用提供的一个 DDNS 工具。
|
13
bazingaterry 2017-10-01 14:20:04 +08:00 via iPhone
@seekerliu 原来如此,是我误会了,见谅。
|
14
seekerliu OP @ioREQcom 不知道你有没有真正用过 DNSPod,请求 API 的时候,DNSPod 要求使用指定格式的 UA。你的代码里可没有,代码用不了。
|
15
seekerliu OP @ioREQcom 另外 DNSPod 的更新域名 IP 这个 API 是有请求次数限制的,不做缓存,一会儿就 500 了。所以我的 package 里加了解析列表缓存,只有自己 IP 有变动的时候才去更新。curl 谁不会用。
|
16
seekerliu OP @bazingaterry 怪我怪我~ 正文没写清楚。
|
18
seekerliu OP @cappuccinos 谢谢~
|
19
rekey 2017-10-02 01:26:39 +08:00
宽带通这种没有公网 ip 的解决一发???
|