公司开发需求,服务器是部署在本地局域网的,公司网络是电信动态拨号宽带,因此就有个问题,IP会经常变动,公司的域名在阿里云上面,如果IP变动,因此需要经常登录到云解析上面去更改解析IP,这样很浪费时间。其实,阿里云提供了一套ddns云解析方案,根据阿里云提供的sdk就可以完成检测本地ip变化时,就自动更变解析IP。公司目前使用php作为开发环境,因为选择了php版本的云解析sdk。
准备:
1、docker
2、docker-php镜像
3、云解析程序代码 下载地址
第一步 安装docker
安装docker可以使用快捷方式安装,使用阿里云一键安装命令安装
其实也不用安装docker,只需要本地linux系统安装了php软件即可,yum -y install php也行,但是为了保持环境的纯净性,我本人喜欢使用docker安装软件。
ununtu安装命令
curl -sSL http://acs-public-mirror.oss-cn-hangzhou.aliyuncs.com/docker-engine/internet | sh -
centos7安装命令
curl -sSL http://acs-public-mirror.oss-cn-hangzhou.aliyuncs.com/docker-engine/internet | sh -
第二步 拉取php镜像
直接一条命令搞定
docker pull php:5.6-alpine
这次我选了alpine版本的php5.6,alpine是linux的一个衍生分支,比较精简,推荐使用。
第三步 修改云解析代码配置文件
下载代码,修改如下两个文件:
1、修改/Aliyun/AliyunClient.class.php
的$accessKeyId
及$accessKeySecret
参数
这个是阿里云的id和key,这个id和key可以拥有阿里云帐号的所有操作权限。
如图:
accessKeyId和accessKeySecret可以登录阿里云网站,在右上角个人ID出下拉菜单AccessKeys处可以获取
2、修改/config.php
的dnsConfigs
和rdsConfigs
如图:
解析记录ID,可以进入域名解析页面,按F12进入调试页面,获取记录的recordid的,如果没有解析a记录,可以新建一条。
rds记录值为rds数据的前缀。
修改完完之后保存即可。
第四步 运行测试
把代码上传至服务器中,保存在/data目录下,
运行docker创建容器代码
dns解析更新
docker run --rm -v /data/aliyun-ddns:/var/www/html -w /var/www/html php:5.6-alpine php index -dns
rds数据库白名单
docker run --rm -v /data/aliyun-ddns:/var/www/html -w /var/www/html php:5.6-alpine php index -rds
运行后会出现记录更新成功的提示,表示更新成功。
第五步 写入定时计划
crontab -e
# 每五分钟更新阿里云解析和数据库白名单
*/5 * * * * docker run --rm -v /data/aliyun-ddns:/var/www/html -w /var/www/html php:5.6-alpine php index -dns
*/5 * * * * docker run --rm -v /data/aliyun-ddns:/var/www/html -w /var/www/html php:5.6-alpine php index -rds
至此,所有操作结束!
ps:代码原作者 http://flc.ren