Was könnte schlecht an der Verwendung symbolischer Links mit local.xml sein?


7

Zusammenfassung

In erster Linie arbeitet niemand gerne an Produktionsanwendungen. Daher ist es ratsam und eine gute Praxis für jemanden, separate Geschäfte einzurichten. Meine Struktur ist wie folgt:

  • dev.magento.local -> Entwicklungsspeicher;
  • stage.magento.local -> UAT / QA-Speicher;
  • magento.local -> Produktionsgeschäft;

In der Zwischenzeit wird der Speicher in der Quellcodeverwaltung verfolgt, einschließlich app/etc/local.xmldes ersten Konflikts dieser Struktur. Sobald der Magento-Installationsprozess abgeschlossen ist und wir die Datei local.xml haben, war die Idee:

1) Exportieren Sie den kürzlich installierten, jedoch frischen Magento-Store.

icanhas$ mysqldump --single-transaction magestore_dev > magestore_dev.dmp.sql

2) Importieren Sie dann die Struktur für die verbleibenden Umgebungen.

icanhas$ mysql -u'magestage_user' -p'magestage_pwd' < magestore_dev.dmp.sql
icanhas$ mysql -u'mageprod_user' -p'mageprod_pwd' < magestore_dev.dmp.sql

3) In den neuen Umgebungen müssen die URLs korrigiert werden, obwohl dies jenseits dieser Frage liegt. Nehmen wir an, dass sie fertig sind.

4) Wie bereits erwähnt, müssen wir den Konflikt mit lösen, app/etc/local.xmlalso habe ich die folgenden Verzeichnisse erstellt:

  • /app/etc/development/local.xml -> local.xml hierher verschoben ;
  • /app/etc/staging/local.xml -> Entwicklung / local.xml hier kopiert ;
  • /app/etc/production/local.xml -> Entwicklung / local.xml hier kopiert ;

5) Ich habe die Datenbankanmeldeinformationen für jede Umgebung korrigiert. Diese wurden in das Repository übernommen.

6) Schließlich musste ich so die folgenden symbolischen Links erstellen:

  • Auf dev.magento.local ; app/etc/local.xml -> app/etc/development/local.xml;;
  • On stage.magento.local ; app/etc/local.xml -> app/etc/staging/local.xml;;
  • Auf magento.local ; app/etc/local.xml -> app/etc/production/local.xml;;

Fragen

  1. Könnte die Verwendung dieser Methode etwas Schlechtes sein?
  2. Schreibt Magento nach der Installation zu irgendeinem Zeitpunkt in diese Datei?

Jeder Rat wäre sehr dankbar.


Verdammt, das ist klug.
Benmarks

Antworten:


6

Meiner Meinung nach ist local.xml kein Problem, das Sie bei der Versionskontrolle angehen müssen. Es ist auch aus sicherheitstechnischer Sicht fraglich.

Ich empfehle Ihnen, einfach /app/etc/local.xmlin .gitignore zu platzieren und es einmal in Ihren individuellen Umgebungen einzurichten.


3

Magento sollte nach der Installation nicht in local.xml schreiben (ich habe dieses Verhalten noch nie gesehen). Das Schlechte an Ihrem Ansatz ist, dass es normalerweise empfohlen wird, das Speichern von Konfigurationsdateien im Repository Ihres Projekts zu vermeiden .

Ein Grund hängt mit der Sicherheit zusammen. Jeder, der Zugriff auf das Repository hat, verfügt jetzt über vertrauliche Informationen zu Ihrer Infrastruktur. Es könnte unwahrscheinlich sein, dass Sie ins Visier genommen werden, oder es würde passieren, aber die Leute neigen dazu, der Konvention zu folgen, weil es nicht so schwierig ist, dies zu tun.

Wenn erwartet wird, dass Ihr Team / Ihre Organisation wächst, ist es eine gute Idee, Anwendungscode und Konfiguration zu trennen. Welches kann dann mit den entsprechenden Technologien verwaltet werden.


1

Ich kann mir nichts Schlimmes vorstellen, solange die zusätzlichen Dateien nicht weltweit zugänglich sind (was bei einer Standardinstallation nicht der Fall wäre). Ich kann mir keine Fälle vorstellen, in denen der Kern in local.xml schreibt (bereit, dies zu korrigieren), einige Erweiterungen könnten dies jedoch tun, aber dies sollte ohnehin kein Problem mit Ihrem Setup sein, da es in geschrieben werden sollte die entsprechende Datei trotzdem über den Symlink.

Persönlich neigen wir dazu, local.xml außerhalb der Quellcodeverwaltung zu halten. Für die Entwicklung kopiere ich einfach die local.xml aus dem letzten Projekt, an dem ich gearbeitet habe, und ändere den Datenbanknamen, da sich dies tendenziell ändert. Und Produktion / Staging erstellen wir einfach auf dem Server.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.