Ergebnis 1 bis 4 von 4

Thema: Contao Installation duplizieren

  1. #1
    Contao-Fan Avatar von Babelfisch
    Registriert seit
    30.06.2009.
    Ort
    Leipzig
    Beiträge
    894

    Standard Contao Installation duplizieren

    Da ich es gerade selber brauchte und es sicherlich noch andere Leute gibt, die immer mal eine komplette Contao-Installation duplizieren müssen, poste ich hier mal eine kurze Anleitung für UNIX-Systeme. Gedacht ist es (zumindest in meinem Fall) zum schnellen Erstellen eines Testsystems aus einem Livesystem. Das ganze wird über ein kleines Shellscript realisiert - es ist also Shellzugriff notwendig.

    Wir erstellen also als erstes eine Datei, nennen sie bspw. copy_contao.sh und packen an den Anfang die verwendete Shell:

    Code:
    #!/bin/sh
    In dem Script definieren wir dann unsere Pfade zu den Contao-Installationen:

    Code:
    CONTAO_LIVE_PATH=/home/www/contao_live
    CONTAO_TEST_PATH=/home/www/contao_test
    Damit wir die Installation ohne Rückmeldungen kopieren können, löschen wir ein bestehendes Testsystem vorher:

    Code:
    echo "1/5 Lösche ${CONTAO_TEST_PATH}"
    rm -rf ${CONTAO_TEST_PATH}
    Im nächsten Schritt kopieren wir das ganze Contao-Verzeichnis des Livesystems:

    Code:
    echo "2/5 Kopiere ${CONTAO_LIVE_PATH} > ${CONTAO_TEST_PATH}"
    cp -a ${CONTAO_LIVE_PATH} ${CONTAO_TEST_PATH}
    Als nächstes kopieren wir die Datenbank. Die Zieldatenbank für das Testsystem muss schon bestehen, muss jedoch nicht leer sein, da wir DROP TABLES beim Export mit erstellen:

    Code:
    echo "3/5 Dupliziere db_live > db_test"
    mysqldump -uuser_live -ppassword --add-drop-table db_live | mysql -uuser_test -ppassword --default-character-set=utf8 db_test
    Bei wem die Datenbank nicht über localhost angesprochen wird, der muss ggf. noch zwei mal -hdb_host mit angeben. mysqldump erstellt hier einen Dump mit DROP TABLE Anweisungen und der Dump wird sofort mysql zum Einspielen übergeben. Wichtig ist dabei, dass das Charset mit angegeben wird.

    Im nächsten Schritt passen wir Domaineinträge in der Seitenstruktur an. Ein dem Beispiel liegt das Live-System auf example.com und das Testsystem auf example.net:

    Code:
    echo "4/5 Passe Domains an"
    mysql -uuser_live -ppassword db_test -e "UPDATE tl_page SET dns=REPLACE(dns, 'example.com', 'example.net') WHERE dns LIKE '%example.com'"
    Über den gleichen Weg können natürlich auch noch weitere Anpassungen an anderen Tabellen erfolgen.

    Im letzten Schritt passen wir noch die Datenbank in der localconfig.php an:

    Code:
    echo "5/5 Passe localconfig.php an"
    sed -e 's/db_live/db_test/g' -i ${CONTAO_TEST_PATH}/system/config/localconfig.php
    Auch hier lassen sich noch weitere Felder (bspw. Passwort) anpassen. Weitere Infos zu sed gibt es bspw. hier.

    Damit ist unser Script auch schon fast fertig. Über chmod machen wir es jetzt noch ausführbar:

    Code:
    > chmod +x copy_contao.sh
    Danach rufen wir es auf uns freuen uns, wenn alles funktioniert ;-)

    Code:
    > ./copy_contao.sh
    Noch ein paar Hinweise:

    • Vorsicht! rm -rf löschen das angegeben Verzeichnis ohne Rückfrage! Also schön aufpassen, dass da alle Pfade stimmen und nicht auf einmal das Livesystem gelöscht wurde.
    • Mit syncCto gibt es eine Erweiterung, die etwas ähnliches bietet, für meine Fälle aber mit Kanonen auf Spatzen geschossen wäre.
    • Hier gibt es weitere Infos zu mysqldump und zu Shellprogrammierung unter Linux.


    So, dann viel Spaß beim Kopieren! Verbesserungsvorschläge, Hinweise oder Fragen sind natürlich willkommen.

    Gruß
    Meine aktiven Contao-Projekte: LingoliaStiftung firmm

  2. #2
    Contao-Fan Avatar von Babelfisch
    Registriert seit
    30.06.2009.
    Ort
    Leipzig
    Beiträge
    894

    Standard

    Hier noch mal das komplette Script, welches ich noch um Variablen für die Datenbanken angepasst habe. Ihr müsst also nur die Daten am Anfang eintragen, dann in Schritt 4 die Domains anpassen (sofern notwendig, ansonsten mit # auskommentieren) und in Schritt 5 die Ersetzungen in der localconfig.php überprüfen.

    Code:
    #!/bin/sh
    
    PATH_LIVE=/home/www/contao
    PATH_TEST=/home/www/contao_testsystem
    
    DB_HOST_LIVE=
    DB_NAME_LIVE=
    DB_USER_LIVE=
    DB_PASS_LIVE=
    
    DB_HOST_TEST=
    DB_NAME_TEST=
    DB_USER_TEST=
    DB_PASS_TEST=
    
    echo "Kopiere Contao in $PATH_TEST"
    
    echo "1/5 Lösche ${PATH_TEST}"
    rm -rf ${PATH_TEST}
    
    echo "2/5 Kopiere ${PATH_LIVE} > ${PATH_TEST}"
    cp -a ${PATH_LIVE} ${PATH_TEST}
    
    echo "3/5 Dupliziere db306943_5 > db306943_6"
    mysqldump -h${DB_HOST_LIVE} -u${DB_USER_LIVE} -p${DB_PASS_LIVE} --add-drop-table ${DB_NAME_LIVE} | mysql -h${DB_HOST_TEST} -u${DB_USER_TEST} -p${DB_PASS_TEST} --default-character-set=utf8 ${DB_NAME_TEST}
    
    echo "4/5 Passe Domains an"
    mysql -h${DB_HOST_TEST} -u${DB_USER_TEST} -p${DB_PASS_TEST} ${DB_NAME_TEST} -e "UPDATE tl_page SET dns=REPLACE(dns, 'example.com', 'example.org') WHERE dns LIKE '%example.com'"
    
    echo "5/5 Passe localconfig.php an"
    sed -e "s/${DB_HOST_LIVE}/${DB_HOST_TEST}/g" -i ${PATH_TEST}/system/config/localconfig.php
    sed -e "s/${DB_NAME_LIVE}/${DB_NAME_TEST}/g" -i ${PATH_TEST}/system/config/localconfig.php
    sed -e "s/${DB_USER_LIVE}/${DB_USER_TEST}/g" -i ${PATH_TEST}/system/config/localconfig.php
    sed -e "s/${DB_PASS_LIVE}/${DB_PASS_TEST}/g" -i ${PATH_TEST}/system/config/localconfig.php
    
    echo "fertig"
    Meine aktiven Contao-Projekte: LingoliaStiftung firmm

  3. #3
    Community-Moderator Avatar von schman
    Registriert seit
    19.06.2009.
    Ort
    Dornbirn
    Beiträge
    3.739
    User beschenken
    Wunschliste

    Standard

    Danke für das Skript, gefällt mir sehr gut

    Achja vielleicht auch noch interessant hier gibt es ebenfalls ein Shellskript das allerdings noch ein paar Dinge mehr kann.
    Ich wollte es nur mal erwähnen.
    http://www.toxa.de/installationspflege.html
    Kein Privat Support via PM.

  4. #4
    Contao-Fan Avatar von Babelfisch
    Registriert seit
    30.06.2009.
    Ort
    Leipzig
    Beiträge
    894

    Standard

    Also kleine Ergänzung für Schritt 5 habe ich noch folgende Ersetzung eingebaut:

    Code:
    sed -e "s/\$GLOBALS\['TL_CONFIG'\]\['displayErrors'\] = false;/\$GLOBALS\['TL_CONFIG'\]\['displayErrors'\] = true;/g" -i ${PATH_TEST}/system/config/localconfig.php
    Damit wird displayErrors in der Kopie gesetzt, was ja für Testsysteme ganz interessant ist.

    @schman: Danke für den Tipp. Die Scripte sind sehr interessant und nützlich. Eine lauffähige Kopie von Contao lässt sich (soweit ich das sehe) damit aber nicht machen und mein kleines Script hat noch seine Berechtigung.

    Gruß
    Meine aktiven Contao-Projekte: LingoliaStiftung firmm

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •