2013-08-06 17 views
32

Sto provando a creare collegamenti software tra i file di configurazione contenenti blocchi server nelle directory abilitate per i siti e nei siti disponibili in/etc/nginx /.Siti abilitati per Nginx, siti disponibili: impossibile creare collegamenti software tra i file di configurazione in Ubuntu 12.04

Il comando che sto usando è:

sudo ln -s sites-available/foo.conf sites-enabled/ 

Quando poi eseguire:

ls -l 

Il risultato è:

lrwxrwxrwx 1 parallels parallels 27 Aug 6 20:44 immigrationinformation.conf -> immigrationinformation.conf 

dove la parte immigrationinformation.conf -> immigrationinformation.conf ha un carbone con il rosso carattere tipografico.

Quando quindi provo ad accedere a questo collegamento, mi viene detto che è rotto.

Quando creo il soft-link nella directory sites-available cioè

sudo ln -s sites-available/foo.conf sites-available/foo_link.conf 

funziona come normale. Tuttavia, se poi lo sposto nella directory abilitata ai siti, il collegamento viene interrotto di nuovo.

Posso creare il collegamento software tramite la GUI del file manager ma non tramite la riga di comando. Posso anche creare hard-link senza problemi.

Avevo il sospetto che si trattasse di un problema di autorizzazioni, quindi mi sono divertito a impostare tutte le autorizzazioni su 777 di entrambe le directory e le directory stesse e anche a modificare i proprietari su qualcosa di diverso da root, ma ancora senza fortuna.

Qualsiasi aiuto mi piacerebbe molto, grazie.

+1

So che la domanda è già stata risolta ma volevo indicare dove si trovava l'errore, in realtà era molto semplice, era necessario specificare il nome del file nel secondo argomento non il primo 'sudo ln -s siti-disponibili/siti -enabled/foo.conf' stando nella directory '/ etc/nginx' –

risposta

68

È necessario iniziare comprendendo che la destinazione di un collegamento simbolico è un percorso. E può essere assoluto o relativo alla directory che contiene il collegamento simbolico

Supponendo di avere foo.conf in sites-available

Prova

cd sites-enabled 
sudo ln -s ../sites-available/foo.conf . 
ls -l 

Ora si avrà un link simbolico a siti abilitati chiamato foo.conf che ha un target ../sites-available/foo.conf

Giusto per essere chiari, la configurazione normale per Apache è che i file di configurazione per siti potenziali risiedono in siti disponibili e i collegamenti simbolici per i siti abilitati risiedono in siti-enabl ed, indicando gli obiettivi nei siti disponibili. Non sembra proprio il tuo modo di descrivere la tua configurazione, ma non è questo il tuo problema principale.

Se si desidera che un collegamento simbolico punti SEMPRE allo stesso file, indipendentemente dal punto in cui si trova il collegamento simbolico, il target deve essere il percorso completo.

ln -s /etc/apache2/sites-available/foo.conf mysimlink-whatever.conf 

Ecco (linea 1), l'uscita dei miei ls -l/etc/apache2/sites-enabled:

lrwxrwxrwx 1 root root 26 Jun 24 21:06 000-default -> ../sites-available/default 

vedere come la destinazione del link simbolico è relativo alla directory che contiene il link simbolico (inizia con ".." che significa vai su una directory).

I collegamenti fisici sono completamente diversi perché la destinazione di un collegamento fisico non è una voce di directory ma un Inode del sistema di archiviazione.

+0

Ok, ora vedo il mio problema, pensavo che il comando' ln' avrebbe risolto il percorso per me, tuttavia ora vedo che ho solo bisogno di specificare il percorso completo del target o il percorso relativo dalla posizione sul collegamento simbolico. – iamyojimbo

Problemi correlati