分享一个为需要 DDNS 的 Laravel 项目服务的 Package

自制了一个 Package,利用 DNSPod 的 API 实现了 DDNS,如果你的 Laravel 项目需要 DDNS,只需简单几步就能实现啦~
因为 DNSPod 的 API 有诸多限制:

  • 请求需使用指定 UA
  • 如果1小时之内,提交了超过5次没有任何变动的记录修改请求,该记录会被系统锁定1小时,不允许再次修改,所以在开发和测试的过程中,请自行处理IP变动,仅在本地IP发生变动的情况下才调用本接口。

因此 Package 中使用 Cache 缓存域名解析记录,每次判断 IP 是否发生改变,真正改变时才去调用更新域名解析的 API。

安装

  1. 安装扩展包:

    composer require seekerliu/laravel-ddns:dev-master
  2. 注册 DNSPod 账户,并获取 ID 及 TOKEN,方法请参考: https://support.dnspod.cn/Kb/showarticle/t...

  3. 你的服务器上需要需要开启 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
  4. 默认每分钟同步一次

配置

Laravel 5.5 中有 Package Discover 功能,故无需进行第 1 步。如未起作用,可手动执行 php artisan package:discover 命令。

  1. config/app.php 中添加此行:

    'providers' => [
      //...
    
      Seekerliu\DynamicDns\ServiceProvider::class,
    ],
  2. 将下面的内容放到你的 .env 文件中:

    DDNS_DNSPOD_ID=
    DDNS_DNSPOD_TOKEN=
    DDNS_DOMAIN=
    DDNS_SUB_DOMAIN=
    DDNS_DNSPOD_UA="Laravel DDNS Client/0.0.1 (seekerliu@vip.qq.com)"
    DDNS_DNSPOD_URI=https://dnsapi.cn/
    DDNS_GET_IP_URI=https://seekerliu.com/getip.php
    DDNS_ENABLE_LOG=true
  3. 配置 .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 (seekerliu@vip.qq.com)"
    # 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
原创。 所有 Laravel 文章均已收录至 Github laravel-tips 项目。
本帖已被设为精华帖!
本帖由 Summer 于 6年前 加精
Ίκαρος
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!