Hier ist eine Skizze der Situation:
Ich betreibe einen nginx
Server (Maschine 2), der die Arbeiten unserer Studierenden bereitstellt. Die Arbeiten der Studierenden selbst liegen auf einer anderen Maschine (Maschine 1): unserem gitolite
Server.
Um die Anzahl git clone
der 's und die Datenübertragung zu minimieren (und der Einfachheit halber), mounte ich die Studenten-Repositorys (auf Maschine 1) als Verzeichnisse auf dem Nginx-Server (Maschine 2) über sshfs
und entsprechende fstab
Einträge.
Dies ist einer der fstab
Einträge auf Maschine 2:
[email protected]:/path/to/student/work/on/machine1 /path/to/mount/point/on/machine2
fuse.sshfs x-systemd.automount,_netdev,user,idmap=user,follow_symlinks,
identityfile=/path/to/rsa-key/of/ssh-user/key_rsa,allow_other,default_permissions,
reconnect 0 0
(Hinweis: In der fstab-Datei ist dies als eine einzelne Zeile gesetzt, aber zur besseren Lesbarkeit habe ich oben Zeilenumbrüche hinzugefügt.)
Dieser Aufbau funktioniert grundsätzlich, das heißt die Arbeiten der Studierenden sind über die von nginx bereitgestellte Webseite erreichbar.
Wenn ein Benutzer jedoch versucht, sich die Arbeit des Studenten anzusehen, wird ihm in den meisten Fällen ein 404-Fehler von nginx angezeigt. Dieser Fehler kann durch einfaches Neuladen der Seite behoben werden. Die meisten Benutzer werden dies jedoch (offensichtlich) nicht tun (sie gehen einfach davon aus, dass die URL fehlerhaft ist).
Ich sehe zwei mögliche Lösungen:
- (bevorzugt:) Beheben des 404-Fehlers durch eine Änderung des fstab-Eintrags, z. B. durch Beheben der Ursache des 404-Fehlers
- (wenn 1. fehlschlägt:) Konfigurieren von nginx, um die Seite automatisch neu zu laden (aktualisieren), wenn ein 404-Fehler auftritt.
Antwort1
Ich würde denken, dass es nginx
als anderer Benutzer ausgeführt wird. Und standardmäßig sshfs
sind Mounts nur für den Benutzer sichtbar, der sie mountet.
nginx
Daher können die Dateien (standardmäßig) nicht angezeigt werden.
Es gibt Optionen für sshfs
/ fuse
( sshfs
ist ein fuse
Dateisystem), um sie besser sichtbar zu machen. (Ich kann mich nicht erinnern, aber es steht im Handbuch).