gpt4 book ai didi

mamp - 使用 MAMP Pro 的自动虚拟主机?

转载 作者:行者123 更新时间:2023-12-01 01:08:14 29 4
gpt4 key购买 nike

使用 MAMP Pro,您可以创建诸如“local.example.com”之类的条目并指向本地计算机上该站点的根目录。

有可能自动化吗?

那是在我的电脑上,我的设置如下:

用户/hm/Sites/example.com/app
用户/hm/Sites/example2.com/app
用户/hm/Sites/example3.com/app
等等...

app 文件夹内是每个域的实际站点。

虽然我当然可以手动将其中的每一个添加到 MAMP Pro 并为每个相应的站点添加一个关联的 URL“example1.com”、“example2.com”、“example3.com”等,但我想知道是否有一种方法可以自动化这是通过为 MAMP Pro 编辑虚拟主机模板来实现的。因此,如果我在我的 Sites 文件夹中创建了一个名为“example4.com”的新文件夹,并在其中放置了一个带有 WordPress 站点的 app 文件夹,那么只要 MAMP Pro 正在运行,我就可以在浏览器中访问 example4.com 并查看那个本地站点。

我看到了一篇关于 MAMP(非专业版)的文章 http://wp.tutsplus.com/tutorials/hosting/wordpress-development-and-deployment-with-mamp-git-and-dropbox/但是那个要求您仍然手动将每个条目添加到您的主机文件中,这违背了目的,因为我可以轻松地手动添加它 MAMP Pro。

最佳答案

我也有类似的想法,因为我想整合drush (用于管理 drupal 站点的命令行工具)与 MAMP 和 MAMP Pro,并可以自动创建用于测试的虚拟主机。

您手动添加到 MAMP Pro 的信息存储在文件 ~/Library/Preferences/de.appsolute.mamppro.plist 中。然后用于修改/创建 /etc/hostshttpd.conf基于模板文件的文件。实际上模板文件存储在~/Library/Application Support/appsolute/MAMP PRO/templates以及 Library/Application Support/appsolute/MAMP PRO/ 中生成的文件(检查此文件夹中的 httpd.conf 以及 hosts)。

无论如何编辑这些文件是没有意义的,因为每次保存手动修改并重新启动时它们都是由 MAMP 生成的(还没有调查它的细节,但我记得当我尝试手动编辑这些文件时,我没有希望) .

您需要做的是编辑plist文件 de.appsolute.mamppro.plist直接地。读取和写入 plist文件可以使用 PlistBuddy 来实现( /usr/libexec/PlistBuddyman PlistBuddy)。

您可以提取 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
}

哪里 documentRootserverName是每个虚拟主机所需的主要值。
如果您希望输出采用 xml plist 的形式,请添加 -x选项:
/usr/libexec/PlistBuddy -x -c Print ~/Library/Preferences/de.appsolute.mamppro.plist

上面的单个记录是具有以下结构的数组中的多个记录之一:

虚拟主机 = 数组 {
字典{
...虚拟主机 1 值...
}
字典{
...虚拟主机 2 值...
}
字典{
...等等...
}
}

上面的命令吐出整个 plist文件。单独使用手册页很难找到如何专注于 virtualHosts数组或说第二个 Dict (记录)在 virtualHosts大批。感谢 this page on Manipulating 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

打印 documentRoot第五个 virtualHosts记录:
PlistBuddy -c "Print :virtualHosts:5:documentRoot" ~/Library/Preferences/de.appsolute.mamppro.plist

根据 manPlistBuddy -c Add entry type [value]会为您解决问题(即添加/写入所需的记录),因此您的问题可以通过将上述信息与手册页和链接结合来解决(如果您想制作脚本,该链接很有用)。

我还没有完成我的自动化脚本( drush 中的代码 phpbash 脚本是我的偏好)但我认为以下几点会对你有所帮助:

首先,如果您要进行任何测试,请确保备份 de.appsolute.mamppro.plist首先,或者您复制此文件并在副本上进行所有测试。所以在下面我假设你在一个终端上并且你已经给命令取了别名并复制了 plist文件如下:
$ alias PlistBuddy="/usr/libexec/PlistBuddy"
$ cp ~/Library/Preferences/de.appsolute.mamppro.plist safe_to_play.plist

添加新 DictvirtualHosts大批:
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是 previews 命令输出的行号(因为数组的索引从 0 开始)。

当然,您必须对所有条目( FollowSymLinksserverName 等)重复此操作,确保尊重结构和类型(您在单个 Dict 条目中有数组、整数和字符串)。最后但并非最不重要的 MAMP Pro(或至少服务器)必须重新启动以进行 ~/Library/Preferences/de.appsolute.mamppro.plist 中的更改生效。再次备份您的 plist文件!!!

我希望这可以帮助您制作您想要的脚本。

关于mamp - 使用 MAMP Pro 的自动虚拟主机?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12359199/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com