Nginx站点已启用,站点可用:无法在Ubuntu 12.04中的配置文件之间创建软链接

Nginx站点已启用,站点可用:无法在Ubuntu 12.04中的配置文件之间创建软链接,ubuntu,symlink,hardlink,Ubuntu,Symlink,Hardlink,我试图在配置文件之间创建软链接,这些配置文件包含已启用站点中的服务器块和/etc/nginx/中的站点可用目录 我使用的命令是: sudo ln -s sites-available/foo.conf sites-enabled/ 当我执行时: ls -l 结果是: lrwxrwxrwx 1 parallels parallels 27 Aug 6 20:44 immigrationinformation.conf -> immigrationinformation.conf 其中

我试图在配置文件之间创建软链接,这些配置文件包含已启用站点中的服务器块和/etc/nginx/中的站点可用目录

我使用的命令是:

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
部分有一个红色字体的木炭

当我尝试访问此软链接时,我被告知它已断开

当我在站点可用目录中创建软链接时

sudo ln -s sites-available/foo.conf sites-available/foo_link.conf
一切正常。但是,如果我随后将其移动到sites enabled目录,该链接将再次断开

我可以通过file manager GUI创建软链接,但不能通过命令行。我也可以创建硬链接没有问题

我怀疑这是一个权限问题,所以我将目录和目录本身的所有权限都设置为777,并将所有者更改为root以外的其他权限,但仍然没有成功


非常感谢您的帮助。

您需要从了解符号链接的目标是路径名开始。它可以是绝对的,也可以是相对于包含符号链接的目录的

假设站点中有foo.conf可用

试一试

现在,您将在站点中启用一个名为foo.conf的符号链接,该符号链接的目标为../sites available/foo.conf

需要明确的是,Apache的正常配置是,潜在站点的配置文件位于可用站点中,而启用的站点的符号链接位于启用的站点中,指向可用站点中的目标。您描述设置的方式似乎并非如此,但这不是您的主要问题

若希望符号链接始终指向同一文件,而不管符号链接位于何处,则目标应为完整路径

ln -s /etc/apache2/sites-available/foo.conf mysimlink-whatever.conf
以下是我的ls-l/etc/apache2/sites enabled的输出(第1行):

lrwxrwxrwx 1 root root  26 Jun 24 21:06 000-default -> ../sites-available/default
查看符号链接的目标是如何相对于包含符号链接的目录的(它以“.”开头,表示向上移动一个目录)


硬链接是完全不同的,因为硬链接的目标不是目录条目,而是归档系统Inode。

我的站点配置文件是示例.conf位于站点可用文件夹中,因此您可以根据需要创建符号链接

ln-s/etc/nginx/sites available/example.conf/etc/nginx/sites enabled/

好的,我现在看到了我的问题,我以为
ln
命令会为我解决路径问题,但是我现在看到我只需要指定目标的完整路径,或者从符号链接上的位置开始的相对路径。我知道问题已经得到了回答,但我想指出你的错误所在,其实很简单,当您站在
/etc/nginx
目录中时,需要在第二个参数中指定文件名,而不是第一个
sudo ln-s sites available/sites enabled/foo.conf
,这个答案带来了什么,而7年前接受的答案没有?抱歉,但是,我发现上面的命令更直观,因为您可以在登录终端后的任何位置编写上面的命令。而且您不必做
cd
,因为上面的路径是绝对的。
lrwxrwxrwx 1 root root  26 Jun 24 21:06 000-default -> ../sites-available/default