Linux
Linux 符號連結未按預期工作
我之前已經多次實現了我的“目標”,但遇到了一個我以前從未遇到過的問題。我在 Ubuntu 12.04 LTS 上使用 Nginx 設置了網路伺服器。我按照通常的方式設置了系統,並嘗試為站點“虛擬主機”創建從站點可用到啟用站點的目錄的符號連結。通常,這是通過主 nginx 目錄中的以下內容(以 root 身份)實現的:
ln -s /etc/nginx/sites-available/site.com /etc/nginx/sites-enabled/site.com
雖然我可以進入啟用的目錄並查看符號連結已“工作”,但當我嘗試直接在啟用站點的目錄中編輯文件時,我看到該文件為空白並被視為新文件。結果,我的伺服器無法按預期工作並且頁面無法載入。當我只是將文件硬複製或硬連結到目錄中時:
ln /etc/nginx/sites-available/site.com /etc/nginx/sites-enabled/site.com
它可以正常工作。然而,我被同一個文件的兩個副本困住了,沒有符號連結。
到底給了什麼?
注意:這是我目前 Nginx 目錄的結構:
root@site.com:/etc/nginx# ls -l 共 44 drwxr-xr-x 2 root root 4096 Mar 4 17:28 conf.d -rw-r--r-- 1 根 964 Feb 12 08:41 fastcgi_params -rw-r--r-- 1 根 2837 Feb 12 08:41 koi-utf -rw-r--r-- 1 根 2223 Feb 12 08:41 koi-win -rw-r--r-- 1 根根 3463 Feb 12 08:41 mime.types -rw-r--r-- 1 root root 1022 Mar 4 21:15 nginx.conf -rw-r--r-- 1 根 596 Feb 12 08:41 scgi_params drwxr-xr-x 2 root root 4096 Mar 4 21:15 站點可用 drwxr-xr-x 2 root root 4096 3 月 4 日 21:19 啟用站點 -rw-r--r-- 1 根 623 Feb 12 08:41 uwsgi_params -rw-r--r-- 1 root root 3610 Feb 12 08:41 win-utf
提前感謝您的幫助!
編輯1:顯示
sites-enabled
文件夾的內容ls -l
:root@site.com:/etc/nginx/sites-enabled# ls -l 共 0 lrwxrwxrwx 1 根 3 Mar 5 10:23 www -> www
最終答案
所以在@Insyte 和@Michael Hampton 的幫助下,我想出瞭如何偶爾重現我的錯誤。劇情如下:
root@site.com:/etc/nginx# cd sites-available root@site.com:/etc/nginx/sites-available# ls 全球資訊網 root@site.com:/etc/nginx/sites-available# ln -s www /etc/nginx/sites-enabled/www root@site.com:/etc/nginx/sites-available# cd /etc/nginx/sites-enabled root@site.com:/etc/nginx/sites-enabled# ls -l 共 0 lrwxrwxrwx 1 根根 3 Mar 5 10:48 www -> www
我不知道“為什麼”,但事實證明,如果我每次都使用完整的絕對路徑,那麼問題就不存在了。
因此,您所擁有的是一個連結回自身的符號連結。我看不出您在問題頂部列出的命令是如何實現的,所以我懷疑這個特定的符號連結的創建方式不同。
我可以像這樣複製你的場景:
sazerac:~ insyte$ cd testlinks/ sazerac:~/testlinks insyte$ ls sazerac:~/testlinks insyte$ ln -s www www sazerac:~/testlinks insyte$ ls -l total 8 lrwxr-xr-x 1 insyte staff 3 Mar 5 10:33 www -> www
讓我們做一個實驗。完全按照列出的方式執行以下命令:
echo "hello insyte" > /etc/nginx/sites-available/insyte ln -s /etc/nginx/sites-available/insyte /etc/nginx/sites-enabled ls -l /etc/nginx/sites-enabled|grep insyte cat /etc/nginx/sites-enabled/insyte