我有一台Mac,我可以运行Leopard(10.5)或Snow Leopard(10.6)版本的OS X.在将文件发布到生产主机之前,我正在使用它进行Web开发/测试。
在生产主机上,我的网站的doc根位于主目录下(例如/ home / stimulatingpixels / public_html),我想在Mac上复制该位置。不幸的是,它们是Mac上的隐藏和锁定占位符,看起来像一个装载的驱动器,其中没有任何东西位于/ home位置。
我从经验中知道移动它并放入你自己的/ home目录是不明智的,因为升级会导致它被删除(顺便说一下,它不会存储在TimeMachine备份中)。
所以,问题是,无论如何要在Mac上安全地使用/ home Leopard或Snow Leopard吗?
(注意:我意识到这是非常特定于Mac的,并且也会在Apple论坛中提出这个问题。除了涵盖所有基础之外,我想在这里问一下。)
更新:为了帮助描述我为什么要这样做,除了前端网站之外,我还有一系列我想要运行的脚本。能够使用/ home目录(更具体地说,来自服务器根目录的相同路径)的主要目标之一是,可以在开发mac上使用相同的输出路径,也可以在生产服务器上使用。我知道有办法解决这个问题,但我宁愿不必处理它。真正的目标是让开发Mac上的所有文件与目录树的/ root具有相同的文件路径作为生产服务器。
另一个更新:我之前忘记提及的另一个原因是在使用基本身份验证时设置.htaccess路径。由于这些路径来自文件系统根目录而不是网站docroot,因此当它们是树的一部分时,它们最终会通过“/ home”。
答案 0 :(得分:59)
注意:截至2015年,我不再使用或推荐此方法。相反,我使用Vagrant来设置开发和测试的虚拟机。它是免费的,相对简单,并且可以更好地匹配生产环境。它完全分离了开发环境,您可以根据需要进行创建。 强烈推荐。为了后人的缘故,我将在下面留下原始答案。
我找到了答案here on the Apple forums。
要回收/home
目录,请修改/etc/auto_master
文件并注释掉(或删除)其中包含/home
的行。在此之后您需要重新启动才能使更改生效(或者,根据nilbus的评论,尝试运行sudo automount -vc
)。这适用于Mac OS X 10.5(Leopard)。您的millage可能因版本不同而有所不同,但应该类似。
正如该论坛帖子所述,您还应该知道 Time Machine会自动排除/home
目录而不会备份。
警告提示,请确保在进行系统更新之前手动备份/home
目录。我相信我所做的更新之一(例如从10.6到10.7)在没有警告的情况下消除了我在/home
中存储的内容。我不是百分之百确定发生了什么事,但这是值得注意的事情。
答案 1 :(得分: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
答案 2 :(得分:8)
从上面的提示和提示中总结出来:
修改/etc/auto_master
#注释掉其中包含/home
的行。
重新安装:
sudo automount -vc
制作与mac-ified目录的软链接:
sudo ln -s $HOME /home/$USER
此时,您的路径应与您的生产路径匹配。 env
变量仍会指向/Users/xxxx
,但您在.bashrc
中的路径中硬编码的任何内容 - 或者说~/.pip/pip.conf
中的代码 - 应该基本相同。为我工作。
re: “真正的目标是让开发Mac上的所有文件都具有与目录树的/ root相同的文件路径作为生产服务器。”
在制作时,我的部署工作可能会在/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
。然后,如果我需要更多的磁盘空间用于项目(LVM是你的朋友),我可以扩展/opt
文件系统。
答案 3 :(得分:1)
我将之前的解决方案改编为 Big Sur (macOS 11.2),由于 APFS 文件系统的变化,这有点复杂。我按照以下步骤成功更改了 /home
:
/home
中的 /etc/auto_master
条目。sudo umount /home
/home
当前是指向 /System/Volumes/Data/home
的只读链接,因此您必须更改后者。我用以下命令做到了:
cd /System/Volumes/Data/
sudo rmdir home
sudo ln -s <some other directory> home
答案 4 :(得分:-2)
为什么不运行MAMP并使用Sites目录?您可以开发localhost并为您的站点提供一堆别名。我不确定你为什么特别需要使用主目录。
编辑: 好吧,我认为你会以错误的方式解决你的问题。
如果您担心的是HTML路径,请使用斜杠“/”开始所有操作,这将默认为家庭模块。
如果它是PHP中的引用,那么您需要创建一个全局(或类似)并将其设置为您站点的根目录。然后,您可以引用全局中的所有内容,当您将站点从开发转移到生产时,您需要更改的是全局。
尝试从/ home开发,因为它看起来更像生产服务器是一个坏主意。
安装MAMP,在层次结构中的某个位置创建全局,并开始重新引用。从长远来看,它会减轻痛苦。