【问题标题】:How to automate MAMP Pro virtual host creation through a command-line shell script?如何通过命令行 shell 脚本自动创建 MAMP Pro 虚拟主机?
【发布时间】:2016-02-18 14:04:55
【问题描述】:

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

到目前为止,这是我的发现:

  • 我发现 MAMP Pro GUI 中出现的主机位于:~/Library/Application\ Support/appsolute/MAMP\ PRO/settings3.plist;我试过编辑它,但我似乎无法使用命令PlistBuddy -c 'print ":virtualHosts"' settings3.plist 正确输入条目,该命令显示 Print: Entry, ":virtualHosts", Does Not Exist

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

  • 包含所有 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

【问题讨论】:

  • 确保您使用的是文件 ~/Library/Application Support/appsolute/MAMP PRO/settings.plist,即检查您使用的是正确的 plist 文件。在我的带有 MAMP PRO 2.2 的系统(Mac OS X 10.11.1 El Capitan)上,文件是 settings.plist,我在Automatic Virtual Hosts with MAMP Pro? 中的回答中的命令可以正常工作。您使用的是哪个版本的 MAMP PRO/哪个 MAC OS X 版本?在任何情况下,.plist 文件都是一个 xml 文件,您可以使用编辑器对其进行检查,甚至编写一个简单的脚本来处理它。
  • 我有机会通过朋友使用的 MAMP PRO 3.4 来进一步研究这个问题。您确实在查看正确的文件,对于 MAMP PRO 版本 3.x 是 settings3.plist 并且它是 BINARY FORMAT PROPERTY LIST 而对于 MAMP PRO 版本 2.x 是 settings.plist 并且是 XML FORMAT PROPERTY LIST。我将尝试将我的发现回答您的问题。
  • 我更新了我的问题。 @Symvan 另外,非常感谢您的帮助。
  • 我会避免使用plutil 转换的往返行程,因为它错过了自动化点。我的方法是使用PlistBuddy

标签: plist mamp vhosts mamp-pro


【解决方案1】:

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 文件中结构也不是很清楚。

我希望这会有所帮助。如果我有编辑主机详细信息的完整配方,我将进一步调查并修改此答案。

【讨论】:

  • 我已经通过这篇文章找到了 XML 文件的结构以及这些值的大致含义:cclgroupltd.com/… 我不知道如何将所有这些逻辑放入 shell 脚本中.
猜你喜欢
  • 2012-09-03
  • 1970-01-01
  • 2016-05-17
  • 2015-11-20
  • 2012-12-28
  • 2013-02-17
  • 2017-07-12
  • 2017-09-04
  • 1970-01-01
相关资源
最近更新 更多