Welches Backend + Hosting für kleine Webseiten?
Ich möchte eine Webseite für ein kleines Unternehmen erstellen.
Sie wird ziemlich Frontend-lastig sein bis auf ein zwei Besonderheiten:
- Ein Kontakt-Formular, bei dem man eine Nachricht eingeben kann, die dem Unternehmer dann automatisch per Email zugesandt wird
- Ein Blog, bei dem der Unternehmer selbst Posts (bestehend aus Text & Bildern) erstellen kann, in einer Art Admin-Panel mit WYSIWYG-Editor, und diese direkt oder zu einem bestimmten Zeitpunkt automatisch veröffentlichen kann
Beim Frontend fällt die Technologie-Auswahl noch relativ leicht, TypeScript und ein gängiges Framework wie z.B. React.
Als Datenbank würde ich MySQL oder PostgreSQL verwenden.
Beim Backend weiß ich nun aber nicht weiter.
Welches Framework würde sich für eine Webseite dieser Größe am besten anbieten?
Es sollte beim Hosting billig sein (z.B. durch niedrigen RAM-Verbrauch), der Code sollte einfach und schnell zu schreiben sein, und es sollte die oben genannten Features möglichst einfach ermöglichen.
Express, Next.js, Laravel, Django, Flask, ASP.Net, Spring, ... ?
Was würdet ihr nehmen und warum?
Und zum Hosting, muss ich die Webseite auf einem vServer hosten, oder reicht auch ein Webspace?
3 Antworten
Nimm ein CMS. Das stellt dem Unternehmer eine einfach bedienbare Oberfläche bereit, über die er Bilder und Artikel (via WYSIWYG-Editor) verwalten kann. Oft gibt es da auch schon eine Integration für Webformulare (Forrm Builder o.ä.), die den Versand von E-Mails erlauben. Es gibt keinen Grund, für all das selbst etwas entwickeln zu wollen. Vor allem wenn es darum geht, eine möglichst schnelle, einfache und kostengünstige Lösung zu finden.
Optionen sollte es in Vielzahl geben: CraftCMS, Drupal, Grav, Strapi, WordPress, usw.. Das Entwickeln des Themes (Frontend) steht dir in der Regel selbst offen und du musst dich maximal mit irgendeiner Template-Engine beschäftigen, um Templates anzupassen oder zu kreieren.
Und zum Hosting, muss ich die Webseite auf einem vServer hosten, oder reicht auch ein Webspace?
Das ist abhängig davon, welche Zugriffe und Konfigurationsmöglichkeiten du brauchst. Daher würde ich frühestens nach Wahl des CMS eine tatsächliche Entscheidung treffen.
Nach dem, was du bisher beschreibst, sehe ich einen vServer vorerst nicht als notwendig an. Eine Einrichtung für den E-Mail-Versand bekommst du auch bei Webhosting-Paketen.
In der Regel hat man bei CMS vollkommene Freiheit in der Gestaltung in der Umsetzung des Frontends. Also ja, du könntest Three.js & Co. einsetzen.
Mit Templates sind eben nur Vorlagen gemeint, die neben dem HTML-Code Platzhalter beinhalten. In diese Platzhalter werden später die konkreten Daten aus der Datenbank (o.a. Daten - z.B. Subtemplates) eingefügt. Du kannst es mit üblichen PHP-Dateien vergleichen: Du hast HTML und dazwischen PHP-Tags (die Platzhalter), über die Daten dynamisch vorbereitet/eingefügt werden.
Bei einem CMS denkt man nun normalerweise komponentenbasiert. Für jeden Seitentyp gibt es ein eigenes Template, welches Subtemplates inkludiert (z.B. für Header, Footer, konkrete Komponeten im Inhaltsteil, ...). Das hat den Vorteil, dass Komponenten auf mehreren Seiten wiederverwendet werden können.
Wie die Templates konkret gestaltet sind (Syntax, u.ä.), hängt vom CMS ab. Manche nutzen Template-Engines wie Twig oder Thymeleaf. In anderen werden die üblichen Mittel verwendet, die die zugrundeliegende Technologie schon mit sich bringt (z.B. Razor Views bei ASP.NET-basierten CMS). Schau bei Wahl des CMS am besten im Vorfeld, inwiefern das bei diesem geregelt ist.
Ich glaube, du denkst zu kompliziert.
Du wirst sicherlich nicht der erste Mensch auf dieser Welt sein, der eine simple Webseite, die auch von Laien gepflegt werden kann, umsetzen will.
Vor dieser Aufgabe standen eher schon tausende, oder eher Millionen Menschen, und das schon, seit es das Internet gibt.
Entsprechend kann man davon ausgehen, dass es dafür bereits Lösungen gibt, und man nicht alles von Grund auf selbst Programmieren muss, denn dann würde man das Rad neu erfinden.
Was du suchst, ist ein Content Management System, kurz CMS. Und davon gibt es viele.
Ein Content Management System tut auch so ziemlich das, was der Name verspricht: Es übernimmt die Speicherung und Verwaltung deiner Website-Inhalte und spielt sie aus.
Die meisten CMS funktionieren so, dass alle Daten bzw. Inhalte in einer Datenbank gespeichert werden (wobei das CMS in der Regel eine bestimmte Datenbank vorgibt, meist MySQL). Die Inhalte werden dann vom CMS beim Aufruf einer Seite in vorgegebene Templates (auch "Themes" oder "Designs") eingebaut und ausgespielt. Zudem stellen CMS oft auch Funktionalitäten wie SEO, Blogs, Suche, Zugriffsverwaltung uvm. bereit, oft auch erweiterbar über Addons.
Im einfachsten Szenario installiert man ein CMS auf einem Webserver, lädt sich ein fertiges Theme, befüllt die Webseite mit Inhalten, und fertig ist die Laube.
Oft sind natürlich eigene Designs gewünscht, aber auch das ermöglichen die meisten CMS, indem man eben ein eigenes Theme und eigene Module aufbaut.
Mit folgenden CMS habe ich zumindest kurz gearbeitet, und meine persönliche Meinung dazu:
Wordpress - In Ordnung für das einfache Szenario, Theme laden, Inhalt einpflegen, fertig. Eigene Module und Themes zu Entwickeln empfand ich aber in Wordpress als sehr umständlich und teilweise sogar einfach nur dämlich schlecht.
Typo3 - Würde ich eher für umfangreichere Webseiten empfehlen. Es ist gut darin, die Website-Inhalte zu strukturieren und übersichtlich zu halten. Wie man eigene Themes und Module aufbaut, erfordert etwas mehr Erfahrung, aber wenn man weiß wie, klappt es ganz gut.
Drupal - habe ich auch nur sehr kurz angeschaut, ist für bestimmte Spezialfälle gut geeignet, vor allem, wenn man viele "Objekte" hat, die man kategorisieren möchte.
Redaxo - Ein kleines, unbekanntes CMS, aber tatsächlich mein Favorit. Außerdem "Made in Germany" mit vorwiegend deutscher Community. Man bekommt zunächst ein komplett leeres CMS, ohne irgendwelche Themes oder Inhalte. Man kann dann eigene Templates und Module aufbauen, wofür man eigentlich nur HTML, CSS, JS und ein bisschen PHP braucht, man muss aber relativ wenig zum CMS selbst lernen. Die selbst programmierten Module kann man dann wie Bausteine in die Templates einbauen.
Was alle diese Systeme eben gemeinsam haben, ist, dass du dir eben keine Gedanken dazu machen muss, wie du deine Sachen in die Datenbank bekommst oder wie sie ausgespielt werden, und wie auch Laien die Webseite bedienen können.
Viele CMS setzen auf PHP und MySQL auf, was die Standardausstattung der meisten Webserver ist.
Aber natürlich möchte ich an der Stelle dazu raten, dir einfach mal die verschiedenen CMS anzuschauen, es gibt wie gesagt sehr viele, und weitaus mehr, als ich aufgezählt habe.
Ansonsten wäre das Thema Server Side Rendering (SSR) vielleicht noch ein Thema für dich, damit kann man mit Frameworks (wie React oder Vue) auch statische Seiten aufbauen.
dass du dir eben keine Gedanken dazu machen muss, wie du deine Sachen in die Datenbank bekommst oder wie sie ausgespielt werden
Würd ich aber gerne, ich bin Web-Entwickler und brauch was für‘s Portfolio 😂 Ich glaub ein CMS bedient zu haben kommt da nicht ganz so gut rüber wie eine komplett selbstgebaute Webseite.
Und ich fühl mich schon fast schlecht dabei, einem Kunden so eine Fertig-Lösung zu verkaufen.
Aber wenn‘s so einfacher geht ist das wohl der übliche weg. Dann werd ich‘s mir mal beibringen. Danke für die Tipps.
Kunden lieben es, wenn alles selbstgebastelt und unerprobt ist, und dazu noch deutlich länger dauert und entsprechend teurer ist, als wenn man es einfach so gemacht hätte, wie jeder andere Webentwickler auch, und ein CMS verwendet.
Ich würde schätzen, 90%+ der klassischen Webseiten (also nicht Webapps) benutzen ein CMS.
Weil professionelle Webentwickler das so machen.
Ein CMS ist ein Werkzeug, das man als Webentwickler beherrschen sollte. Und wenn man ein gutes CMS gut beherrscht, dann kann man damit alles an Webseiten umsetzen.
Den Kunden ist es völlig egal, wie die Webseite funktioniert. Sie bezahlen dich nicht dafür, ein CMS zu entwickeln, sondern eine Webseite.
Ein Handwerker fängt auch nicht damit an, sich Hammer, Zange und Bohrmaschine selbst zu bauen.
Du versuchst ein Problem zu lösen, das schon 100 mal gelöst wurde, von Leuten, die vermutlich deutlich besser wissen, was sie da tun, als du und ich.
Ein professioneller Webentwickler, der Webseiten macht, sollte mit Content Management Systemen umgehen können.
Ein CMS ist eigentlich das wichtigste Werkzeug, um klassische Webseiten aufzubauen.
Und das ist eben der Punkt: Es ist einfach nur ein Werkzeug. Kein Kunde wird sich beschweren, dass ein Webentwickler ein erprobtes und zuverlässiges Werkzeug benutzt, das in der Industrie als Standard gilt. Im Gegenteil, viele erwarten genau das.
(...) Ich glaub ein CMS bedient zu haben kommt da nicht ganz so gut rüber (...)
Ganz im Gegenteil. Wenn ein Arbeitgeber in einer Bewerbung sieht, dass du schon einmal Webseiten mit CMS XY gebaut hat, weiß er schon einmal, dass dir eine Einarbeitung in das CMS Z, welches in seiner Firma verwendet wird, nicht so schwerfallen wird, als wenn du komplett bei Null beginnst. Die Nutzung eines CMS (oder ähnlicher Systeme) ist bei Webunternehmen heutzutage Standard. Eigenkreationen bringen mehr Nachteile (das Rad wird meist mit Ecken neu erfunden; der Aufwand für Entwicklung und Wartung ist hoch).
Vielleicht machst du gerade den Fehler und verwechselst CMS mit Baukastensystemen, doch das sind zwei unterschiedliche Anwendungstypen.
Letztere stellen dem Nutzer eine Auswahl an Modulen zur Verfügung, mit denen er seine Webseite bauen kann. In der Regel ist die Zielplattform immer das Web und die Möglichkeiten einer Individualisierung/Erweiterung sind stark begrenzt oder gar nicht erst vorhanden.
Ein CMS hingegen ist viel flexibler. Im Kern gibt es eine Datenquelle (Datenbank/Datei/...), eine Webanwendung, die eine grafische Oberfläche zur Verwaltung der Daten bietet und eine Schnittstelle, um die Daten abzugreifen. Verschiedene Features (wie z.B. Routing, Caching-Strategien, Template-Engines, ein Accountsystem, u.ä.) sind bereits integriert. In den meisten Fällen kannst du nun CMS-Templates erstellen (wo der Nutzer seine Daten im CMS handhabt) und immer auch Rendering Templates kreieren/anpassen. Ohne Kenntnisse über die entsprechenden Webtechnologien kommst du da also nicht weit. Letzten Endes nutzt du die gleichen Grundkenntnisse, die du auch beim Bau einer Webseite ohne CMS anwenden würdest.
Vercel ist super. Wenn du React nutzt kannst du Frontend und Backend mit Next.js machen.
Template klingt immer so eingeschränkt, weshalb ich mich bisher davon ferngehalten habe … ist dem so, oder hat man auch bei einem CMS völlige Freiheit in der Gestaltung der Oberfläche?
Kann ich bei einem CMS z.B. auch HTML / CSS / JS Code einfügen, um mit Spline, Three.js und Tailwind ein paar schöne Oberflächen und speziellere Funktionalitäten zu basteln?