In meinem Erstellen einer persönlichen Web -App geht ich mit Symfony 2 -Serie, die auf SitePoint veröffentlicht wurde, einige Grundlagen in Bootstrapping, Entwicklung und Fertigstellung (zu einigen fortgeschrittenen Techniken), um Symfony 2 zur Entwicklung einer Webanwendung zu verwenden. Aufgrund der Längenbeschränkung der Serie haben wir jedoch nicht viel über den „endgültigen“ Schritt behandelt: um eine Symfony 2 -Anwendung in der Produktionsumgebung einzusetzen.
Wenn wir uns entwickeln, sind wir höchstwahrscheinlich in einer „Wurzel“ -Rolle; In einer Produktionsumgebung können wir dieses Privileg möglicherweise beraubt werden. Auch die Einstellungen können unterschiedlich sein. Um die Sache noch schlimmer zu machen, können wir diese Einstellungen manchmal nicht wie in unseren eigenen Maschinen ändern.
daher ist es von großer Bedeutung, die „Kompatibilität“ unseres Produktionsservers zu überprüfen, bevor eine echte Entwicklung auf unserem eigenen Server erfolgt. Dies vermeidet solche schrecklichen Situationen wie: Eine Bibliothek, von der Symfony abhängt, fehlt, einige globale Einstellungen, auf die die App angewiesen ist, sind unveränderlich usw.
Testen der „Kompatibilität“ unseres Produktionsservers sollte wirklich zu Beginn etwas sein. Während der Bereitstellung müssen auch einige andere Aspekte angesprochen werden - z. B. Vorlagen für verschiedene Fehlermeldungen usw.
In den folgenden Abschnitten werden wir davon ausgehen, dass Sie keine vollständige Kontrolle über Ihren Produktionsserver haben. Wenn Sie dies tun, gelten die meisten Kompatibilitätsprobleme wahrscheinlich nicht, da Sie sie ganz einfach selbst beheben können.
Befolgen Sie die Anweisungen in meinem ersten Artikel auf Symfony 2, um ein leeres Symfony -Framework auf dem Produktionsserver einzurichten.
Dies ist auch hilfreich zu testen, ob der Server Curl aktiviert ist, und nicht nur auf dem Server, sondern auch als PHP -Erweiterung installiert, um sicherzustellen, dass wir externe Ressourcen erfassen können. In meinem speziellen Fall ist dies sehr wichtig - Composer.org ist in meinem Land blockiert und ich muss einen Proxy verwenden, um das Symfony -Framework zu holen und zu installieren.
Dieses leere Framework kann später in die Versionskontrolle untersucht werden.
Symfony 2 wird mit einer im Webverzeichnis befindlichen config.php -Datei geliefert. Dies ist das Skript, um den größten Teil des Problems der „Bereitschaft“ zu testen. Um diese Seite zu besuchen, müssen wir sie ein bisschen optimieren:
<span><span><?php </span></span><span> </span><span><span>if (!isset($_SERVER['HTTP_HOST'])) { </span></span><span> <span>exit('This script cannot be run from the CLI. Run it from a browser.'); </span></span><span><span>} </span></span><span> </span><span><span>if (!in_array(@$_SERVER['REMOTE_ADDR'], array( </span></span><span> <span>'127.0.0.1', </span></span><span> <span>'::1', </span></span><span><span>))) { </span></span><span> <span>header('HTTP/1.0 403 Forbidden'); </span></span><span> <span>exit('This script is only accessible from localhost.'); </span></span><span><span>} </span></span><span><span>...</span></span>
Diese Datei soll nur aus einem lokalen Browser aufgerufen werden. Wir müssen den zweiten If -Block aus kommentieren, damit wir ihn aus der Ferne besuchen können.
Mein Server ist korrekt konfiguriert und hat keine kritischen Probleme:
Diese Datei testet die Bereitschaftsprobleme, die ich in der folgenden Tabelle zusammenfasse. Die tatsächlichen Tests erfolgen in App/SymfonyRequirements.php, damit wir uns diese Datei auch ansehen können.
= 5.3.3Erforderlich, dürfen aber nicht 5.3.16 sein Upgrade auf die neueste Version. Schlagen Sie vor, mindestens PHP 5.4.8 und höher zu verwenden. Verkäuferbibliotheken Installiert von Composer.phar Erforderlich Aktualisieren Sie mit Composer.phar Cache, Protokolle Verzeichnis Beschreibbar Erforderlich Durch Ausgabe von CHMOD zur Erteilung von Berechtigungen. Normalerweise sollte das Privileg 755 oder 777 betragen. Zeitzone So etwas wie 'Asien/Shanghai' oder deine Zeitzone Erforderlich Ändere php.ini. json_encode, session_start, ctype_alpha, token_get_all, simplexml_import_dom Ermöglicht Erforderlich Aktivieren Sie die jeweiligen PHP -Bibliotheken. Die meisten PHP -Server haben diese aktiviert. APC Aktiviert/deaktiviert Aktiviert, wenn APC verwendet wird Aktivieren Sie APC oder deaktivieren Sie APC, wenn Sie einen anderen Cache/Accelerator verwenden. xdebug Verschiedene Einstellungen Erforderlich, empfohlen Ändern Sie die XDEBUG -Einstellungen entsprechend. Domdocument, mb_strlen, iCony, utf8_decode, intl usw. Verschiedene Module Empfohlen Aktivieren Sie, wenn Sie möchten. Beschleuniger Verschiedene Einstellungen Empfohlen Installieren und aktivieren Sie pro Anfrage. Kurzes Open -Tag, Magic_quotes_gpc, Register_Globals, Session.auto_start Deaktiviert Empfohlen Schlagen Sie vor, den Vorschlägen zu folgen. Die neuesten PHP -Versionen haben einige von ihnen standardmäßig deaktiviert. Pdo Datenbanktreiber Empfohlen Bitte installieren Sie es und aktivieren Sie es. Es ist obligatorisch, ob Sie Doctrine ORM verwenden.
Eine Ernsthaftigkeit von „Erforderlich“ bedeutet, dass wir unsere Servereinstellungen ändern müssen, um die Anforderungen zu erfüllen. Andernfalls wird Symfony 2 nicht ausgeführt und sollte daher nicht die richtige Wahl für unsere Anwendungsentwicklung sein. Ein „empfohlenes“ Artikel kann sicher ignoriert werden, aber ich schlage vor, wir erfüllen diese Empfehlungen so viel wie möglich. In meinem Fall (oben gezeigt) hat mein Produktionsserver nur eine Warnung. Dies schafft einen soliden und zuverlässigen Grund für die Weiterentwicklung.
Während der Entwicklung möchten Sie, anstatt die Dateien auf den Produktionsserver zu kopieren, die Versionskontrolle verwenden, um lokale Änderungen an der Remote -Website zu synchronisieren.
In diesem Fall wird ein ordnungsgemäßes .Gitignore (oder gleichwertig in anderen Versionskontrollsystemen) praktisch. Der folgende Auszug aus meiner .Gitignore -Datei ist als Referenz:
<span><span><?php </span></span><span> </span><span><span>if (!isset($_SERVER['HTTP_HOST'])) { </span></span><span> <span>exit('This script cannot be run from the CLI. Run it from a browser.'); </span></span><span><span>} </span></span><span> </span><span><span>if (!in_array(@$_SERVER['REMOTE_ADDR'], array( </span></span><span> <span>'127.0.0.1', </span></span><span> <span>'::1', </span></span><span><span>))) { </span></span><span> <span>header('HTTP/1.0 403 Forbidden'); </span></span><span> <span>exit('This script is only accessible from localhost.'); </span></span><span><span>} </span></span><span><span>...</span></span>
Dies ist niemals eine ausführliche oder fit-All-Purpose-Liste. Wenn Sie beispielsweise PHPSTORM, jedoch nicht NetBeans verwenden, können Sie den Abschnitt NetBeans löschen und durch Filter ersetzen, die für PHPStorm geeignet sind:
<span># Composer </span><span>vendor </span><span>vendor/* </span><span>!public/assets/js/vendor </span><span>!public/assets/js/vendor/* </span><span>!public/assets/css/vendor </span><span>!public/assets/css/vendor/* </span><span>composer.phar </span><span>composer.lock </span><span> </span><span># Symfony </span><span>app/cache/* </span><span>app/logs/* </span><span> </span><span># Logs </span><span>error.log </span><span>access.log </span><span> </span><span># Netbeans </span><span>nbproject </span><span>.nbproject </span><span>.nbproject/* </span><span>nbproject/* </span><span>nbproject/private/ </span><span>build/ </span><span>nbbuild/ </span><span>dist/ </span><span>nbdist/ </span><span>nbactions.xml </span><span>nb-configuration.xml</span>
oder lassen Sie sie einfach beide in, damit Sie automatisch andere Entwickler berücksichtigen, die möglicherweise andere IDES verwenden. Es wird empfohlen, immer die ersten 3 Abschnitte (Komponisten, Symfony, Protokolle) einzuschließen.
Wenn eine Symfony -App zum ersten Mal auf einem Remote -Server ausgeführt wird, wird eine kompilierte Version unserer App im App/Cache/Prod -Verzeichnis erstellt. Wenn unsere Dateien, insbesondere unsere Controller und Routen, aktualisiert werden, müssen wir den Cache aktualisieren oder die Ausgabe kann falsch sein und häufig 500 Fehler verursachen.
Um den Cache zu löschen, werde ich normalerweise SSH auf meinem Produktionsserver und einen RM -RF -Cache -Befehl im App -Verzeichnis durchführen. Der Konsolen -Cache: Löschen oder Konsolencache: Warmup -Befehl ist möglicherweise nicht die sauberste Art, dies zu tun.
Verwenden Sie dies mit Vorsicht und nur dann, wenn dies unbedingt erforderlich ist!
In einigen Fällen kann eine lokale Funktionsseite nur abstürzen, wenn sie auf dem Produktionsserver bereitgestellt wird. Die Gründe, die dies verursachen, können komplex sein und nicht mit dem Codierungsprozess selbst zusammenhängen. Unter diesen Umständen können wir in Betracht ziehen, den Remote -Entwicklermodus zu aktivieren.
, um dies zu tun, verfolgen wir den ähnlichen Ansatz, um die Localhost -Prüfung zu deaktivieren, indem wir den folgenden Codeblock in app_dev.php:
kommentieren<span># IntelliJ - PhpStorm and PyCharm </span><span>.idea </span><span>.idea/ </span><span>.idea/* </span><span>*.iml </span><span>*.ipr </span><span>*.iws </span>
Wir können dann die Domain und Seiten mit so etwas wie folgt besuchen: http: //rsywx_remote/app_dev.php. Wenn etwas schief geht, zeigt dieser Entwicklermodus nützlichere Debug -Informationen an und kann uns sehr helfen, einige tief verwurzelte Probleme zu finden. Fügen Sie für zusätzliche Sicherheit während dieser Debug -Zeit einen Scheck hinzu, der nur Besuche von Ihrer eigenen IP zu der obigen Datei ermöglicht. Dadurch wird der Entwicklermodus für alle anderen in Betrieb genommen. Die meisten Probleme beziehen sich auf die Datenbank -Setup (falsche Datenbank und/oder Anmeldeinformationen), falsche API -URIs (lokale und Remote -URIs können unterschiedlich sein), veralteter Cache, fehlende Bibliotheken, die lokal verwendet, aber nicht aktiviert sind usw.
Wenn die Probleme behoben wurden, denken Sie bitte daran, diese Linien zu entlassen, um die volle Zugriffskontrolle wiederherzustellen. Reguläre Benutzer dürfen App.php nur als Einstiegspunkt unserer App verwenden.
Wir können die Fehlerseiten anpassen und unter App/Ressourcen/Twigbundle/Ansichten/Ausnahme einsetzen. Die Dateien können für 404 Fehler, Fehler403.html.twig für 403 Fehler usw. oder nur error.html.twig für allgemeine Zwecke für 403 Fehler usw. als Fehler404.html.twig bezeichnet werden.
Es ist wichtig zu beachten, dass in Symfony 2 Fehlermeldungsseiten die Erweiterung der Twig -Vorlagen nicht unterstützen. Dies bedeutet, dass wir keine Fehlerseite von einem vorhandenen Layout für andere Seiten erweitert haben. Wir müssen die Fehlerseiten von Grund auf neu gestalten. Dies ist ein bisschen unpraktisch, aber es lohnt sich immer noch, für eine ernsthafte Seite zu tun.
In diesem Artikel haben wir einige Symfony Deployment -bezogene Themen behandelt: die Serverbereitschaft, die Versionskontrolle, den Remote -Entwicklermodus, die Cache -Update, die Anpassung der Fehlerseiten usw.
Einsatz ist normalerweise der letzte Schritt in unserer Entwicklung. Ich hoffe, dieser Artikel hat Ihnen geholfen, ein gemeinsames Pitfals zu vermeiden, und Ihr Bereitstellungsprozess reibungsloser gemacht.
Bitte fordern Sie diesen Artikel um, wenn Sie ihn interessant oder nützlich empfunden haben, und hinterlassen Sie unten einen Kommentar, wenn Sie Feedback haben. Er wird sehr geschätzt!
Wie installiere ich Symfony 2 auf meinem lokalen Computer? beinhaltet ein paar Schritte. Zunächst müssen Sie sicherstellen, dass Sie PHP installiert haben. Symfony 2 erfordert PHP 5.3.9 oder höher. Sobald Sie PHP installiert haben, können Sie Composer, ein Abhängigkeitsmanagement -Tool für PHP, verwenden, um Symfony zu installieren. Sie können Komponist von seiner offiziellen Website herunterladen. Nach dem Installieren von Composer können Sie es verwenden, um ein neues Symfony-Projekt zu erstellen, indem Sie den Befehl 'Composer Create-Project Symfony/Framework-Standard-Edition my_project_name' ausführen.
Was sind Bündel in Symfony 2 und wie benutze ich sie? Plugins in anderen Software. Sie sind eine Möglichkeit, Symfony 2 -Code zu verpacken und zu verteilen. Sie können alles aus Bibliotheken, Vorlagen, Controllern und Konfiguration enthalten - im Wesentlichen jeden PHP -Code, der ausgeführt werden kann. Sie können Bündel verwenden, die von der Symfony -Community bereitgestellt oder Ihre eigenen erstellen. Um ein Bundle zu verwenden, müssen Sie es herunterladen, in der Datei 'appkernel.php' aktivieren und gegebenenfalls konfigurieren. > Symfony 2 bietet eine leistungsstarke und flexible Möglichkeit, Fehler und Ausnahmen zu behandeln. Es verfügt über eine integrierte Debug-Komponente, die während der Entwicklung detaillierte Fehlermeldungen liefert. In einer Produktionsumgebung fängt Symfony 2 alle Ausnahmen auf und wandelt sie in „Antwort“ -Objekte um. Sie können die Fehlerseiten anpassen, indem Sie Vorlagen im Verzeichnis "App/Ressourcen/Twigbundle/Ansichten/Ausnahme" erstellen.
Es gibt verschiedene Möglichkeiten, die Leistung einer Symfony 2 -Anwendung zu optimieren. Einige davon umfassen die Nutzung der Produktion von „prod“ für die Produktion, die Aktivierung der APC -PHP -Erweiterung für Opcode -Caching, die Optimierung des Autoloaders mit Composer und die Verwendung der HTTPCache -Klasse, um HTTP -Caching -Headern zu Ihren Antworten hinzuzufügen.
.Das obige ist der detaillierte Inhalt vonSymfony 2 Checkliste für Entwicklung und Bereitstellung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!