Web-Entwicklung ist nicht mehr das, was es einmal war. Früher bestand es darin, ein paar PHP-Skripte zu hacken (ich habe nichts gegen PHP, eigentlich ist es momentan meine Hauptprogrammiersprache), sie per FTP auf einen Webhost zu laden und das war es. Heute sind die Dinge komplizierter. Wie ich an einer Reihe von professionellen und modernen Websites (SO ist die wichtigste, ich denke, dass SO ein großartiges Beispiel für gute Praxis in Web-Entwicklung ist, selbst wenn es mit ASP.NET gemacht und auf Windows gehostet wird), zu entwickeln, zu sehen eine Website ist viel mehr als das:Wie erstelle ich eine richtige Website?
- der Code Website ist eigentlich in einem Repository (die kleine sVN Revision in der Fußzeile macht meine nerdy Gefühle kribbeln);
- Statische Dateien (CSS, JavaScript, Bilder) werden in einer separaten Domäne gespeichert;
Ok, das waren meine Beobachtungen. Jetzt für meine Fragen:
- Was machen Sie mit JavaScript und CSS-Dateien? Behalten Sie sie nicht unter Versionskontrolle? Das würde dumm erscheinen. Erstellen Sie ein separates Repository für sie?
- Wie richten Sie das Repository ein? Erstellst du einfach einen im Stamm des Webservers? Oder erstellen Sie eine Art Post-Commit-Trigger, der die neuesten Dateien an die entsprechenden Ziele kopiert?
- Was passiert, wenn mehrere Computer die Website ausführen und einige Änderungen an ihnen vornehmen möchten?
- Jedes solche Projekt muss Konfigurationsdateien haben. Diese unterscheiden sich vom lokalen Repository zum Remote-Repository. Auf meinem Entwicklungscomputer habe ich zum Beispiel kein MySQL-Root-Passwort, während ich auf dem Produktionsserver sicher ein Passwort habe. Dieses Passwort würde unter anderem in einer Konfigurationsdatei gespeichert werden, was auf meinem Rechner und auf dem Server völlig anders wäre. Vielleicht unterscheiden sie sich auch zwischen Produktionsmaschinen (wie ich bereits sagte, vielleicht läuft die Website auf mehreren Maschinen zum Lastenausgleich). Wie gehe ich damit um?
Ich suche ein neues Web-Projekt zu beginnen:
- Python + SQLAlchemy + Werkzeug + Jinja2
- Apache + modwsgi
- MySQL
- Mercurial
Was ich möchte, ist ein Best-Practice-Rat zur Verwendung der oben genannten Tools und Antworten s zu meinen Fragen oben.
Ich weiß nicht, welche Antwort zu akzeptieren. Alle von ihnen bieten sehr nützliche Einblicke. Eine der Antworten als "akzeptierte Antwort" zu wählen, erscheint jedoch unfair und falsch. Sie sind alle akzeptiert. Würde es gut sein, diesen Beitrag als Community-Wiki zu markieren? – Felix