46

我有一台可以运行 Leopard (10.5) 或 Snow Leopard (10.6) 版本的 OS X 的 Mac。在将文件发布到我的生产主机之前,我正在使用它进行 Web 开发/测试。

在生产主机上,我网站的文档根目录位于主目录下(例如 /home/stimulatingpixels/public_html),我想在 Mac 上复制该位置。不幸的是,它们是 Mac 上的一个隐藏和锁定占位符,看起来像一个安装在 /home 位置的驱动器,里面什么都没有。

我从经验中知道,将其移动并放入您自己的 /home 目录是不明智的,因为升级可能会导致它被删除(顺便说一下,它不会存储在 TimeMachine 备份中)。

那么,问题是,不管是 Leopard 还是 Snow Leopard,是否可以在 Mac 上安全地使用 /home?

(注意:我意识到这是非常特定于 Mac 的,并且也会在 Apple 论坛中询问。除了涵盖所有基础之外,我只想在这里询问。)

更新:为了帮助描述我为什么要这样做,除了前端网站之外,我还有一系列我想运行的脚本。能够使用 /home 目录(更具体地说是从服务器根目录的相同路径)的主要目标之一是,可以在开发 mac 上使用相同的输出路径,也可以在生产服务器上使用。我知道有办法解决这个问题,但我宁愿不必处理它。真正的目标是让开发 Mac 上的所有文件从目录树的 / 根目录具有与生产服务器相同的文件路径。

另一个更新:我之前忘记提到的另一个原因是在使用基本身份验证时设置 .htaccess 路径。由于这些路径来自文件系统根目录而不是网站 docroot,因此当它是树的一部分时,它们最终会通过“/home”。

4

5 回答 5

63

注意:截至 2015 年,我不再使用或推荐这种方法。相反,我使用Vagrant来设置用于开发和测试的虚拟机。它是免费的,相对简单,并且可以更好地匹配生产环境。它完全分离了开发环境,您可以根据需要制作任意数量的开发环境。强烈推荐。为了后代,我将在下面留下原始答案。


我在 Apple 论坛上找到了答案。

为了回收/home目录,编辑/etc/auto_master文件并注释掉(或删除)其中的行/home。在此之后,您需要重新启动才能使更改生效(或者,根据 nilbus 的评论,尝试运行sudo automount -vc)。这适用于 Mac OS X 10.5 (Leopard)。对于不同的版本,您的 Millage 可能会有所不同,但应该是相似的。

如该论坛帖子中所述,您还应该知道Time Machine 会自动排除该/home目录并且不会对其进行备份


一个警告说明,请确保/home在进行系统更新之前手动备份您的目录。/home我相信我所做的更新之一(例如从 10.6 到 10.7)在没有警告的情况下清除了我存储的内容。我不是 100% 确定这就是发生的事情,但这是需要注意的事情。

于 2009-09-30T18:48:26.977 回答
12

根据上面的提示和提示将它们放在一起:

  • 编辑 /etc/auto_master#注释掉其中的行/home

  • 重新安装:

    sudo automount -vc

  • 对 mac-ified 目录进行软链接:

    sudo ln -s $HOME /home/$USER

此时,您的路径应该与您的生产路径匹配。envvars 仍将指向,但是您在 --或者说在--/Users/xxxx中的路径中硬编码的任何内容都应该本质上是等价的。为我工作。.bashrc~/.pip/pip.conf

回复:“真正的目标是让开发 Mac 上的所有文件在目录树的 / 根目录中具有与生产服务器相同的文件路径。”

在生产环境中,我的部署工作可能发生在 中/opt/projects/projname,所以我将确保我的帐户可以写入/opt/projects并从那里开始。我会先做这样的事情:

sudo mkdir /opt/projects sudo chown $USER /opt/projects mkdir /opt/projects/projname cd /opt/projects/projname

使用 LVM,我将为 设置一个单独的分区/opt/,并在那里写入应用程序数据而不是$HOME. /opt然后,在我需要更多磁盘空间用于项目的情况下,我可以扩展文件系统(LVM 是你的朋友。)

于 2014-08-28T21:25:05.640 回答
11

我在 Yosemite (OS X 10.10.1) 上试过了,没用sudo automount -vc,我不得不使用sudo umount /home.

因此我的工作流程是:

# comment out line starting with /home sudo vi "+g/^\/home/s/\//#\//" "+x" /etc/auto_master sudo umount /home # link actual home directory (/Users/<user>) to new 'home' (/home/<user>) ln -s $HOME /home/$USER

于 2015-01-14T15:34:00.380 回答
1

我将以前的解决方案改编为 Big Sur (macOS 11.2),由于 APFS 文件系统的更改,这有点复杂。我设法/home通过以下步骤进行更改:

  1. 按照 Alan W. Smith 的建议,注释掉/home./etc/auto_master
  2. 按照 Marco Torchiano 的建议,运行
    sudo umount /home
    
  3. 由于/home当前是 的只读链接/System/Volumes/Data/home,因此您必须更改后者。我用以下命令做到了:
    cd /System/Volumes/Data/
    sudo rmdir home
    sudo ln -s <some other directory> home
    
于 2021-02-04T17:31:38.877 回答
-2

为什么不直接运行 MAMP 并使用 Sites 目录?您可以在 localhost 之外进行开发,只需为您的站点设置一堆别名。我不确定为什么您特别需要使用主目录。


编辑:好的,我认为您正在以错误的方式解决您的问题。

如果您担心的是 HTML 路径,则以斜杠“/”开始所有内容,这会将其默认为主目录。

如果它是您的 PHP 中的引用,那么您需要创建一个全局(或类似的)并将其设置为您网站的根目录。然后,您可以引用全局中的所有内容,当您将站点从开发移动到生产时,您需要更改的只是全局。

尝试以迂回的方式从 /home 进行开发,因为它看起来更像生产服务器是一个坏主意。

安装 MAMP,在层次结构的较高位置创建全局并开始重新引用。从长远来看,它会减少痛苦。

于 2009-09-01T14:13:04.913 回答