我正在尝试在/ 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
部分有一个带红色字体的木炭。
当我尝试访问此软链接时,我被告知它已损坏。
当我在sites-available目录中创建软链接时,即
sudo ln -s sites-available/foo.conf sites-available/foo_link.conf
它正常工作。但是,如果我将其移动到启用站点的目录,则链接将再次中断。
我可以通过文件管理器GUI创建软链接,但不能通过命令行创建。我也可以毫无问题地创建硬链接。
我怀疑这是一个权限问题所以我已经玩过将所有权限设置为两个目录和目录本身的777,并且还将所有者更改为除root之外的其他内容,但仍然没有运气。
任何帮助都非常感谢,谢谢。
答案 0 :(得分:90)
您需要首先了解符号链接的目标是路径名。它可以是包含符号链接
的目录的绝对或相对假设您在sites-available
中有foo.conf尝试
cd sites-enabled
sudo ln -s ../sites-available/foo.conf .
ls -l
现在你将在一个名为foo.conf的site-enabled中有一个符号链接,它有一个目标../ 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。
答案 1 :(得分:6)
我的站点配置文件是 sites-available 文件夹中的 example.conf ,因此您可以将符号链接创建为
ln -s /etc/nginx/sites-available/example.conf /etc/nginx/sites-enabled/
答案 2 :(得分:0)
您可以像这样强制 ln 覆盖现有文件 ../sites-enabled/myproject
sudo ln -sf ../sites-available/myproject ../sites-enabled/
然后
sudo service nginx restart