Amazon EFS: Ändern des WordPress-Upload-Verzeichnisses auf außerhalb des Root-Verzeichnisses

Lesezeit: 3 Minuten

Amazon EFS Andern des Wordpress Upload Verzeichnisses auf auserhalb des Root Verzeichnisses
Keith Pickering

Ich habe mehrere AWS EC2-Instances, die über CodeDeploy von einem Git-Repository aktualisiert werden. Da jedoch die wp-content/uploads Ordner in Git ist unordentlich und schwer zu pflegen, ich versuche stattdessen, alle Uploads in ein Verzeichnis zu verschieben, das ich als EFS-Dateisystem gemountet habe. Auf diese Weise sollte ich die Uploads zwischen mehreren EC2-Instanzen teilen können.

Jetzt stoße ich jedoch auf ein neues Problem; Es gibt keine Möglichkeit für mich, den WP-Uploads-Ordner außerhalb des WP-Stammverzeichnisses festzulegen.

WordPress befindet sich unter /opt/bitnami/apps/wordpress/htdocs, worauf auch unsere Domain verweist. Das EFS-System ist montiert an /home/bitnami/efs. Da sich das EFS-Verzeichnis außerhalb des WP-Roots befindet, kann ich es nicht verlinken.

Ich habe dies mit einem Symlink zum Laufen gebracht, der die Standardeinstellung leitet wp-content/uploads Ordner in meinen gewünschten Pfad; Dies löst jedoch mein Problem nicht wirklich, da ich mich nicht darauf verlassen kann, dass der Symlink während der CodeDeploy-Bereitstellungen nicht überschrieben wird.

Also meine Fragen sind folgende:

  1. Ist es möglich, dass dieses Setup ohne einen Symlink funktioniert, sodass ich Bereitstellungen durchführen kann, ohne mir Sorgen machen zu müssen, dass Uploads betroffen sind?

  2. Wenn ein Symlink die einzige/beste Möglichkeit ist, dies zu ermöglichen, gibt es eine Möglichkeit, den Symlink zum Git-Repository hinzuzufügen oder auf andere Weise sicherzustellen, dass er während der CodeDeploy-Bereitstellungen erhalten bleibt?

Sie können Ihr EFS direkt mounten an /opt/bitnami/apps/wordpress/htdocs/wp-content/uploads um Symlinks zu vermeiden.

In deinem appspec.yml füge zwei Haken hinzu:

hooks:
    BeforeInstall:
      - location: /deploy/BeforeInstall.sh
        timeout: 3000
        runas: root
    AfterInstall:
      - location: /deploy/AfterInstall.sh
        timeout: 3000
        runas: root

Dann Verzeichnis erstellen deploy und zwei Dateien drin BeforeInstall.sh und AfterInstall.sh

BeforeInstall.sh unmounten Sie das EFS, wenn es gemountet ist

#!/bin/bash
if mount | grep /opt/bitnami/apps/wordpress/htdocs/wp-content/uploads > /dev/null; then
    sudo umount /opt/bitnami/apps/wordpress/htdocs/wp-content/uploads
fi

Mounten Sie dann EFS erneut über AfterInstall.sh nach der Bereitstellung

#!/bin/bash
sudo mount -t nfs4 -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2 fs-fxxxxxx.efs.us-west-2.amazonaws.com:/ /opt/bitnami/apps/wordpress/htdocs/wp-content/uploads

Hinweis: Sie können auch ganze . montieren wp-contents Verzeichnis, nicht nur uploads Ordner, damit das Update in themes und plugins werden auch automatisch in anderen EC2s reflektiert.

Außerdem ist Symlink eine bessere Lösung, sodass Sie sich keine Sorgen machen müssen, dass das EFS-Mount während der Bereitstellung versehentlich entfernt wird, wenn umount scheitert immer. Sie können den Symlink nach der Bereitstellung einfach mit neu erstellen AfterInstall Hook und Code in Datei hinzufügen AfterInstall.sh

#!/bin/bash
ln -s /home/bitnami/efs /opt/bitnami/apps/wordpress/htdocs/wp-content/uploads

  • Danke! Ihr letztes Codebeispiel ist eigentlich sehr nah an dem, was ich letztendlich gemacht habe. Aus irgendeinem Grund scheint CodeDeploy manchmal das Verzeichnis vor der Bereitstellung zu leeren und manchmal diesen Schritt zu überspringen. Wenn der Symlink also während eines Bereitstellungsversuchs noch vorhanden war, wird die AfterInstall.sh Skript würde fehlschlagen. Ich habe dies behoben, indem ich die geändert habe -s Flagge zu -sfn beim Erstellen des Symlinks – Wenn der Symlink bereits vorhanden ist, wird er einfach neu erstellt, anstatt die gesamte Bereitstellung fehlschlagen zu lassen. Jetzt scheinen meine Bereitstellungen ziemlich ausfallsicher zu sein. Danke für die Hilfe!!

    – Keith Pickering

    31. Januar ’18 um 16:47

.

202030cookie-checkAmazon EFS: Ändern des WordPress-Upload-Verzeichnisses auf außerhalb des Root-Verzeichnisses

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy