Heim Backend-Entwicklung PHP-Tutorial Laravel Large Project Tutorial Series (6) Optimierung, Unit-Tests und Bereitstellung

Laravel Large Project Tutorial Series (6) Optimierung, Unit-Tests und Bereitstellung

Aug 08, 2016 am 09:29 AM
apache app error exception laravel

In diesem Tutorial werden die Fehlerbehandlung, die Verwendung von Konfigurationsdateien, Unit-Tests und die Bereitstellung auf dem Apache-Server erläutert.

1. Fehlerbehandlung

Wenn die vom Benutzer besuchte URL nicht existiert oder ein Fehler auf dem Server vorliegt, möchten wir keine Fehlerseite zurückgeben, sondern eine Freundliche Eingabeaufforderungsseite. In Laravel kann es problemlos implementiert werden. Wenn auf der Serverseite ein Fehler auftritt, verfügt app/start/global.php über einen Ausnahmehandler, der standardmäßig alle Ausnahmen behandelt

<code><span>App</span><span>::error(function(Exception</span> $<span>exception</span>)
<span>{
    <span><span>Log</span>:<span>:<span>error($exception)</span></span></span>;
<span>}</span></span>);</code>
Nach dem Login kopieren
Es werden Ausnahmeinformationen in das Protokoll geschrieben. Die Standardprotokolldatei ist

. app/storage/logs/laravel.log

Wenn Sie eine benutzerfreundliche Fehlermeldungsseite anzeigen möchten, können wir eine Ansicht erstellen:

<code><span>$ </span>php artisan <span>generate:</span>view error</code>
Nach dem Login kopieren
Ändern Sie

: error.blade.php

<code><span>@extends</span>(<span>'_layouts.default'</span>)

<span>@section</span>(<span>'main'</span>)
    Sorry, there <span>is</span> an error!
        <span>return</span> Index

<span>@stop</span></code>
Nach dem Login kopieren
in

