首页 借助 DnsAgent,让 HomeStead 快捷实现多站点设置
文章
取消

借助 DnsAgent,让 HomeStead 快捷实现多站点设置

  众所周知,HomeStead可以实现多站点的功能,但是每次都需要修改本机的hosts文件,实在是太不方便了,借助DnsAgent的域名解析功能,轻松实现多站点管理。

  首先,先熟悉下HomeStead的配置文件。

HomeStead配置

  使用的Homestead版本号v8.2.0

  在执行了init.sh之后,得到了名为Homestead.yaml的配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
---
ip: "192.168.10.10"
memory: 2048
cpus: 1
provider: virtualbox

authorize: ~/.ssh/id_rsa.pub

keys:
    - ~/.ssh/id_rsa

folders:
    - map: ~/code
      to: /home/vagrant/code

sites:
    - map: homestead.test
      to: /home/vagrant/code/public

databases:
    - homestead

# ports:
#     - send: 50000
#       to: 5000
#     - send: 7777
#       to: 777
#       protocol: udp

# blackfire:
#     - id: foo
#       token: bar
#       client-id: foo
#       client-token: bar

# zray:
#  If you've already freely registered Z-Ray, you can place the token here.
#     - email: foo@bar.com
#       token: foo
#  Don't forget to ensure that you have 'zray: "true"' for your site.

  ip是虚拟机的ip地址,默认是192.168.10.10。memory是虚拟机的内存,默认是2048 (KB)。cpus是虚拟机的cpu核数,默认是单核。provider是虚拟机用什么来提供,默认是virtualbox,所以安装Homestead前要把virtualbox装好。authorize是公钥,keys是私钥,在Windows平台,可以使用git bash来生成。这里的私钥在虚拟机成功启动后,会复制虚拟机的~/.ssh/id_rsa目录下。

  folders是主机与虚拟机之间的目录映射。map是主机的目录,这个短波浪线~在Windows平台是C:\Users\john,john是目前Windows登录账户的用户名。

  sites是虚拟机nginx站点配置文件,每一个map-to对应一个/etc/nginx/sites-enabled/目录配置文件。map就是配置文件名,也是配置文件里的server_name项,to对应配置文件里的root项。

  databases是虚拟机启动后自动生成的数据库,可以在下面添加多个数据库。

  配置修改之后,执行

1
homestead provision

  使配置生效。

DnsAgent

  使用的DnsAgent版本号v1.6.5781

  下载releases页面的压缩包,解压后有这些文件

ARSoft.Tools.Net.dll* ‘Install as Service.bat’ ‘Uninstall Service.bat’ rules.cfg DNSAgent.exe* Newtonsoft.Json.dll* options.cfg

  主要是rules.cfg和options.cfg两个配置文件,接下来简单介绍下。

rules.cfg

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
[
    {
        "Pattern": "^(.*\\.mydomain\\.com)|((.*\\.)?(yourdomain|hisdomain)\\.com)$",
        "Address": "112.223.221.26"
    },
    {
        "Pattern": "^www\\.google\\.com\\.hk$",
        "Address": "www.google.com",
        "NameServer": "8.8.4.4",
        "CompressionMutation": true
    },
    {
        "Pattern": "^(.*)\\.mysuffix\\.com$",
        "Address": "{1}"
    },
    {
        "Pattern": "^www\\.google\\.com\\.tw$",
        "Address": "www.google.com",
        "NameServer": "127.0.0.1"
    },
    {
        "Pattern": "^www\\.google\\.co\\.jp$",
        "Address": "www.google.com"
    },
    {
        "Pattern": "^www\\.google\\.cn$",
        "NameServer": "114.114.114.114"
    },
    {
        "Pattern": "^.*\\.cn$",
        "NameServer": "119.29.29.29",
        "UseHttpQuery": true,
        "QueryTimeout": 1000
    }
]

  Pattern是匹配的网址,支持使用正则表达式

  Address是解析到的ip地址或其他网址。

  NameServer是DNS服务器。

options.cfg

1
2
3
4
5
6
7
8
9
10
11
{
    "HideOnStart": false,
    "ListenOn": "127.0.0.1:53, [::1]",
    "DefaultNameServer": "119.29.29.29",
    "UseHttpQuery": false,
    "QueryTimeout": 4000,
    "CompressionMutation": false,
    "CacheResponse": true,
    "CacheAge": 86400,
    "NetworkWhitelist": null
}

  HideOnStart是true时,软件启动之后的命令行窗口会隐藏。

  ListenOn是监听的端口。

  DefaultNameServer是默认DNS服务器地址。

  CacheResponse是true时,会从缓存中读取解析记录

更多配置解释见官方文档

  在使用Homestead默认使用的域名是http://homestead.test,如果要是域名解析成功,需要修改电脑的hosts文件,增加一个站点就需要修改一次,很麻烦。为此,可以在rules.cfg配置文件中增加一条

1
2
3
4
{
    "Pattern": "^.*\\.test$",
    "Address": "192.168.10.10"
}

  这条配置可以使test结尾的顶级域名都解析到192.168.10.10上,避免了多个站点配置的麻烦。另外,双击Install as Service.bat还可以将DnsAgent加入系统服务,不用每次都启动DnsAgent,修改配置后,将服务重启下就可以了。

参考链接

https://laravelacademy.org/post/19428.html

本文由作者按照 CC BY 4.0 进行授权