Yii 2 Projekt mit ServBay erstellen und ausführen
Überblick: Was ist Yii 2?
Yii 2 ist ein leistungsstarkes, komponentenbasiertes PHP-Framework für die schnelle Entwicklung moderner Webanwendungen. Es folgt dem MVC-Prinzip (Model-View-Controller) und liefert eine umfangreiche Suite an Funktionen und Werkzeugen, die Entwicklern dabei helfen, skalierbare und qualitativ hochwertige Webanwendungen effizient zu erstellen. Yii 2 genießt aufgrund seiner starken Performance, flexiblen Architektur und mächtigen Built-in-Features (wie Cache, Sicherheit, RESTful API-Unterstützung, etc.) großes Ansehen.
Hauptmerkmale und Vorteile von Yii 2
- Hochleistungsfähig: Yii 2 ist optimiert und eignet sich hervorragend für performancekritische Anwendungen mit hohem Anfrageaufkommen.
- Modularität: Das Framework ist hochgradig modular aufgebaut, was die Strukturierung und Wiederverwendung von Komponenten erleichtert.
- Sicherheit: Inklusive zahlreicher Sicherheitsfunktionen, darunter Eingabevalidierung, Output-Filtering, CSRF/XSS-Schutz und ein flexibles Authentifizierungs-/Autorisierungsframework.
- Benutzerfreundlichkeit: Eine klare, intuitive API und umfassende Dokumentation sorgen für eine geringe Einstiegshürde und schnellen Projektstart.
- Starke Community: Eine aktive Entwickler-Community sowie ein großer Fundus an Drittanbieter-Erweiterungen machen Yii 2 zu einer verlässlichen Wahl.
- Integrierte Werkzeuge: Mächtige Kommandozeilen-Tools für Aufgaben wie Datenbankmigrationen und Codegenerierung steigern die Produktivität.
Yii 2 ist ideal geeignet für Unternehmensanwendungen, RESTful APIs, Portale und viele andere Arten von Webprojekten.
Yii 2 Projekt mit ServBay ausführen
ServBay ist eine speziell für macOS entwickelte lokale Web-Entwicklungsumgebung. Sie integriert PHP, diverse Datenbanken (z.B. MySQL, PostgreSQL, MongoDB, Redis), Webserver (Caddy, Nginx) sowie weitere Entwickler-Tools wie Composer, Node.js, Python, Go, Java u.v.m., um eine „Out-of-the-Box“-Plattform für Entwickler bereitzustellen.
Diese Anleitung zeigt Ihnen, wie Sie mit Hilfe von ServBay (insbesondere PHP, Composer und Datenbankdiensten) ein neues Yii 2 Basisprojekt anlegen und betreiben. Wir nutzen serviceseitig die „Website“-Funktion von ServBay zur Konfiguration des lokalen Webservers und demonstrieren Projektzugriff und Basisfunktionen in wenigen Schritten.
Voraussetzungen
Bevor Sie starten, vergewissern Sie sich bitte, dass:
- ServBay auf Ihrem macOS installiert und ausgeführt wird.
- Die benötigte PHP-Version (z.B. PHP 8.3 oder neuer) in ServBay installiert und aktiviert ist.
- Ihre gewünschte Datenbank (z.B. MySQL oder PostgreSQL) sowie Cache-Dienste (Memcached und Redis) in ServBay installiert und aktiviert sind.
Im Hauptfenster von ServBay können Sie Ihre installierten Pakete sowie deren Status einsehen und verwalten.
Ein neues Yii 2 Projekt anlegen
TIP
ServBay empfiehlt, Projektdaten im Verzeichnis /Applications/ServBay/www
abzulegen. Das erleichtert die Strukturierung und die Verwaltung über die „Website“-Funktion von ServBay.
Composer: ServBay enthält Composer bereits vorinstalliert. Sie müssen Composer nicht separat installieren und können den Befehl
composer
direkt im Terminal verwenden.Projektverzeichnis anlegen: Öffnen Sie das Terminal, wechseln Sie ins Standard-Web-Stammverzeichnis von ServBay und erstellen Sie einen neuen Projektordner.
bashcd /Applications/ServBay/www mkdir servbay-yii2-app cd servbay-yii2-app
1
2
3Mit Composer ein Yii 2 Projekt anlegen: Führen Sie im neuen Verzeichnis
servbay-yii2-app
den folgenden Composer-Befehl aus, um ein Basis-Yii-2-Projekt zu erstellen:bashcomposer create-project --prefer-dist yiisoft/yii2-app-basic .
1Dieser Befehl lädt das Yii 2 Basis-Template und alle Abhängigkeiten in das aktuelle Verzeichnis (
.
). Bitte gedulden Sie sich, bis der Composer-Vorgang abgeschlossen ist.Ins Projektverzeichnis wechseln: Stellen Sie sicher, dass Ihr Terminal sich im Projektstamm befindet (
/Applications/ServBay/www/servbay-yii2-app
). Weitere Befehle werden dort ausgeführt.bashcd /Applications/ServBay/www/servbay-yii2-app
1
Grundkonfiguration
Nach dem Erstellen des Yii 2 Projekts sollten einige Basiseinstellungen vorgenommen werden, insbesondere für die Datenbankanbindung und Komponenten.
Datenbankverbindung konfigurieren: Bearbeiten Sie die Datei
config/db.php
im Projektstamm. Je nachdem, welche Datenbankservices (MySQL oder PostgreSQL) und -einstellungen Sie bei ServBay nutzen (Standard-Benutzer ist gewöhnlichroot
, Standardpasswortpassword
, falls Sie es nicht geändert haben), passen Sie die Zugangsdaten an.Zunächst sollten Sie in der jeweiligen ServBay-Datenbank einen neuen Datenbanknamen für das Projekt anlegen, z.B.
servbay_yii2_app
. Dazu können Sie das integrierte Adminer-Tool von ServBay oder einen externen DB-Client wie Sequel Ace, TablePlus usw. verwenden. Adminer ist über den entsprechenden Bereich in der ServBay-Oberfläche erreichbar.Für MySQL:
php<?php return [ 'class' => 'yii\db\Connection', 'dsn' => 'mysql:host=127.0.0.1;dbname=servbay_yii2_app', // dbname: Name der erstellten Datenbank 'username' => 'root', // Ihr Datenbank-Benutzername 'password' => 'password', // Ihr Datenbank-Passwort 'charset' => 'utf8mb4', // utf8mb4 empfohlen, da umfangreicher Zeichensatz ];
1
2
3
4
5
6
7
8
9Für PostgreSQL:
php<?php return [ 'class' => 'yii\db\Connection', 'dsn' => 'pgsql:host=127.0.0.1;port=5432;dbname=servbay_yii2_app', // dbname: Name der erstellten Datenbank, port typisch 5432 'username' => 'root', // Ihr Datenbank-Benutzername 'password' => 'password', // Ihr Datenbank-Passwort 'charset' => 'utf8', 'schemaMap' => [ 'pgsql' => [ 'class' => 'yii\pgsql\Schema', 'defaultSchema' => 'public', // Standard-Schema von PostgreSQL ], ], ];
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15Wählen und passen Sie
config/db.php
entsprechend Ihrer Umgebung an.Cache und Redis-Komponenten konfigurieren: Öffnen Sie die Datei
config/web.php
im Projektverzeichnis. Bearbeiten oder ergänzen Sie den Abschnittcomponents
, um Memcached und Redis zu konfigurieren. Standard-Port für Memcached bei ServBay ist11211
, für Redis6379
.php<?php // ... weitere Konfigurationen 'components' => [ // ... bereits existierende Komponenten (z.B. request, cache, user, errorHandler, log, urlManager) 'cache' => [ 'class' => 'yii\caching\MemCache', 'servers' => [ [ 'host' => '127.0.0.1', 'port' => 11211, // Standardport Memcached 'weight' => 100, ], ], ], 'redis' => [ 'class' => 'yii\redis\Connection', 'hostname' => '127.0.0.1', 'port' => 6379, // Standardport Redis 'database' => 0, // Redis-Datenbank-Index ], // ... weitere Komponenten ], // ... weitere Konfigurationen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28Prüfen Sie, ob Memcached und Redis in ServBay aktiv sind. Um Redis als Cache nutzen zu können, benötigen Sie das Paket
yiisoft/yii2-redis
(dieses wird ggf. mitcomposer require yiisoft/yii2-redis
nachinstalliert). Für Memcached istyiisoft/yii2-memcached
üblich – ggf. bereits im Basistemplate enthalten.
Webserver einrichten (ServBay Website)
Nutzen Sie die „Website“-Funktion von ServBay, um den lokalen Webserver (Caddy oder Nginx) auf Ihr Yii 2 Projekt zu verweisen.
- ServBay öffnen: Starten Sie die ServBay-Anwendung.
- Zu den Website-Einstellungen navigieren: Wählen Sie in der Oberfläche den Punkt „Website“ oder eine ähnliche Navigationsoption.
- Neue Website hinzufügen: Klicken Sie auf das Symbol oder den Button zum Hinzufügen einer neuen Website (meist
+
oder „Hinzufügen“). - Website-Informationen eingeben:
- Name: Vergabe eines sprechenden Namens, z.B.
My First Yii 2 Dev Site
. - Domain: Die lokale Entwicklungsdomain, z.B.
servbay-yii2-test.local
. ServBay richtet die lokale DNS-Zuweisung selbstständig ein. - Website-Typ: Wählen Sie
PHP
. - PHP Version: Die gewünschte PHP-Version (z.B.
8.3
). Sie muss in ServBay installiert und aktiv sein. - Website-Stammverzeichnis: Sehr wichtig! Für ein Basis-Yii-2-Projekt lautet das öffentliche Wurzelverzeichnis
web
im Projektstamm:/Applications/ServBay/www/servbay-yii2-app/web
.
- Name: Vergabe eines sprechenden Namens, z.B.
- Speichern und anwenden: Speichern Sie die Einstellungen – ServBay aktualisiert die Webserver-Konfiguration automatisch.
Eine detaillierte Erläuterung finden Sie in der offiziellen ServBay-Dokumentation: Erste Website hinzufügen.
Für Ihre lokale Domain wird ServBay automatisch vertrauenswürdige SSL-Zertifikate ausstellen (über ServBay User CA oder ServBay Public CA), sodass Sie Ihre Website per HTTPS erreichen können.
Beispiel-Code zur Funktionsdemonstration hinzufügen
Um die Nutzung von Datenbank und Cache praktisch zu zeigen, können Sie dem Standardcontroller von Yii 2 Beispielaktionen hinzufügen.
Bearbeiten Sie die Datei controllers/SiteController.php
und ergänzen Sie die folgenden Methoden in der Klasse SiteController
:
<?php
namespace app\controllers;
use Yii;
use yii\web\Controller;
use yii\web\Response;
use yii\db\Exception as DbException; // Import der Datenbank-Exceptionklasse
class SiteController extends Controller
{
/**
* Startseite anzeigen.
*
* @return string
*/
public function actionIndex()
{
return $this->render('index');
}
/**
* Memcached-Demo.
*
* @return Response
*/
public function actionMemcached()
{
$cache = Yii::$app->cache;
$key = 'my_memcached_test_key';
$data = 'Hello Memcached from ServBay!';
$duration = 60; // 60 Sekunden cachen
if ($cache->set($key, $data, $duration)) {
$value = $cache->get($key);
return $this->asText("Memcached erfolgreich gesetzt. Wert: " . $value);
} else {
return $this->asText("Daten konnten nicht in Memcached gespeichert werden. Bitte überprüfen Sie Dienst und Konfiguration.");
}
}
/**
* Redis-Demo.
*
* @return Response
*/
public function actionRedis()
{
$redis = Yii::$app->redis;
$key = 'my_redis_test_key';
$data = 'Hello Redis from ServBay!';
try {
if ($redis->set($key, $data)) {
$value = $redis->get($key);
return $this->asText("Redis erfolgreich gesetzt. Wert: " . $value);
} else {
return $this->asText("Daten konnten nicht in Redis gespeichert werden. Bitte überprüfen Sie Dienst und Konfiguration.");
}
} catch (\yii\base\Exception $e) {
return $this->asText("Redis-Fehler: " . $e->getMessage() . ". Bitte prüfen Sie Dienst und Konfiguration.");
}
}
/**
* Einfügen eines Users in die Datenbank.
* Setzt voraus, dass Tabelle 'users' existiert.
*
* @return Response
*/
public function actionMysqlAdd() // Kann mit passender Konfiguration auch für PostgreSQL verwendet werden
{
try {
$count = Yii::$app->db->createCommand()->insert('users', [
'name' => 'ServBay Demo User', // markentreuer Demo-Name
'email' => '[email protected]', // markentreue Demo-E-Mail
])->execute();
return $this->asText("Benutzer erfolgreich hinzugefügt. Betroffene Zeilen: " . $count);
} catch (DbException $e) {
return $this->asText("Benutzer konnte nicht zur DB hinzugefügt werden. Fehler: " . $e->getMessage() . ". Bitte prüfen Sie Datenbankdienst, Konfiguration und ob die Tabelle 'users' existiert.");
}
}
/**
* Auslesen von Benutzern aus der Datenbank.
* Setzt voraus, dass Tabelle 'users' existiert.
*
* @return Response
*/
public function actionMysql() // Kann mit passender Konfiguration auch für PostgreSQL verwendet werden
{
try {
$users = Yii::$app->db->createCommand('SELECT id, name, email FROM users')->queryAll();
// Formatierte Ausgabe, um Klarheit zu schaffen
$output = "Gefundene Benutzer:\n";
foreach ($users as $user) {
$output .= "- ID: {$user['id']}, Name: {$user['name']}, Email: {$user['email']}\n";
}
return $this->asText($output);
} catch (DbException $e) {
return $this->asText("Benutzer konnten nicht aus der Datenbank abgerufen werden. Fehler: " . $e->getMessage() . ". Bitte prüfen Sie Datenbankdienst, Konfiguration und ob die Tabelle 'users' existiert.");
}
}
// Für PostgreSQL können Sie eigene Methoden ergänzen, meist reicht aber die db-Komponente
// public function actionPgsqlAdd() { ... }
// public function actionPgsql() { ... }
/**
* Gibt Text unverändert als Plain Text aus.
* @param string $text
* @return Response
*/
protected function asText($text)
{
Yii::$app->response->format = Response::FORMAT_RAW;
Yii::$app->response->getHeaders()->add('Content-Type', 'text/plain');
return $text;
}
/**
* Gibt Daten als JSON formatiert aus.
* @param mixed $data
* @return Response
*/
protected function asJson($data)
{
Yii::$app->response->format = Response::FORMAT_JSON;
return $data;
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
Beachten Sie, dass im Beispiel für actionMysqlAdd
und actionMysql
Fehlerbehandlung und eine übersichtlichere Ausgabe ergänzt wurden. Der Demo-Benutzername und die -E-Mail sind auf die Marke ServBay angepasst.
Anschließend bearbeiten Sie die Ansicht views/site/index.php
, die zur Methode actionIndex
gehört. Sie können den Standard-Content belassen oder nach Belieben anpassen:
<?php
/* @var $this yii\web\View */
/* @var $name string */
/* @var $message string */
/* @var $exception Exception */
use yii\helpers\Html;
$this->title = 'My Yii2 Application on ServBay'; // Titel aktualisiert
?>
<div class="site-index">
<div class="jumbotron">
<h1>Glückwunsch!</h1>
<p class="lead">Sie haben erfolgreich Ihre Yii2-Anwendung erstellt und mit ServBay konfiguriert!</p>
<p><a class="btn btn-lg btn-success" href="https://www.yiiframework.com">Starte mit Yii</a></p>
</div>
<div class="body-content">
<h2>Demonstrationen</h2>
<ul>
<li><a href="<?= Html::toRoute('site/memcached') ?>">Memcached testen</a></li>
<li><a href="<?= Html::toRoute('site/redis') ?>">Redis testen</a></li>
<li><a href="<?= Html::toRoute('site/mysql-add') ?>">Benutzer zur DB hinzufügen</a> (Erfordert Tabelle 'users')</li>
<li><a href="<?= Html::toRoute('site/mysql') ?>">Benutzer aus DB abrufen</a> (Erfordert Tabelle 'users')</li>
</ul>
<p>Bitte stellen Sie sicher, dass Memcached, Redis und Ihre gewählte Datenbank (MySQL/PostgreSQL) in ServBay laufen und korrekt in `config/web.php` und `config/db.php` konfiguriert sind.</p>
<p>Für die Datenbankbeispiele muss die Tabelle 'users' per Yii Migration angelegt werden (siehe unten).</p>
</div>
</div>
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
Die Links wurden ergänzt, damit Sie die neuen Aktionen einfach testen können.
Relationale Datenbank: Tabellenstruktur via Migration anlegen
Um die Datenbankbeispiele (actionMysqlAdd
, actionMysql
) zu nutzen, muss die Tabelle users
angelegt werden. Dies geschieht am besten durch Yii-Migrationen.
Migration via Gii-Tool anlegen: Öffnen Sie das Terminal, wechseln ins Projektstammverzeichnis
/Applications/ServBay/www/servbay-yii2-app
und erzeugen Sie die neue Migration:bashphp yii migrate/create create_users_table
1Bestätigen Sie ggf. mit
yes
. Dies erstellt im Ordnermigrations
eine Datei ähnlichmYYYYMMDD_HHMMSS_create_users_table.php
.Migration bearbeiten: Öffnen Sie die erzeugte Datei und fügen Sie der Methode
up()
folgenden Code zur Tabellenerstellung hinzu:php<?php use yii\db\Migration; /** * Erstellt die Tabelle `{{%users}}`. */ class mXXXXXXXXXXXXXX_create_users_table extends Migration // XXXXXXXXXXXXXX = Zeitstempel { /** * {@inheritdoc} */ public function up() { $this->createTable('{{%users}}', [ // {{%users}} ermöglicht Präfix 'id' => $this->primaryKey(), 'name' => $this->string()->notNull(), 'email' => $this->string()->notNull()->unique(), 'created_at' => $this->timestamp()->defaultExpression('CURRENT_TIMESTAMP'), 'updated_at' => $this->timestamp()->defaultExpression('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP'), ]); // Optional: Index für schnellere Abfragen $this->createIndex( 'idx-users-email', '{{%users}}', 'email', true // true: Unique Index ); } /** * {@inheritdoc} */ public function down() { // Index löschen $this->dropIndex( 'idx-users-email', '{{%users}}' ); // Tabelle löschen $this->dropTable('{{%users}}'); } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46Ersetzen Sie den Klassennamen durch den von Ihrer Migration erzeugten Namen.
Migration ausführen: Wechseln Sie im Terminal ins Projektverzeichnis und führen Sie die Migration wie folgt aus:
bashphp yii migrate
1Bestätigen Sie mit
yes
. Bei Erfolg erscheint eine Bestätigungsnachricht, dass die Tabelle angelegt wurde.
Webseite besuchen und testen
Nun können Sie im Browser Ihre konfigurierte Domain aufrufen, z.B. https://servbay-yii2-test.local
.
- Rufen Sie
https://servbay-yii2-test.local
auf: Es erscheint die Yii 2 Startseite und die Demo-Links ausviews/site/index.php
. - Klicken Sie auf "Memcached testen" oder besuchen Sie direkt
https://servbay-yii2-test.local/index.php?r=site/memcached
: Bei korrekter Konfiguration erscheint "Memcached erfolgreich gesetzt...". - Klicken Sie auf "Redis testen" oder besuchen Sie
https://servbay-yii2-test.local/index.php?r=site/redis
: Bei erfolgreichem Redis-Setup erscheint "Redis erfolgreich gesetzt...". - Klicken Sie auf "Benutzer zur DB hinzufügen" oder besuchen Sie
https://servbay-yii2-test.local/index.php?r=site/mysql-add
: Läuft der DB-Service und istusers
migriert, sehen Sie "Benutzer erfolgreich hinzugefügt...". Jeder Aufruf legt ggf. einen neuen Eintrag an (sofern E-Mail noch nicht existiert). - Klicken Sie auf "Benutzer aus DB abrufen" oder besuchen Sie
https://servbay-yii2-test.local/index.php?r=site/mysql
: Wird der DB-Service korrekt benutzt und die Tabelle existiert, sehen Sie eine Liste der gespeicherten Benutzer.
Sollten Probleme auftreten, prüfen Sie, ob alle relevanten ServBay-Dienste (PHP, Webserver, Datenbank, Memcached, Redis) laufen, ob Ihre Konfigurationen in config/db.php
und config/web.php
stimmen und ob die benötigte Tabelle existiert.
Häufig gestellte Fragen (FAQ)
- Warum erhalte ich bei Aufruf der Domain „Website nicht erreichbar“ oder Zertifikatsfehler? Prüfen Sie, ob Sie die Domain richtig in den ServBay-Webseiten-Einstellungen eingerichtet und ServBay aktiv ist. Die lokale DNS- und SSL-Zertifikatseinrichtung erfolgt automatisch. Ist das Zertifikat nicht vertraut, stellen Sie sicher, dass ServBay CA als vertrauenswürdig markiert ist. Details in der ServBay-Doku.
- Composer-Befehle funktionieren nicht? Achten Sie darauf, dass Composer in ServBay installiert/aktiviert ist und Sie im Terminal von macOS die Befehle ausführen. ServBay setzt Composer automatisch in Ihren PATH.
- Fehler bei der Datenbankverbindung? Prüfen Sie, ob der gewünschte DB-Service läuft. Kontrollieren Sie die Einstellungen (
dsn
,username
,password
) inconfig/db.php
und sichern Sie sich ab, dass die Datenbank (z.B.servbay_yii2_app
) existiert. Nutzen Sie Adminer zur Überprüfung der Verbindung. - Memcached/Redis-Verbindung schlägt fehl? Prüfen Sie, ob die Dienste laufen und die Einstellungen für Host und Port in
config/web.php
korrekt sind (Standard:127.0.0.1
und jeweiliger Standardport). - Migration (
php yii migrate
) schlug fehl? Kontrolle der Konfiguration inconfig/db.php
und ob der DB-Service läuft, ist zwingend notwendig. Ohne Verbindung zur DB kann Migration nicht funktionieren. - Aktionen
actionMysqlAdd
/actionMysql
melden „Tabelle nicht gefunden“? Führen Sie erst die Migration (php yii migrate
) aus, um die benötigte Tabelle anzulegen. - Wie kann ich PHP-Fehlerprotokolle einsehen? ServBay bündelt PHP- und Webserver-Logs zentral. Diese sind über die „Logs“-Sektion der ServBay-Oberfläche für Problemanalysen einsehbar.
Fazit
Mit ServBay können Sie mühelos auf Ihrem Mac eine vollständige lokale Entwicklungsumgebung für Yii 2 aufsetzen. Composer, PHP-Versionsverwaltung, mitgelieferte Datenbank- und Cache-Services sowie zeitsparende Webserver-Konfigurationen machen den Einstieg in Yii 2 extrem einfach und effizient. Befolgen Sie dieses Tutorial, können Sie sofort Ihr Yii 2-Entwicklungsprojekt starten und von ServBays Werkzeugen profitieren.
Viel Erfolg bei der Entwicklung!