/var/www auslagern

  • Im Chat hat Hyrican99 eine Frage gestellt, die ich hier mal für ihn poste:


    Meine Antwort darauf war:

    2 möglichkeiten

    • Die "default" konfigurationsdatei anpassen und DocumentRoot ändern
      "default" konfigurationsdatei -> /etc/apache2/sites-available/default
    • Deinen USB-Stick oder Platte nach /var/www mounten
      Muß aber im Linux-Format formatiert werden damit die Linuxspezifischen Rechte funktionieren

    Daraufhin meint er:

    Zitat


    (Hyrican99|80928): Möglichkeit 2 hört sich gut an
    (Hyrican99|80928): da stecke ich jetzt mal eine 16 GB Karde rein und stecke das Ding an den PI an
    (Hyrican99|80928): oder mache ich da was falsch?
    (!meigrafd): nö
    (!meigrafd): ich würd aber lieber nen normalen usb stick nehmen :p

    Und alles weitere würde ich gerne hier im Forum beschnacken damit das ggf auch noch jemand anderes finden und umsetzen könnte

  • Hallo,
    so ich habe jetzt den 16 GB USB Stick irgendwie am PI zum laufen gebracht und er wird folgendermaßen angezeigt:
    [font="Menlo"]pi@raspberry ~ $ sudo df -h[/font]
    [font="Menlo"]Filesystem Size Used Avail Use% Mounted on[/font]
    [font="Menlo"]rootfs 5.9G 2.4G 3.1G 44% /[/font]
    [font="Menlo"]/dev/root 5.9G 2.4G 3.1G 44% /[/font]
    [font="Menlo"]devtmpfs 211M 0 211M 0% /dev[/font]
    [font="Menlo"]tmpfs 44M 248K 44M 1% /run[/font]
    [font="Menlo"]tmpfs 5.0M 0 5.0M 0% /run/lock[/font]
    [font="Menlo"]/dev/sda1 16G 1.1M 16G 1% /var/www[/font]
    [font="Menlo"]tmpfs 88M 0 88M 0% /run/shm[/font]
    [font="Menlo"]/dev/mmcblk0p5 60M 19M 41M 32% /boot[/font]

    [font="Menlo"]Unter /var/www ist ja der Speicherort meines WEB Servers.[/font]
    [font="Menlo"]Habe ich den /dev/sda1 auch dort gemounted?[/font]
    [font="Menlo"]Wenn ich unter /Var/www meine ganzen Webseiten ablege, sind diese dann automatisch auf dem Stick, das selbe Verzeichnis gibt es ja auch auf der SD Karte des Pis, gespeichert.[/font]
    [font="Menlo"]Nachtrag: Beim Reboot wird Dev/sda1 auch wieder angezeigt (gemounted), musste in fstab noch eine Zeile ergänzen und schon gehts.[/font]

    [font="Menlo"]Für mich ist das leider alles Neuland.[/font]

    • Offizieller Beitrag

    Als gewohnheits Tierchen würd ich auch lieber die 2te Variante bevorzugen... Wenn mal länger nichts am Doc-root gemacht hat und dabei vielleicht den Pfad vergessen hat, müsste man erst wieder in den Webserver Einstellungen suchen bis man den Pfad wieder hat.
    Darum lieber einen symbolischen Link setzen oder direkt unter /var/www einbinden ;)

    Ich bin ein gefallener Engel namens Turael.

    Einst vor langer Zeit rebelierte ich im Himmel bis Gott mich auf die Erde verbannte.

    Doch meine taten werden kein ende finden....

    Einmal editiert, zuletzt von Turael (3. März 2014 um 07:55)

  • Ein Symbolischer Link ( Verknüpfung ) wäre hierbei aber nicht so gut da dieser als solcher erkannt wird und manchmal Probleme verursacht.. Besser wäre wenn dann ein Hardlink (remount) ebenfalls über den Befehl mount, den man über 2 Wege bewerkstelligen kann:

    Code
    mount --bind /mnt/sda1/www /var/www

    Oder über die Option-Parameter:

    Code
    mount /mnt/sda1/www /var/www -o bind

    Ein Hardlink / Remount setzt aber voraus das /dev/sda1 bereits zB nach /mnt/sda1 gemounted wurde und man dann entweder /mnt/sda1 nochmals also zusätzlich woanders hin mountet, oder nur ein einzelnes Verzeichnis also in diesem Beispiel /mnt/sda1/www

    Solch einen remount müßte man dann aber über ein Script bewerkstelligen welches erst nach dem Mounten des USB-Sticks durchgeführt werden würde - was übriegends bei einem Symlink auch der Fall wäre da sonst von außen nur umständlich festgestellt werden könnte ob der Stick bereits gemountet wurde..

    Um diese einhäng Geschichte und anschließendes ausführen eines weiteren Befehls zu erleichtern würde sich im Fall eines USB-Geräts (egal ob Stick oder Festplatte) udev quasi aufdrängen. Dazu hatte ich hier im Forum auch schon eine Vorgehensweise bereitgestellt die ihr > hier am Ende des Beitrags < findet


    Wenn man aber sowieso einen eigenen Datenträger extra dafür einhängt (mountet) kann man den auch gleich ins DocumentRoot mounten und brauch solche Umwege nicht machen


    Was man bei dieser Geschichte auch beachten sollte wären die Rechte. Je nach verwendeten Webseiten kann es sein das der Webserver-Benutzer www-data in /var/www/ schreiben möchte, zum Beispiel eine Bilddatei erzeugen o.ä.. Deshalb muß man entweder:

    • ...bei Verwendung von einem nicht-Linux-eigenen Dateisystem wie NTFS oder FAT, beim mounten die Rechte festlegen. Wenn man den Stick also über /etc/fstab einhängt kann man das direkt über die Option umask , oder uid und gid , festlegen (siehe dazu Rechte)..
    • ...bei einem remount (hardlink) ebenfalls über die mount Option umask festlegen.
    • ...generell würde ich das auch bei einem normalen Mount von einem ext2/ext3/ext4 Dateisystem über /etc/fstab so regeln das /var/www/ dem Benutzer www-data gehört und er dort alle Rechte hat
  • Moin,

    welcher Vorteil würde sich durch --bind ergeben gegenüber dem direkten mount via fstab an die Stelle wo ich es hin haben will?

    Ah schon gut wenn ich noch mal drüber nachdenk - wenn ich Verzeichnisse auf dem Stick woanders nutzen will.

    Warum muss meinst du sollte man das, wenn man bind verwendet, mit einem Skript checken? Alles in die fstab in der richtigen Reihenfolge. Oder kann man bind nicht in der fstab verwenden? Und wer sicher sein will, dass der richtige USBstick an der richtig Stelle genutz wird verwendet die UUID des Sticks, dann wäre außer bei der Lösung mit zweimaligen mount die reihenfolge wurscht.

    Ehe ich dich missverstehe, du meinst mit Hardlink den Remount mit bind und nicht "ln" ohne "-s", denn dass verstehe ich unter einem Hardlink.

    Warum macht ein Symlink Probleme?

    Gruß Lunepi

    Aber alles in allem gebe ich dir recht, das sinnvolleste, wenn man eh den Stick komplett nutzen möchte, ist den direkt zu mounten.

    P.s.: Ein ganz nettes Skript wäre das auf dieser Seite: https://access.redhat.com/site/documenta…mountorder.html

    --
    man ist das System-Anzeigeprogramm für die Handbuchseiten von Linux.

    Einmal editiert, zuletzt von Lunepi (3. März 2014 um 10:48)

  • Genau, durch "bind" kann man auch einzelne Verzeichnisse woanders hin mounten - was ich persönlich besser finde als Symlinks, da die Symlinks in manchen Fällen eben auch Probleme machen können (weil ein Programm den Symlink erkennt und sich weigert damit zu arbeiten), oder weil mithilfe von ln zB die Meldung " harte Verknüpfung für Verzeichnisse nicht erlaubt " kommt und das dann auch nicht funktioniert.. "mount --bind" funktioniert dann aber trotzdem ;)

    ..ich hab mir angewöhnt "mount --bind" als Hardlinks zu betrachten da "mount" normalerweise auf hardware in form von datenträgern bezogen is und eben problemlos auch mit Verzeichnissen funktioniert ;)


    Man kann über /etc/fstab auch die mount-Option "bind" nutzen - in seltenen Fällen kommt es aber vor das fstab zu schnell abgearbeitet wird und der Datenträger noch nicht gemounted wurde, dann würde der "bind" eben auch nicht eingebunden werden

    Ein Beispiel hierfür ist auch auf ubuntuwiki aufgeführt: http://wiki.ubuntuusers.de/fstab#Hinzufue…-von-Eintraegen

    Code
    # Ubuntu One in eine eigene Partition auslagern:
    UUID=xxxxxxxx-xxxx-xxxx-xxxxxxxxxxxxxx   /media/UbuntuOne   ext3   defaults   0   2
    /media/UbuntuOne  /home/Max/Ubuntu\040One  none  bind  0  0

    Wobei hier die Zeichenfolge \040 für ein Leerzeichen beschrieben wird, was man unter Linux aber generell vermeiden sollte (Leerzeichen in Dateien/Verzeichnissen)

    Das verzeichnis ist dann eben an mehreren Stellen zugänglich, ein mal über /media/UbuntuOne/ und ein mal über /home/Max/Ubuntu One/

  • Zitat von meigrafd


    Genau, durch "bind" kann man auch einzelne Verzeichnisse woanders hin mounten - was ich persönlich besser finde als Symlinks, da die Symlinks in manchen Fällen eben auch Probleme machen können (weil ein Programm den Symlink erkennt und sich weigert damit zu arbeiten), oder weil mithilfe von ln zB die Meldung " harte Verknüpfung für Verzeichnisse nicht erlaubt " kommt und das dann auch nicht funktioniert.. "mount --bind" funktioniert dann aber trotzdem ;)

    Genau dafür hat doch der große Unix-Gott den schalter -s also symlinks erfunden! ;)


    Zitat von meigrafd


    Wobei hier die Zeichenfolge \040 für ein Leerzeichen beschrieben wird, was man unter Linux aber generell vermeiden sollte (Leerzeichen in Dateien/Verzeichnissen)

    Das verzeichnis ist dann eben an mehreren Stellen zugänglich, ein mal über /media/UbuntuOne/ und ein mal über /home/Max/Ubuntu One/

    hua - Leerzeichen und Sonderzeichen in Verzeichniss- oder Dateinamen *GRUSEL* He Windowsjungs nicht alles was machbar ist, ist auch gut und sinnvoll! Also Finger wech!

    Trotzdem Danke für die Klärung, dann wäre tatsächlich solch Start/Stop Skript nicht verkehrt ( wenn man es unbedingt braucht ).

    Gruß Lunepi

    --
    man ist das System-Anzeigeprogramm für die Handbuchseiten von Linux.

    • Offizieller Beitrag

    meigrafd hast du grad ein Beispiel wo es mit einem symLink Probleme gibt?
    Ich weiß vom Tomcat das er damit keine Probleme hat und damit dann höchst wahrscheinlich auch kein Apache Webserver...

    • Offizieller Beitrag

    Von Webserver kenne ich auch keine Probleme. Bei anderer Software kam mir aber doch schon mal das eine oder andere "Source Directory can't be sym-linked" unter.

    Nutze seit ner weile auch immer mount-bind als hard-link Ersatz

  • Hi,
    allen vielen Dank. Ab Beitrag #5 habt ihr mich überholt. Ich stehe noch auf der Erde, ihr seit schon im Universum. Zumindest nach meinem Wissensstand.

    :cool:

    Vieleicht nochmals meine Frage, seht ihr ob mein Stick jetzt "gemounted" ist?

    Viele Grüße

  • Hallo,
    gut mein Speicherstick ist gemounted.

    Jetzt habe ich aber das nächste Problem:

    Ich muss für einen Dateiordner mit Unterordnern die Berechtigung auf 777 ändern (Ich installiere einen Pictureviewer)

    wenn ich mit mit FileZlla verbinde, als Benutzer pi denn bin ich im Verzeichnis:
    /home/pi/xy

    und kann das Unterverzeichnis xy die Berechtigungen ändern.

    her wenn ich dann im Verzeichnispfad zurück gehe auf nur /
    dann weiter auf /var/www dann kann ich die Berechtigung nicht ändern

    Warum?
    Als Besitzer/Gruppe steht dort 1000/1000

    Übers Terminal habe ich das auch schon probiert. Mit sudo bash und danach kann ich dann auch das Verzeichnis mit ls ansehen. Aber die Berechtigung ändern geht nicht.

    Was mache ich falsch?

    Viele Faschingsgrüße

  • Wie ich bereits erwähnt habe ist es für die Rechte wichtig dass du ein Linux-Kompatibles Dateiformat verwendest. Der Datenträger muss also unbedingt mit ext2 oder ext3 oder ext3 formatiert sein


    Aber wieso denkst du denn das du die Berechtigungen auf 777 ändern musst? Das wäre nämlich eigentlich in diesem Zusammenhang quatsch.. Was willst du denn erreichen? Ein Pictureviewer zu installieren sagt hierzu nicht wirklich etwas aus


    In sehr vielen Fällen hilft es auch wenn man die genaue Fehlermeldung zu Gesicht kriegt

  • Hallo,
    Danke für die schnelle Antwort.
    Das Programm Gallery3 verlangt, dass ein Ordner mit 777 Berechtigung bereit gestellt wird.
    Da der PI nur im hauseigenen LAN liegt, sind die Berechtigungen für mich nur zweitrangig.

    Ich merke schon, das wir für mich doch komplizierter als ich gedacht habe.

    Ich habe den Stick halt an meinen Mac formatiert und der kann halt, denke ich nur FAT oder MAC Formate.

    Also Frage:
    Kann ich den Stick während er an meinem PI jetzt angeschlossen ist einfach umformulieren? und wenn ja wie?

    Puh ich glaube, dass es demnächst eine Pi bei Ebay zu ersteigen gibt. ;)

    Viele Grüße

  • Ja, du kannst den Datenträger natürlich auch über den PI formatieren ;)

    Dazu mußt du ihn aber zunächst unmounten also den mount-pointe entfernen und anschließend das Dateisystem erstellen:

    umount Erzwingen:

    Code
    umount -f /dev/sda1

    Normalerweise wäre es auch noch nötigt die Partitionen vor dem formatieren festzulegen, was man über zB fdisk oder parted regeln könnte, aber ich denke bei dem USB-Stick ist bereits eine vollständige Partition über den gesammten Datenträger vorhanden also überspring ich diesen Part jetzt ;)

    Die normale Syntax zum formatieren sieht normalerweise wie folgt aus: mkfs -t filetype /dev/DEVICE ...oder... mkfs.ext3 /dev/DEVICE
    Wobei hierbei:

    • -t filetype : für das Dateisystem steht, dies kann zum Beispiel ext3, ext2, vfat usw sein
    • /dev/DEVICE : für das Laufwerk bzw Parition steht, dies kann /dev/hda1 oder /dev/sda1 usw sein

    Bei der Frage, welches Dateisystem man denn nun nehmen soll würde ich empfehlen folgende Seiten durchlesen:
    http://wiki.ubuntuusers.de/ext
    http://www.heise.de/open/artikel/Ext2-und-Ext3-224378.html

    Bei USB Sticks empfehle ich aber generell ext2 oder ext3 zu verwenden, höher (ext4) sollte man nicht gehen

    Also, formatieren:

    Code
    mkfs.ext3 /dev/sda1

    Anschließend wieder einhängen:

    Code
    mount /dev/sda1 /var/www


    Dann solltest du in der Lage sein die Rechte beliebig zu ändern - wobei ich nicht glaube das Gallery3 wirklich 777 haben möchte, eigentlich sollte auch schon 666 reichen, denn Ausführrechte wird es kaum in /var/www/ benötigen :D

    Lesen: 4
    Schreiben: 2
    Ausführen: 1

    die Rechte ergeben sich dann aus der Summe: 7 = 4 + 2 + 1

    1.Ziffer: Besitzer der Datei
    2.Ziffer: Gruppe der Datei
    3.Ziffer: Andere Benutzer

  • Erstmal vielen Dank für deine Geduld.

    So ich hab jetzt den Stick umformatiert und auch wieder automatisch gemounted. D.h. nach einem Reboot und df -h sehe ich den Stick.

    Und mit dem FileZilla kann ich jetzt die Rechte ändern! Super

    (Gallery3 fordert 777, ansonsten wird es nicht installiert, ist halt so.)

    So und jetzt wenn ich über die IP den pi aufrufe und die Index.html anzeigen will (ich meinen dem WEB Server vom pi auf meinen PC aufrufe), das hat bisher immer funktioniert, bekomme ich in meinem Safari folgende Fehlermeldung:

    [font="Times"]Forbidden[/font]
    [font="Times"]You don't have permission to access /index.html on this server.[/font]

    [font="Times"]Apache/2.2.22 (Debian) Server at 192.168.178.41 Port 80[/font]

    [font="Times"]Was sagt mir das??:s[/font]

    [font="Times"]Viele Grüße[/font]

    Einmal editiert, zuletzt von Hyrican99 (4. März 2014 um 12:45)

  • Hallo,
    wie gewünscht:
    [font="Menlo"]Filesystem Size Used Avail Use% Mounted on[/font]
    [font="Menlo"]rootfs 5.9G 2.4G 3.1G 44% /[/font]
    [font="Menlo"]/dev/root 5.9G 2.4G 3.1G 44% /[/font]
    [font="Menlo"]devtmpfs 211M 0 211M 0% /dev[/font]
    [font="Menlo"]tmpfs 44M 248K 44M 1% /run[/font]
    [font="Menlo"]tmpfs 5.0M 0 5.0M 0% /run/lock[/font]
    [font="Menlo"]/dev/sda1 15G 45M 14G 1% /media/usb0[/font]
    [font="Menlo"]tmpfs 88M 0 88M 0% /run/shm[/font]
    [font="Menlo"]/dev/mmcblk0p5 60M 19M 41M 32% /boot[/font]
    [font="Menlo"]/dev/sda1 15G 45M 14G 1% /var/www[/font]
    [font="Menlo"]pi@raspberry ~ $ ls -la /var/www[/font]
    [font="Menlo"]total 32[/font]
    [font="Menlo"]drwxrwxrwx 4 pi root 4096 Mar 4 11:13 .[/font]
    [font="Menlo"]drwxrwxrwx 12 root root 4096 Mar 1 11:35 ..[/font]
    [font="Menlo"]-rw------- 1 pi pi 243 Mar 4 11:12 index.html[/font]
    [font="Menlo"]drwx------ 2 pi root 16384 Mar 4 10:48 lost+found[/font]
    [font="Menlo"]drwxrwxrwx 3 pi pi 4096 Mar 4 11:14 viewer[/font]

    [font="Menlo"]Danke[/font]

    Übrigens den WebServer habe ich nach folgender Anleitung aufgesetzt (allerdings ohne WordPress)http://www.manfred-steger.de/tuts/20-der-ei…em-raspberry-pi

    Hallo,
    ich bin stolz auf mich
    Ich bin selbst drauf gekommen, ich habe die Rechte für die index.html erhöht.

    Ich werd zum Profi wow

    Viele Grüße

    Einmal editiert, zuletzt von Hyrican99 (4. März 2014 um 13:18)

  • Code
    pi@raspberry ~ $ ls -la /var/www
    total 32
    drwxrwxrwx  4 pi   root  4096 Mar  4 11:13 .
    drwxrwxrwx 12 root root  4096 Mar  1 11:35 ..
    -rw-------  1 pi   pi     243 Mar  4 11:12 index.html
    drwx------  2 pi   root 16384 Mar  4 10:48 lost+found
    drwxrwxrwx  3 pi   pi    4096 Mar  4 11:14 viewer

    Das Verzeichnis /var/www/ gehört dem Benutzer pi und der Gruppe root (das aktuelle Verzeichnis wird durch " . " angezeigt).
    Das Übergeordnete Verzeichnis (also /var/) gehört dem Benutzer root und der Gruppe root (das übergeordnete wird durch " .. " angezeigt)

    Die index.html Datei gehört dem Benutzer pi und hat auch nur Lese+Schreib Rechte (read / write) für den Besitzer (also dem Benutzer pi)

    Der Webserver läuft aber über den Benutzer www-data , dieser darf also die Datei index.html nicht lesen da ihm dazu die Rechte fehlen


    Um später nicht Probleme zu kriegen solltest du das Verzeichnis /var/www/ vollständig in die Obhut vom Webserver Benutzer www-data geben, und am besten auch die Ordner in dem Verzeichnis... Das erreichst du indem du den Owner änderst, mit folgendem Befehl:

    Code
    chown -R www-data:www-data /var/www


    Das -R steht für recursive , damit werden also auch alle Verzeichnisse und Dateien in dem Ordner geändert.

  • Hallo,
    so erstmal großen Dank.

    Ich habe die Besitzer geändert und bekomme jetzt folgende Ausgabe:

    [font="Menlo"]drwxrwxrwx 4 www-data www-data 4096 Mar 4 11:13 .[/font]
    [font="Menlo"]drwxrwxrwx 12 root root 4096 Mar 1 11:35 ..[/font]
    [font="Menlo"]-rw-rw-rw- 1 www-data www-data 243 Mar 4 11:12 index.html[/font]
    [font="Menlo"]drwx------ 2 www-data www-data 16384 Mar 4 10:48 lost+found[/font]
    [font="Menlo"]drwxrwxrwx 3 www-data www-data 4096 Mar 4 11:14 viewer[/font]

    [font="Menlo"]jetzt sollte, hoffe ich, alles Gut sein ;-)[/font]

    [font="Menlo"]Dann habe ich noch eine Verständnis Frage:[/font]

    [font="Menlo"]Ich könnte doch noch eine USB Festplatte an den PI anschließen und diese dann genauso wie den USB Stick formatieren und mounten. Dann wird der Speicher für das Verzeichnis www einfach um die USB Platte erweitert. Sehe ich das so richtig. Liegt hier der Vorteil der doch für einen Neuling umständlichen Handhabung von Speichermedien und Verzeichnissen?[/font]

    [font="Menlo"]Eine weitere Frage:[/font]
    [font="Menlo"]Wenn ich jetzt den PI herunterfahre, dann die SD Karte in meinen MAC stecke und alles sichere, könnte man bei einem Absturz den PI mit einer neuen SD Karte wieder in den jetzigen Zustand versetzen, oder? Mir geht es nicht um die Daten unter dem Verzeichnis var/www die sind ja sowieso auf dem MAC vorhanden und werden in der Timecapsule zusätzlich gesichert.[/font]

    [font="Menlo"]Viele Grüße und Danke[/font]

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!