我曾经想过将命令行工具
drush
(用于管理
drupal
站点)与MAMP和MAMP Pro集成,从而实现自动创建虚拟主机进行测试。您手动添加到MAMP Pro的信息存储在文件
〜/ Library / Preferences / de.appsolute.mamppro.plist
中,然后使用它来修改/创建基于模板文件的
/ etc / hosts
和
httpd.conf
文件。实际上,模板文件存储在
〜/ Library / Application Support / appsolute / MAMP PRO / templates
中,生成的文件存储在
Library / Application Support / appsolute / MAMP PRO /
中(检查此文件夹中的
httpd.conf
和
hosts
)。无论如何,编辑这些文件都没有意义,因为它们由MAMP每次保存手动修改并重新启动时生成(虽然我没有详细调查过,但我记得当我尝试手动编辑这些文件时,我已经没有希望了)。
你需要做的是直接编辑
plist
文件
de.appsolute.mamppro.plist
。可以使用
PlistBuddy
(
/usr/libexec/PlistBuddy
参见
man PlistBuddy
)来读写
plist
文件。
你可以使用以下命令提取
plist
文件中的信息:
/usr/libexec/PlistBuddy -c Print ~/Library/Preferences/de.appsolute.mamppro.plist
使用此命令创建虚拟主机的典型(单个)记录如下:
Dict {
MultiViews = false
documentRoot = /home/test/openpublish-2.3
Order = 0
ExecCGI = false
serverAliases = Array {
}
dyndns = Dict {
displayName = -
}
serverName = openpublish-2.3
FollowSymLinks = true
AllowOverride = 0
local = true
Allow = 0
Includes = true
Indexes = false
SymLinksifOwnerMatch = false
}
documentRoot
和serverName
是每个虚拟主机所需的主要值。如果您希望输出以xml plist形式呈现,则添加-x
选项:
/usr/libexec/PlistBuddy -x -c Print ~/Library/Preferences/de.appsolute.mamppro.plist
以上单个记录是数组中的众多记录之一,该数组具有以下结构:
virtualHosts = 数组 {
字典 {
...虚拟主机1的值...
}
字典 {
...虚拟主机2的值...
}
字典 {
...等等...
}
}
上述命令会输出整个
plist
文件。只使用man页,要找出如何聚焦于
virtualHosts
数组或者说是
virtualHosts
数组中的第二个
Dict
(记录)是非常麻烦的。由于
这篇关于操作Plists页面的帮助,我得到了解决方案(在下面的命令中,我跳过了
/usr/libexec/
部分):
要访问整个
virtualHosts
数组,请使用以下命令:
PlistBuddy -c "Print :virtualHosts" ~/Library/Preferences/de.appsolute.mamppro.plist
打印第二条记录:
PlistBuddy -c "Print :virtualHosts:2" ~/Library/Preferences/de.appsolute.mamppro.plist
要打印第五个virtualHosts
记录的documentRoot
:
PlistBuddy -c "Print :virtualHosts:5:documentRoot" ~/Library/Preferences/de.appsolute.mamppro.plist
根据
man
页的说法,
PlistBuddy -c Add entry type [value]
可以帮助你解决问题(即添加/写入所需记录),因此您可以将上述信息与 man 页和链接结合使用来解决问题(如果您想编写脚本,则链接很有用)。
我还没有完成我的自动化脚本(我更喜欢在
php
或
bash
脚本中使用
drush
代码),但我认为以下几点会对您有所帮助:
首先,如果您正在进行任何测试,请确保首先备份
de.appsolute.mamppro.plist
或复制此文件并在副本上进行所有测试。因此,在接下来的操作中,我假设您正在终端上,并已别名化命令并复制了
plist
文件,如下所示:
$ alias PlistBuddy="/usr/libexec/PlistBuddy"
$ cp ~/Library/Preferences/de.appsolute.mamppro.plist safe_to_play.plist
要将新的
Dict
添加到
virtualHosts
数组中:
PlistBuddy -c "Add :virtualHosts: dict" safe_to_play.plist
要找到新虚拟主机条目的索引,然后执行类似于以下内容的操作(假设为bash
脚本):
PlistBuddy -c "Print :virtualHosts: dict" safe_to_play.plist | grep documentRoot | wc -l
并添加 documentRoot
条目以创建此新记录:
PlistBuddy -c "Add :virtualHosts:XXX:documentRoot string /home/path" safe_to_play.plist
其中XXX
是从预览命令中输出的行号(因为数组的索引从0开始)。
当然,您必须对所有条目(FollowSymLinks
,serverName
等)重复此操作,确保尊重结构和类型(在单个Dict
条目中有数组、整数和字符串)。最后但并非最不重要的是,必须重新启动MAMP Pro(或至少是服务器),以便更改在〜/Library/Preferences/de.appsolute.mamppro.plist
中生效。再次备份您的plist
文件!!!
我希望这可以帮助您制作所需的脚本。