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

iam*_*mbo 46 ubuntu symlink hardlink

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

我使用的命令是:

sudo ln -s sites-available/foo.conf sites-enabled/
Run Code Online (Sandbox Code Playgroud)

当我执行时:

ls -l
Run Code Online (Sandbox Code Playgroud)

结果是:

lrwxrwxrwx 1 parallels parallels 27 Aug  6 20:44 immigrationinformation.conf -> immigrationinformation.conf
Run Code Online (Sandbox Code Playgroud)

其中immigrationinformation.conf -> immigrationinformation.conf部分有红色字体木炭.

当我尝试访问此软链接时,我被告知它已损坏.

当我在sites-available目录中创建软链接时,即

sudo ln -s sites-available/foo.conf sites-available/foo_link.conf
Run Code Online (Sandbox Code Playgroud)

它正常工作.但是,如果我将其移动到启用站点的目录,则链接将再次中断.

我可以通过文件管理器GUI创建软链接,但不能通过命令行创建.我也可以创建没有问题的硬链接.

我怀疑这是一个权限问题所以我已经玩过将所有权限设置为两个目录和目录本身的777,并且还将所有者更改为除root之外的其他内容,但仍然没有运气.

我非常感谢任何帮助,谢谢.

Rod*_*ney 100

您需要首先了解符号链接的目标是路径名.它可以是包含符号链接的目录的绝对或相对

假设您在站点中有foo.conf可用

尝试

cd sites-enabled
sudo ln -s ../sites-available/foo.conf .
ls -l
Run Code Online (Sandbox Code Playgroud)

现在你将在一个名为foo.conf的sites-enabled中有一个符号链接,它有一个目标../sites-available/foo.conf

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

如果希望符号链接始终指向同一文件,则无论符号链接位于何处,目标都应该是完整路径.

ln -s /etc/apache2/sites-available/foo.conf mysimlink-whatever.conf
Run Code Online (Sandbox Code Playgroud)

这是我的ls -l/etc/apache2/sites-enabled输出的(第1行):

lrwxrwxrwx 1 root root  26 Jun 24 21:06 000-default -> ../sites-available/default
Run Code Online (Sandbox Code Playgroud)

查看符号链接的目标是如何相对于包含符号链接的目录(它以".."开头,意味着上一个目录).

硬链接完全不同,因为硬链接的目标不是目录条目而是文件系统Inode.


Bed*_*ang 23

我的站点配置文件是在站点可用文件夹中的example.conf所以你可以创建一个符号链接作为

ln -s /etc/nginx/sites-available/example.conf /etc/nginx/sites-enabled/
Run Code Online (Sandbox Code Playgroud)

  • 我发现上面的命令更直观,因为您可以在登录终端后从任何地方编写上面的命令。而且您不必执行“cd”,因为上面的路径是绝对路径。 (7认同)