如何通过命令行shell脚本自动创建MAMP Pro虚拟主机?

时间:2015-11-17 09:07:52

标签: plist mamp vhosts mamp-pro

我正在编写一个脚本来在Mamp Pro中创建虚拟主机。我希望它们被创建并显示在我通过GUI手动创建的常规GUI旁边的GUI中。我在SO上发现了以下问题:

到目前为止,我的调查结果如下:

  • 我发现出现在MAMP Pro GUI中的主机位于:〜/ Library / Application \ Support / appsolute / MAMP \ PRO / settings3.plist ;我已经尝试过编辑它,但我似乎无法使用命令PlistBuddy -c 'print ":virtualHosts"' settings3.plist获得正确的条目,其中包含 Print:Entry,“:virtualHosts”,不存在

  • 从我上面列出的第二个问题中,我发现我可以通过GUI编辑httpd.conf文件(一个在用户库中找到,一个在根库中)。

    < / LI>
  • 包含所有IP地址的hosts文件位于/ private / etc / hosts

问题已经死了,尽管我评论了最新的一个问题,要求更新他最终如何解决他的脚本问题。

最后,我可以轻松地将值添加到hosts文件和vhosts.conf文件中,以使网站正常工作。我唯一的问题是让它与MAMP Pro GUI中的其他虚拟主机一起显示在列表中。

更新:经过进一步调查和实验,我意识到创建虚拟主机的过程;当我第一次通过GUI创建主机时,settings3.plist文件会更新,当我点击“保存”以保存更改时,主机和httpd.conf文件会相应更新。我了解settings3.plist可以通过plutil -convert xml1 -o - settings3.plist > test.txt转换为XML,然后进行编辑并通过plutil -convert binary -o - test.txt > settings3.plist将其转换回二进制文件。

我的问题在于,即使我了解了CP $ UID如何在XML格式中工作,我也无法创建一个脚本来解决概念,通过列表检查值的位置,以及然后相应地输入值。我甚至在这里问了一个问题:https://stackoverflow.com/q/33775025/1934402

1 个答案:

答案 0 :(得分:2)

Automatic Virtual Hosts with MAMP Pro?中提供的解决方案是指MAMP PRO版本2.x,其中主机配置保存在settings.plist中,这是一个 XML格式属性列表文件,而在MAMP PRO中版本3.x主机设置存储在settings3.plist中,这是二进制格式属性列表文件

即使采用这种格式,您也应该能够:

/usr/libexec/PlistBuddy -c Print settings3.plist

并仍然获取该文件的内容。您的问题源于virtualHosts不再存在,您将通过运行上述命令看到。上面的命令输出对于理解plist文件的结构没有多大帮助,所以你可以运行:

plutil -convert xml1 -o - settings3.plist > ~/settings3.plist.xml

然后计算出~/settings3.plist.xml的结构,以找出PlistBuddy命令中要使用的密钥。最好查看plistPlistBuddy的手册页。请注意,即使在xml文件中,键名也已更改,结构也不清晰。

我希望这有帮助。如果我有完整的配方来编辑主机细节,我会进一步调查并修改这个答案。