Appearance
Kapitel 19: Webseite veröffentlichen
19.1 Domain und Server kaufen
Was wird benötigt, um eine Webseite zu veröffentlichen?
- Domain (Webadresse, z.B.
www.meine-webseite.de) - Server (Computer, der Webseiten im Internet speichert)
- SSL-Zertifikat (für HTTPS-Verschlüsselung)
Domain kaufen#
bash
# Beliebte Domain-Registrare in Deutschland:
# - IONOS: https://www.ionos.de/
# - Strato: https://www.strato.de/
# - 1&1: https://www.1und1.de/
# - GoDaddy: https://www.godaddy.com/
# Schritte:
# 1. Domain-Suchtool verwenden (z.B. "meine-webseite.de" prüfen)
# 2. Wenn verfügbar: Kaufen
# 3. Account erstellen und bezahlen
# 4. Domain ist jetzt Ihr!Server kaufen (Hosting)
Shared Hosting (für kleine Webseiten) | VPS (Virtual Private Server, für größere Projekte) | Cloud-Hosting (skalierbar)
| Anbieter | Typ | Preis | Beschreibung |
|---|---|---|---|
| IONOS | Shared/VPS | Günstig | Sehr beliebt in Deutschland |
| Strato | Shared/VPS | Günstig | Auch sehr beliebt |
| Hetzner | VPS/Cloud | Mittel | Hochleistungs-Server |
| DigitalOcean | VPS (Droplets) | Günstig | Sehr entwicklerfreundlich |
| AWS (Amazon) | Cloud | Variabel | Für große Anwendungen |
Empfehlung für PHP-Anfänger:
- IONOS oder Strato Shared Hosting (billig, einfach)
- DigitalOcean (wenn Sie VPS lernen möchten)
19.2 Server-Konfiguration
Shared Hosting (einfach, meist automatisch)
- Login in Ihr Hosting-Control-Panel (z.B. IONOS/Strato Control-Panel)
- PHP-Version auswählen (PHP 8.x empfohlen)
- Datenbank erstellen (MySQL/MariaDB)
- Datenbankname
- Benutzername
- Passwort
- Host (meist
localhost)
- FTP-Zugang einrichten (für Datei-Upload)
VPS (Virtual Private Server) – Linux (Ubuntu) Beispiel
1. SSH-Verbindung herstellen
bash
# SSH-Verbindung zum Server
ssh root@ihre-server-ip
# Beispiel:
ssh root@192.0.2.1232. Software installieren (LAMP-Stack)
bash
# 1. System aktualisieren
sudo apt update && sudo apt upgrade -y
# 2. Apache Webserver installieren
sudo apt install apache2 -y
# 3. MySQL installieren
sudo apt install mysql-server -y
# 4. PHP installieren (mit MySQL-Unterstützung)
sudo apt install php libapache2-mod-php php-mysql -y
# 5. PHP-Erweiterungen installieren (häufig benötigt)
sudo apt install php-curl php-json php-cgi php-gd php-mbstring php-xml php-xmlrpc php-soap php-intl php-zip -y
# 6. Apache neustarten
sudo systemctl restart apache23. MySQL absichern und Datenbank erstellen
bash
# MySQL absichern
sudo mysql_secure_installation
# MySQL-Benutzer erstellen und Datenbank anlegen
sudo mysql -u root -p
# In MySQL-Konsole:
CREATE DATABASE meine_webseite CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'mein_benutzer'@'localhost' IDENTIFIED BY 'starkes_passwort';
GRANT ALL PRIVILEGES ON meine_webseite.* TO 'mein_benutzer'@'localhost';
FLUSH PRIVILEGES;
EXIT;4. Firewall konfigurieren
bash
# UFW (Uncomplicated Firewall) aktivieren
sudo ufw allow OpenSSH
sudo ufw allow 'Apache Full'
sudo ufw enable5. SSL-Zertifikat installieren (Let's Encrypt)
bash
# Certbot installieren
sudo apt install certbot python3-certbot-apache -y
# SSL-Zertifikat erstellen
sudo certbot --apache -d www.meine-domain.de -d meine-domain.de
# Automatische Erneuerung testen
sudo certbot renew --dry-run19.3 Code-Upload und Datenbank-Import
Code-Upload (FTP/SFTP)
FTP-Clients:
- FileZilla (kostenlos, Open Source)
- WinSCP (nur Windows)
- Cyberduck (macOS, Windows)
FileZilla verwenden:
- FileZilla öffnen
- Verbindungsdaten eingeben:
- Host:
ihre-server-ipoderftp.ihre-domain.de - Benutzername:
ihr-ftp-benutzer - Passwort:
ihr-ftp-passwort - Port:
21(FTP) oder22(SFTP)
- Host:
- Verbinden
- Dateien hochladen:
- Lokal: Ihre PHP-Dateien auf Ihrem Computer
- Server:
/var/www/html/(Standard Apache-Pfad unter Linux) - Oder:
/var/www/ihre-domain/public_html/(bei einigen Hostern)
- Dateien übertragen (Drag & Drop)
Code-Upload (SCP - Secure Copy, für VPS)
bash
# Dateien vom lokalen Computer auf den Server hochladen
scp -r /pfad/zu/ihren/php-dateien root@server-ip:/var/www/html/
# Beispiel:
scp -r ./meine-webseite root@192.0.2.123:/var/www/html/Code-Upload (Git - für Versionskontrolle)
bash
# Auf dem Server:
cd /var/www/html/
git clone https://github.com/ihr-benutzername/ihr-repository.git .
# Oder: Falls bereits geklont, aktualisieren
git pull origin mainDatenbank-Import (phpMyAdmin)
- phpMyAdmin auf dem Server öffnen (z.B.
http://ihre-domain.de/phpmyadmin) - Einloggen (mit MySQL-Benutzerdaten)
- Datenbank auswählen (die, die Sie auf dem Server erstellt haben)
- "Import" anklicken
- Datei auswählen (Ihre lokale
.sql-Datei) - "Ausführen" anklicken
Datenbank-Import (Kommandozeile)
bash
# Methode 1: Direkter Import
mysql -u mein_benutzer -p meine_datenbank_name < /pfad/zu/ihrer/sql-datei.sql
# Methode 2: Innerhalb der MySQL-Konsole
mysql -u mein_benutzer -p
USE meine_datenbank_name;
SOURCE /pfad/zu/ihrer/sql-datei.sql;
EXIT;Wichtig: Konfigurationsdatei auf dem Server aktualisieren!
php
<?php
// config.php (auf dem Server anpassen!)
define('DB_HOST', 'localhost');
define('DB_USER', 'mein_benutzer'); // Neuer Benutzername
define('DB_PASS', 'starkes_passwort'); // Neues Passwort
define('DB_NAME', 'meine_webseite'); // Neuer Datenbankname
// ... Rest der Konfiguration
?>19.4 Live-Test und ICP-Registrierung (nur für Webseiten in China)
Live-Test (Webseite auf dem echten Server testen)
- Domain im Browser eingeben:
http://www.ihre-domain.de/ - Funktionen testen:
- [ ] Startseite lädt
- [ ] Login/Registrierung funktioniert
- [ ] Formulare funktionieren
- [ ] Datenbank-Verbindung funktioniert
- [ ] Bilder werden angezeigt
- [ ] Keine Fehler/Ausnahmen
- Fehler beheben:
- Fehlerprotokolle (Error Logs) prüfen:
- Apache:
/var/log/apache2/error.log - PHP:
/var/log/php/error.logoderphp.ini->error_logPfad
- Apache:
display_errors = Offinphp.inisetzen (für Produktion!)log_errors = Oninphp.inisetzen
- Fehlerprotokolle (Error Logs) prüfen:
ICP-Registrierung (nur für Webseiten in China)
Was ist ICP (Internet Content Provider)?
- Alle Webseiten, die in China gehostet sind und über chinesische Domain (
.cn) erreichbar sind, müssen bei der chinesischen Regierung registriert sein (ICP-Nummer). - Ausländische Domains (
.de,.com, etc.) auf Servern außerhalb Chinas müssen nicht ICP-registriert sein.
Wie ICP registrieren?
- Hosting-Anbieter kontaktieren (chinesischer Anbieter, z.B. Alibaba Cloud, Tencent Cloud)
- Dokumente einreichen:
- Personalausweis oder Reisepass (für Einzelpersonen)
- Geschäftslinzenz (für Unternehmen)
- Unterzeichnete ICP-Registrierungsformulare
- Warten (der Prozess dauert meist 2-4 Wochen)
- ICP-Nummer erhalten (muss auf der Webseite im Footer angezeigt werden!)
Wichtige Sicherheitsmaßnahmen für Live-Server!
display_errors = Offinphp.ini(keine Fehler im Browser anzeigen!)session.cookie_secure = Oninphp.ini(nur HTTPS für Sessions)session.cookie_httponly = Oninphp.ini(XSS-Schutz für Cookies)- HTTPS erzwingen (HTTP zu HTTPS Weiterleitung)apache
# .htaccess (Apache) RewriteEngine On RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] - Regelmäßige Backups erstellen (Datenbank + Dateien)
- Software aktuell halten (PHP, MySQL, Apache, etc.)
- Starke Passwörter verwenden (für Datenbank, FTP, SSH)
Zusammenfassung
In diesem Kapitel haben Sie:
- ✅ Gelernt, wie man Domain und Server kauft
- ✅ Server-Konfiguration durchgeführt (Shared Hosting und VPS)
- ✅ Code auf den Server hochgeladen (FTP, SCP, Git)
- ✅ Datenbank auf dem Server importiert
- ✅ Live-Test durchgeführt und häufige Fehler behoben
- ✅ (Für China) ICP-Registrierung verstanden
Nächstes Kapitel: Wir werden Lernressourcen und Interviewfragen lernen.
Übungsaufgaben:
- Kaufen Sie eine Domain und einen Shared-Hosting-Server (oder verwenden Sie einen kostenlosen Hosting-Dienst für Tests, z.B.
000webhost.com) - Laden Sie eine einfache PHP-Webseite auf den Server hoch und testen Sie sie
- Importieren Sie eine Datenbank auf dem Server
- Konfigurieren Sie
php.inifür Produktionsumgebung
Häufige Fehler:
- ❌
display_errors = Onauf Live-Server → Sicherheitsrisiko! - ❌ FTP statt SFTP verwenden → Passwort wird im Klartext übertragen!
- ❌ Datenbank-Verbindungsdaten in Code belassen → Sicherheitsrisiko! (Verwenden Sie Umgebungsvariablen!)
- ❌ Keine Backups erstellen → Datenverlustgefahr!
