O Linux Symbolic Linking não funciona como esperado

3

Já consegui meu "objetivo" várias vezes antes, mas estou me deparando com um problema que ainda não experimentei antes. Eu tenho uma configuração de servidor web com Nginx no Ubuntu 12.04 LTS. Eu tenho o meu sistema de configuração do jeito que eu normalmente faria e estou tentando criar um link simbólico para o site "host virtual" a partir dos sites disponíveis para o diretório de sites habilitados. Normalmente, isso é obtido com o seguinte do diretório nginx primário (como root):

ln -s /etc/nginx/sites-available/site.com /etc/nginx/sites-enabled/site.com

Embora eu possa ir para o diretório habilitado e ver o link simbólico ter "trabalhado", quando tento editar o arquivo diretamente no diretório habilitado para sites, vejo o arquivo em branco e tratado como um novo arquivo. Como resultado, meu servidor não funciona conforme o esperado e as páginas não são carregadas. Quando simplesmente copio ou vinculo o arquivo ao diretório:

ln /etc/nginx/sites-available/site.com /etc/nginx/sites-enabled/site.com

Funciona sem qualquer problema. No entanto, estou preso com duas cópias do mesmo arquivo e nenhum link simbólico.

O que diabos dá?

Nota: aqui está a estrutura do meu diretório atual do Nginx:

[email protected]:/etc/nginx# ls -l
total 44
drwxr-xr-x 2 root root 4096 Mar  4 17:28 conf.d
-rw-r--r-- 1 root root  964 Feb 12 08:41 fastcgi_params
-rw-r--r-- 1 root root 2837 Feb 12 08:41 koi-utf
-rw-r--r-- 1 root root 2223 Feb 12 08:41 koi-win
-rw-r--r-- 1 root root 3463 Feb 12 08:41 mime.types
-rw-r--r-- 1 root root 1022 Mar  4 21:15 nginx.conf
-rw-r--r-- 1 root root  596 Feb 12 08:41 scgi_params
drwxr-xr-x 2 root root 4096 Mar  4 21:15 sites-available
drwxr-xr-x 2 root root 4096 Mar  4 21:19 sites-enabled
-rw-r--r-- 1 root root  623 Feb 12 08:41 uwsgi_params
-rw-r--r-- 1 root root 3610 Feb 12 08:41 win-utf

Obrigado pela sua ajuda com antecedência!

Editar 1: Mostrando o conteúdo da pasta sites-enabled com ls -l :

[email protected]:/etc/nginx/sites-enabled# ls -l
total 0
lrwxrwxrwx 1 root root 3 Mar  5 10:23 www -> www

Resposta final

Então, após a ajuda do @Insyte e do @Michael Hampton, descobri como reproduzir meu erro ocasionalmente. O cenário foi o seguinte:

[email protected]:/etc/nginx# cd sites-available
[email protected]:/etc/nginx/sites-available# ls
www
[email protected]:/etc/nginx/sites-available# ln -s www /etc/nginx/sites-enabled/www
[email protected]:/etc/nginx/sites-available# cd /etc/nginx/sites-enabled
[email protected]:/etc/nginx/sites-enabled# ls -l
total 0
lrwxrwxrwx 1 root root 3 Mar  5 10:48 www -> www

Não estou ciente de "por quê", mas acontece que, se eu usar caminhos completos absolutos a cada vez, o problema não existe.

    
por JM4 05.03.2013 / 04:31

2 respostas

3

Então, o que você tem aí é um link simbólico que se conecta a ele mesmo. Eu não vejo como isso é possível com o comando que você listou no topo da sua pergunta, então eu suspeito que este link simbólico específico foi criado de forma diferente.

Eu posso replicar seu cenário assim:

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

Vamos tentar um experimento. Execute os seguintes comandos exatamente conforme listado:

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
    
por 05.03.2013 / 17:35
4

Você de alguma forma conseguiu criar um link simbólico que se vincula a si mesmo. Eu nem sabia que você poderia fazer isso, mas tenho certeza que não terá o resultado que você quer.

Para corrigir isso, remova o link simbólico e recrie-o corretamente.

rm -f /etc/nginx/sites-enabled/www

Ou use a opção -f para ln e ela poderá remover o link simbólico inválido para você.

ln -fs /etc/nginx/sites-available/www /etc/nginx/sites-enabled/www
    
por 05.03.2013 / 17:35