Symlink / var / www-Verzeichnis

17

Ich habe versucht, einen Symlink zu erstellen:

/ var / www -> / home / USER / code /

Nach /programming/9104337/create-a-symbolic-link-of-directory-in-ubuntu habe ich den folgenden Befehl eingegeben:

sudo ln -s / var / www / home / USER / code

Das Ergebnis ist jedoch nicht das, was ich erwarte. Mein Link wird im Verzeichnis / www gespeichert, anstatt das WWW-Verzeichnis selbst zu verknüpfen. Ich benutze Apache als lokalen Webserver, für meinen Fall muss ich auf meinen Code zugreifen als

localhost / code / PROJECT

während ich mir sowas wünsche

localhost / PROJECT

Das codeVerzeichnis sollte nur als Verzeichnis dienen, in dem ich alle meine Projekte speichere.

Was verpasse ich?

user236603
quelle
1
Haben Sie das wwwVerzeichnis gelöscht ? Es wird ein Symlink in www erstellt, wenn www existiert. Es sollte ein Symlink mit dem Namen www erstellt werden, wenn www nicht vorhanden ist.
Mendhak
Nein wwwist da intakt. Symlink innerhalb des wwwVerzeichnisses erfüllt nicht den Zweck, den ich erwähnt habe
user236603
Sie können nicht zwei Einträge mit demselben Namen (in Ihrem Fall ein Verzeichnis und ein Symlink) in demselben Verzeichnis haben. Was meinen Sie mit /var/www/file.txt? Sie müssen sich entscheiden ...
Rmano
Sie sollten @ Shahs Kommentar noch einmal lesen ... Sie müssen wwwden Symlink löschen und dann erstellen.
GabrielF

Antworten:

3

Löschen Sie (oder verschieben Sie aus Sicherheitsgründen) das wwwVerzeichnis, bevor Sie den Symlink erstellen.

Also solltest du eine haben /var , aber es sollte keine geben /var/www. Dann und nur dann wird ein genannter Symlink wwwerstellt, der auf Ihren Ordner localhost / code / project verweist.

Mendhak
quelle
1
Diese akzeptierte Antwort ist falsch. Zuallererst sagen Sie "Löschen" oder "Verschieben", während wir über Befehle sprechen, daher sollten Sie auch den entsprechenden Shell-Befehl eingeben. Zweitens hat er die Quelle und das Ziel im Befehl ln falsch!
sarah.ferguson
1
-1 für die Beantwortung der nicht gestellten Frage und ohne Hinweis auf das tatsächliche Problem, unter dem der Benutzer litt.
Shadur
29

Ich denke, Sie haben die ln -s"Quelle" und "Ziel" falsch herum


FALSCH :

sudo ln -s /var/www /home/USER/code


RICHTIG:

sudo ln -s /home/USER/code /var/www


Sie erhalten einen Symlink in Ihrem /home/USER/codeOrdner, var/wwwder auf einen falschen Ordner verweist .

Zum Beispiel habe ich einen Ordner für Sallys Site in /home/webs/sallybydesign/

cd /var/www

Es sollte keine Ordner oder eine Datei aufgerufen werden , sallybydesignin /var/wwwweil wir über zu machen.

 sudo ln -s  /home/ndmaque/webs/sallybydesign /var/www/sallybydesign

um die neue Datei zu sehen (ein symbolischer Link)

ls -l

Sie sehen eine Datei namens sallybydesign, es ist ein Symlink zu Ihrem home/webs/sallybydesignOrdner und wenn Sie ausführen

ls sallybydesign/ 

Sie sehen die Dateien in Ihrem home/webs/sallybydesignOrdner.

Wenn dies der Fall ist, können Sie Ihre vhost-Datei auf verweisen, /var/www/sallybydesignund sie erbt automatisch alle Apache- /var/wwwBerechtigungen und behebt eine Vielzahl von Problemen.

Andy Mac
quelle
Hat sich an der symbolischen Verknüpfung der letzten Updates zu Ubuntu etwas geändert? Ich kann das Symlinking scheinbar nicht mehr ausführen und bekomme den berühmten 403-Fehler.
Daniel
@ Daniel so mache ich
emrecnl
1
Die Berechtigungen werden standardmäßig nicht automatisch vererbt. Achten Sie darauf, chmod 0755 -Rauf sallybydesignin dem obigen Beispiel dem Webserver zu ermöglichen , zu lesen. Außerdem müssen Sie sich AllowOverride Allim Standardverzeichnis für / befinden (normalerweise in der apache.conf).
Daniel
ls sally / bekam Too many levels of symbolic links.
Adi Prasetyo