2016-03-28 19 views
1

Ich entwickle meine Webanwendung auf einem gehosteten Server. Ich benutze eine IDE, die die Dateien, die ich bearbeite, automatisch herunterlädt/hochlädt. Ich möchte einen zweiten Server einrichten (d. H. Development.domain.com), den ich für die Arbeit an Updates verwenden werde. Wenn ich ein Update abgeschlossen und getestet habe, wie kann ich alle Änderungen auf den Release-Server übertragen (Datenbankschemaänderungen, Dateiänderungen/-ergänzungen/-löschungen, Systemänderungen in Cron usw.)? Gibt es irgendeine Software, die dies für mich mit einer Taste erledigt, oder muss ich alle Änderungen, die ich mache, im Auge behalten, dann die Dateien kopieren und die Änderungen auf dem Produktionsserver einzeln vornehmen? DankEinrichten der Entwicklung/Produktion PHP/MYSQL Server

+1

git für Quellcode-Tracking und Ihre Datenbank-Updates sollten von Software verwaltet werden, die Sie schreiben. –

Antwort

0

Ich würde eine kontinuierliche Integration oder kontinuierliche Bereitstellung Lösung mit Quellcodeverwaltung prüfen.

3

Es ist ein schönes Problem und wird von vielen frühen Entwicklern konfrontiert. Wir, bei StrollUp, verwenden Tomcat und Elastic Bohnenstange und den Einsatz auf Produktionsmaschinen ist gesorgt. So ist es einfach für uns, eine WAR-Datei von unserer Entwicklungsumgebung auf den PC zu laden. Sie können auch Elastic beanstalk versuchen. Einige PHP-Frameworks wie Laravel bietet diese Funktionen wie RoR. Aber mit Ihrem eigenen PHP-Code und einzelne Instanz prod Server Sie diesen Richtlinien folgen können:

  1. Code Pushing Server Prod:

    1. Sobald Sie Ihre Entwickler Code getestet haben, laden Sie das gesamte Verzeichnis von/var/www/html/YOUR_PROJECT (komprimiert dh. YOUR_PROJECT.gz oder YOUR_PROJECT.phar) zu Ihrem Prod-Server (nicht eins nach dem anderen hochladen, es besteht die Möglichkeit, dass einige Dateien erfolgreich hochgeladen werden, einige nicht)
    2. Entpacken die komprimierte hochgeladene Datei auf dem Prod Server
  2. db Übertragen von Änderungen:

    1. Db Änderungen enthält möglicherweise DDL und DML beide. Der beste Weg, sie auf Prod zu übertragen, ist, die sqls in der Reihenfolge zu speichern, die Sie in Ihrer Entwicklungsumgebung ausgeführt haben, und sie kurz vor dem Entpacken Ihres komprimierten Projekts auf dem Prod-Server auszuführen.
    2. Ein anderer Weg (nicht vorgeschlagen, aber es funktioniert für mich) ist, die gesamte dev-Datenbank (offensichtlich nicht die Benutzer- oder Protokolltabellen) in Ihre prod-Datenbank zu schreiben.
  3. übertragen Crons:

    1. ich alle cron von dev prod einfach kopieren. Sie können es in einem Bash-Skript tun.

      crontab -r #remove alle aktuellen Cronjobs
      crontab cron.txt # setzen alle in cron.txt aufgeführt cronjobs

Der beste Teil über die obigen Schritte: Sie können setzen alle obigen Schritte in einem Bash-Skript und führen es in einer Zeile aus.Das wird wie Ihre eigene Software mit einem Klick-Button;) Ich habe "One-Click" -Skripten für mich gemacht, aber sie sind spezifisch für Tomcat und Elastic Beanstalk. Sie können einen Blick haben es Ihnen ein paar Ideen, geben könnte, wie es weitergeht: AWS Deploy

Wichtigste: Nehmen Sie db Sicherung der beiden Datenbanken, bevor SQL-Abfrage auf prod Server ausgeführt wird. Verwenden Sie ein VCS (Git, Bitbucket ist eine gute Option), um alle Ihre Änderungen sicher zu halten.