Hinzugefügt: App::error(function(Exception $exception)

<code><span>return</span> Response<span>::view</span>(<span>'error'</span>, <span>array</span>(), <span>500</span>);</code>
Nach dem Login kopieren
Wenn jetzt ein Zugriffsfehler auftritt, wird eine Fehlermeldungsseite angezeigt:

2.404-Verarbeitung

Beim Zugriff Wenn die URL nicht vorhanden ist, können wir auch zu einer benutzerfreundlichen Eingabeaufforderungsseite zurückkehren und zunächst eine Ansicht erstellen:

<code>$ php artisan generate:view <span>not</span><span>Found</span></code>
Nach dem Login kopieren
Ändern

: notFound.blade.php

<code><span>@extends</span>(<span>'_layouts.default'</span>)

<span>@section</span>(<span>'main'</span>)

    <span>Sorry</span>, the page you requested does <span>not</span> exist!
        <span>return</span><span>Index</span><span>@stop</span></code>
Nach dem Login kopieren
Hinzufügen

: app/start/global.php

<code>App::missing(<span><span>function</span><span>(<span>$exception</span>)</span>
{</span><span>return</span> Response::view(<span>'notFound'</span>, <span>array</span>(), <span>404</span>);
});</code>
Nach dem Login kopieren
Wenn die von Ihnen besuchte URL nicht existiert, wird die folgende Seite angezeigt:

3. Konfigurationsdatei

Manchmal benötigen wir möglicherweise einige Werte, die im Voraus festgelegt wurden. Wenn das Programm ausgeführt wird, müssen wir nur auf diesen Wert verweisen, z. B. auf die auf jeder Seite angezeigte Nummer. Wir können Konfigurationsdateien verwenden ist auch einfach zu verwendende Konfigurationsdateien in Laravel. Praktischerweise können wir unter

eine neue mit dem Namen app/config erstellen und hinzufügen: custom.php

<code><span>return</span><span>array</span>(
    <span>'page_size'</span> => <span>10</span>,
);</code>
Nach dem Login kopieren
Jetzt können Sie sie im Programm verwenden, ändern Sie einfach

bis paginate(10) , wobei paginate(Config::get('custom.page_size') dem Dateinamen unter custom und app/config dem Schlüsselnamen in der entsprechenden Konfigurationsdatei entspricht. Die Konfigurationsdatei kann auch unterschiedlich konfiguriert werden, je nachdem, ob Sie ein sind Eine Entwicklungsumgebung oder eine Produktionsumgebung finden Sie in der offiziellen Dokumentation. page_size

4. Unit-Tests

Bevor die Website online geht, müssen wir normalerweise ein Unit-Testing-Modul durchführen. Ich implementieren hier nur ein Beispiel. Wir können zuerst eine Datei mit dem Namen

unter app/tests erstellen und darin eine Klasse mit dem Namen MyTest.php definieren. Anschließend können Sie Tests schreiben: MyTestTestCase

Nachdem der Testcode geschrieben wurde, müssen wir eine
<code><span><span>class</span><span>MyTest</span><span>extends</span><span>TestCase</span> {</span><span>public</span><span><span>function</span><span>testIndex</span><span>()</span>
    {</span><span>$this</span>->call(<span>'GET'</span>, <span>'/'</span>);
        <span>$this</span>->assertResponseOk();
        <span>$this</span>->assertViewHas(<span>'articles'</span>);
        <span>$this</span>->assertViewHas(<span>'tags'</span>);
    }

    <span>public</span><span><span>function</span><span>testNotFound</span><span>()</span>
    {</span><span>$this</span>->call(<span>'GET'</span>, <span>'test'</span>);
        <span>$this</span>->assertResponseStatus(<span>404</span>);
    }
}</code>
Nach dem Login kopieren
-Komponente installieren, das

von phpunit hinzufügen: composer.jsonrequire-dev

und dann
<code><span>"phpunit/phpunit"</span>: <span>"3.7.*"</span></code>
Nach dem Login kopieren
Installation, führen Sie

nach Abschluss aus. Die Testergebnisse werden nach einer Weile angezeigt. Wenn Sie während unseres Tests einige Initialisierungsvorgänge durchführen möchten, z. B. Datenbankmigration und -füllung usw., können Sie dies im composer update definieren Wenn Sie die Szene wiederherstellen möchten, müssen Sie zuerst vendor/bin/phpunit ausführen. Wenn Sie während des Tests eine bestimmte Konfigurationsdatei verwenden möchten kann es im Verzeichnis setUp erstellen. Während des Tests wird die ursprüngliche Konfiguration automatisch überschrieben. parent::setUptearDown5. Auf Apache bereitstellenapp/config/testing

Nachdem wir den Test bestanden haben, können wir die Website auf dem Anwendungsserver bereitstellen. In der Produktionsumgebung sollten wir

in

auf . Hier erklären wir, wie die Bereitstellung auf dem Apache-Server erfolgt. Zunächst erkläre ich, dass die

-Umgebung hier über app/config/app.php installiert wird. Wir installieren zuerst debug: falseLAMPtasksel und setzen dann die Berechtigungen des mod_rewrite模块-Verzeichnisses auf 777. In diesem Verzeichnis wird die Website gespeichert:

<code>$ <span>sudo</span> a2enmod rewrite</code>
Nach dem Login kopieren

Dann kopieren Sie den von uns entwickelten Projektordner in diesen Ordner: /var/www

<code>$ sudo chmod -R <span>777</span> /<span>var</span><span>/www/</span></code>
Nach dem Login kopieren
Der oben genannte Entwicklungsprojektpfad Es sollte mit Ihrem eigenen übereinstimmen. Später müssen wir die Berechtigungen des Verzeichnisses

auf 777 ändern, da Protokolle usw. im Ordner blog gespeichert werden, was Schreibvorgänge beinhaltet:

<code><span>$ </span>cd /var/www/
<span>$ </span>cp -r ~<span>/laravel-project/blog</span><span>/ .</span></code>
Nach dem Login kopieren

Konfigurieren Sie den Server unten: app/storagestorage

Ändern Sie
<code><span>$ </span>cd blog/app/
<span>$ </span>chmod -<span>R</span><span>777</span> storage/</code>
Nach dem Login kopieren
in

und ändern Sie dann

:
<code>$ sudo vim /etc/apache2/sites-enabled/<span>000</span>-<span><span>default</span>.conf </span></code>
Nach dem Login kopieren

DocumentRoot/var/www/html Fügen Sie DocumentRoot /var/www/blog/publicapache2.conf bis

Nach
<code>$ <span>sudo</span> vim /etc/apache2/apache2.conf</code>
Nach dem Login kopieren

starten Sie nun den Apache-Server:

<code>AllowOverride <span>all</span></code>
Nach dem Login kopieren

Besuchen Sie

oder
<code>Options Indexes FollowSymLinks
AllowOverride <span>None</span><span>Require</span><span>all</span> granted</code>
Nach dem Login kopieren
im Browser, um unsere Website und die Bereitstellung anzuzeigen ist nun abgeschlossen.

6. Zusammenfassung
<code>$ <span>sudo</span> service apache2 start</code>
Nach dem Login kopieren

本节教程讲了错误处理优化、配置文件的使用、单元测试以及怎么部署到Apache服务器,你可以买一个域名和一个服务器,最好买VPS云服务器,虚拟空间非常有局限性,然后把你自己写的网站部署到服务器让大家一起访问。

最后的代码下载:

<code><span>$ </span>git clone <span>https:</span>/<span>/github.com/shiyanlou</span><span>/laravel-blog-6.git</span></code>
Nach dem Login kopieren

本文详细出自http://www.shiyanlou.com/courses/123,转载请注明出处

以上就介绍了laravel大型项目系列教程(六)之优化、单元测试以及部署,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

So konfigurieren Sie schnell CentOS -HDFs So konfigurieren Sie schnell CentOS -HDFs Apr 14, 2025 pm 07:24 PM

Das Bereitstellen von Hadoop Distributed Dateisystem (HDFS) in einem CentOS-System erfordert mehrere Schritte, und das folgende Leitfaden beschreibt kurz den Konfigurationsprozess im eigenständigen Modus. Die vollständige Cluster -Bereitstellung ist komplexer. 1. Java Environment Configuration Erstens stellen Sie sicher, dass das System Java installiert hat. Installieren Sie OpenJDK mit dem folgenden Befehl: Yumininstall-Yjava-1.8.0-Openjdk-Devel Java-Umgebungsvariablen: echo "exportejava_home =/usr/lib/jvm/java-1.8.0-openjdk" >>/ETC/ETC/ETC/EXPER

Beispiel für Laravel -Einführung Beispiel für Laravel -Einführung Apr 18, 2025 pm 12:45 PM

Laravel ist ein PHP -Framework zum einfachen Aufbau von Webanwendungen. Es bietet eine Reihe leistungsstarker Funktionen, darunter: Installation: Installieren Sie die Laravel CLI weltweit mit Komponisten und erstellen Sie Anwendungen im Projektverzeichnis. Routing: Definieren Sie die Beziehung zwischen der URL und dem Handler in Routen/Web.php. Ansicht: Erstellen Sie eine Ansicht in Ressourcen/Ansichten, um die Benutzeroberfläche der Anwendung zu rendern. Datenbankintegration: Bietet eine Out-of-the-Box-Integration in Datenbanken wie MySQL und verwendet Migration, um Tabellen zu erstellen und zu ändern. Modell und Controller: Das Modell repräsentiert die Datenbankentität und die Controller -Prozesse HTTP -Anforderungen.

Wählen Sie zwischen Nginx und Apache: Die richtige Passform für Ihre Anforderungen Wählen Sie zwischen Nginx und Apache: Die richtige Passform für Ihre Anforderungen Apr 15, 2025 am 12:04 AM

Nginx und Apache haben ihre eigenen Vor- und Nachteile und eignen sich für verschiedene Szenarien. 1.Nginx ist für hohe Parallelitäts- und geringe Ressourcenverbrauchsszenarien geeignet. 2. Apache eignet sich für Szenarien, in denen komplexe Konfigurationen und reichhaltige Module erforderlich sind. Durch den Vergleich ihrer Kernfunktionen, Leistungsunterschiede und Best Practices können Sie die Serversoftware auswählen, die Ihren Anforderungen am besten entspricht.

Wie man laravel lernt wie man laravel kostenlos lernt Wie man laravel lernt wie man laravel kostenlos lernt Apr 18, 2025 pm 12:51 PM

Möchten Sie das Laravel -Rahmen lernen, aber unter keinen Ressourcen oder dem wirtschaftlichen Druck leiden? Dieser Artikel bietet Ihnen ein kostenloses Lernen von Laravel und lehrt Sie, wie Sie Ressourcen wie Online -Plattformen, Dokumente und Community -Foren verwenden, um eine solide Grundlage für Ihre PHP -Entwicklungsreise zu schaffen.

Lösen Lösen Apr 18, 2025 am 09:24 AM

Bei der Entwicklung von Websites mit CraftCMS stoßen Sie häufig mit Ressourcendateiproblemen, insbesondere wenn Sie häufig CSS und JavaScript -Dateien aktualisieren, alte Versionen von Dateien möglicherweise weiterhin vom Browser zwischengespeichert. Dieses Problem wirkt sich nicht nur auf die Benutzererfahrung aus, sondern erhöht auch die Schwierigkeit der Entwicklung und des Debuggens. Kürzlich habe ich in meinem Projekt ähnliche Probleme gestoßen, und nach einigen Erkundungen fand ich das Plugin Wiejeben/Craft-Laravel-Mix, das mein Caching-Problem perfekt löste.

Laravels Hauptfunktion: Backend -Entwicklung Laravels Hauptfunktion: Backend -Entwicklung Apr 15, 2025 am 12:14 AM

Zu den Kernfunktionen von Laravel in der Back-End-Entwicklung gehören Routing-System, eloquentorm, Migrationsfunktion, Cache-System und Warteschlangensystem. 1. Das Routing -System vereinfacht die URL -Zuordnung und verbessert die Codeorganisation und die Wartung. 2.Loquentorm bietet objektorientierte Datenoperationen zur Verbesserung der Entwicklungseffizienz. 3. Die Migrationsfunktion verwaltet die Datenbankstruktur durch Versionskontrolle, um eine Konsistenz zu gewährleisten. 4. Das Cache -System reduziert Datenbankabfragen und verbessert die Reaktionsgeschwindigkeit. 5. Das Warteschlangensystem verarbeitet effektiv große Daten, vermeiden Sie die Blockierung von Benutzeranfragen und verbessern die Gesamtleistung.

Fehlerbehebungsmethoden für Zookeeper bei CentOS Fehlerbehebungsmethoden für Zookeeper bei CentOS Apr 14, 2025 pm 04:30 PM

Zookeeper-Fehlerbehebungshandbuch für CentOS-Systeme Dieser Artikel bietet einen Schritt-für-Schritt-Leitfaden, mit dem Sie Zookeeper-Fehler bei CentOS-Systemen effektiv beheben können. 1. Überprüfen Sie den Status des Zookeeper -Dienstes: Verwenden Sie zunächst den folgenden Befehl, um den Status des Zookeeper -Dienstes zu überprüfen: Sudosystemctlstatuszookeeper Wenn der Dienst nicht ausgeführt wird, verwenden Sie den folgenden Befehl, um zu starten: Analysieren Sie das Zookeeper -Protokoll, um z zu überprüfen

Laravel -Frame -Fähigkeiten teilen Laravel -Frame -Fähigkeiten teilen Apr 18, 2025 pm 01:12 PM

In dieser Zeit des kontinuierlichen technologischen Fortschritts ist das Mastering Advanced Frameworks für moderne Programmierer von entscheidender Bedeutung. Dieser Artikel hilft Ihnen dabei, Ihre Entwicklungsfähigkeiten zu verbessern, indem Sie wenig bekannte Techniken im Laravel-Framework teilen. Dieser Artikel wird für seine elegante Syntax und eine breite Palette von Funktionen bekannt und werden in seinen leistungsstarken Funktionen eingraben und praktische Tipps und Tricks bieten, damit Sie effiziente und pflegende Webanwendungen erstellen können.

See all articles