我试图在/etc/nginx/中的sites-enabled和sites-available目录中包含服务器块的配置文件之间创建软链接。
我使用的命令是:
sudo ln -s sites-available/foo.conf sites-enabled/
当我执行时:
ls -l
结果是:
lrwxrwxrwx 1 parallels parallels 27 Aug 6 20:44 immigrationinformation.conf -> immigrationinformation.conf
其中immigrationinformation.conf -> immigrationinformation.conf
部分具有红色字体的木炭。
当我尝试访问这个软链接时,我被告知它已损坏。
当我在sites-available目录中创建软链接时,
sudo ln -s sites-available/foo.conf sites-available/foo_link.conf
它正常工作。但是,如果我将其移动到启用站点的目录,链接再次断开。
我可以通过文件管理器GUI创建软链接,但不能通过命令行。我也可以创建硬链接没有问题。
我怀疑这是一个权限问题,所以我已经把所有的权限都设置为777,把目录和目录本身的权限都设置为777,把所有者也设置为root以外的权限,但是仍然没有成功。
任何帮助我将非常感激,谢谢。
4条答案
按热度按时间gudnpqoy1#
你应该首先理解一个 symlink 的目标是一个 pathname。它可以是包含符号链接的目录的绝对或相对。
假设您在 /sites-available 中有
foo.conf
:现在,您将在 /sites-enabled 中拥有一个名为
foo.conf
的符号链接,该符号链接具有一个目标 ../sites-available/foo.conf。需要说明的是,Apache的正常配置是潜在站点位于 /sites-available 中,启用站点的符号链接位于 /sites-enabled 中,指向sites-available中的目标。
根据你描述的设置方式,情况似乎并非如此;但这不是你主要问题。
如果你想让一个符号链接ALWAYS指向同一个文件,不管符号链接在哪里,那么目标应该是完整路径;即:
下面是我的
ls -l /etc/apache2/sites-enabled
的输出(第1行):查看符号链接的目标是如何相对于包含符号链接的目录的(它以“..”开头,表示向上移动一个目录)。
硬链接完全不同,因为硬链接的目标不是目录条目,而是文件系统Inode。
vlurs2pr2#
我的站点配置文件是sites-available文件夹中的example.conf,因此您可以创建一个符号链接,
pbossiut3#
您可以通过像这样强制ln来覆盖现有文件../sites-enabled/myproject
然后
khbbv19g4#
要缩短手动输入每个conf文件的时间,您可以从sites-enabled文件夹尝试: