Maison développement back-end tutoriel php laravel大型项目系列教程(六)之优化、单元测试以及部署

laravel大型项目系列教程(六)之优化、单元测试以及部署

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

本节教程将讲解错误处理、配置文件的使用、单元测试以及部署到Apache服务器。

1.错误处理

如果用户访问的URL不存在或者服务器存在错误时,我们不希望返货一个错误的页面,而想返回一个友好提示的页面,在Laravel中可以很轻松地实现,Laravel有很简单的错误和日志处理,当服务器端存在错误时,app/start/global.php里默认有一个处理所有异常的异常处理程序:

<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>
Copier après la connexion

它会把异常信息写到日志中,日志文件默认是app/storage/logs/laravel.log

如果要显示一个友好的错误提示页面,我们可以创建一个视图:

<code><span>$ </span>php artisan <span>generate:</span>view error</code>
Copier après la connexion

修改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>
Copier après la connexion

App::error(function(Exception $exception)中增加:

<code><span>return</span> Response<span>::view</span>(<span>'error'</span>, <span>array</span>(), <span>500</span>);</code>
Copier après la connexion

现在当访问出现错误时,就会出现错误提示页面:

2.404处理

当访问的URL不存在时,我们也可以返回一个友好的提示页面,先创建一个视图:

<code>$ php artisan generate:view <span>not</span><span>Found</span></code>
Copier après la connexion

修改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>
Copier après la connexion

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>
Copier après la connexion

现在当你访问的URL不存在时就会出现下面这样的页面:

3.配置文件

有时候我们可能需要一些事先就设定好的值,程序执行的时候只需要引用这个值,例如分页显示时每页显示的数量,我们可以使用配置文件,在Laravel中使用配置文件也很方便,我们可以在app/config下新建一个名为custom.php,在其中添加:

<code><span>return</span><span>array</span>(
    <span>'page_size'</span> => <span>10</span>,
);</code>
Copier après la connexion

现在你就可以在程序中使用了,把paginate(10)改成paginate(Config::get('custom.page_size')就行,其中custom对应app/config下的文件名,page_size对应相应配置文件中的键名,配置文件也可以根据你是开发环境还是生产环境进行不同的配置,详细的可以查看官方文档。

4.单元测试

在网站上线前,我们通常需要进行单元测试,Laravel提供了很方便的单元测试模块。我这里仅实现一个例子,我们可以先在app/tests下创建一个名为MyTest.php的文件,在里面定义一个名为MyTest的类,切记要继承TestCase类,然后就可以写测试代码了:

<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>
Copier après la connexion

测试代码写完之后,我们需要安装一个phpunit组件,在composer.jsonrequire-dev中添加:

<code><span>"phpunit/phpunit"</span>: <span>"3.7.*"</span></code>
Copier après la connexion

然后composer update安装,完成后执行vendor/bin/phpunit,稍等一会就会出现测试结果,在我们测试的时候如果想要做一些初始化操作,例如数据库迁移和填充等,可以定义在setUp方法中,切记要先执行parent::setUp,测试完成之后如果想要恢复现场,可以在tearDown方法中进行,如果在测试的时候想要使用特定的配置文件,我们可以在app/config/testing目录下创建,测试时它会自动覆盖原来的配置。

5.部署至Apache

测试通过后,我们可以把网站部署到应用服务器了,在生产环境中,我们应该把app/config/app.php中的debug设为false。这里讲解怎么部署到Apache服务器上。首先声明我这里的LAMP环境是通过tasksel安装的,我们先安装mod_rewrite模块

<code>$ <span>sudo</span> a2enmod rewrite</code>
Copier après la connexion

然后把/var/www目录的权限设为777,这个目录是存放网站的目录:

<code>$ sudo chmod -R <span>777</span> /<span>var</span><span>/www/</span></code>
Copier après la connexion

然后把我们开发的项目文件夹复制到这个文件夹中,我这里是blog文件夹:

<code><span>$ </span>cd /var/www/
<span>$ </span>cp -r ~<span>/laravel-project/blog</span><span>/ .</span></code>
Copier après la connexion

上面的开发项目路径要跟你自己的一样,之后我们需要把app/storage目录的权限改为777,因为storage文件夹中会存放日志等,涉及到写操作:

<code><span>$ </span>cd blog/app/
<span>$ </span>chmod -<span>R</span><span>777</span> storage/</code>
Copier après la connexion

下面配置服务器:

<code>$ sudo vim /etc/apache2/sites-enabled/<span>000</span>-<span><span>default</span>.conf </span></code>
Copier après la connexion

DocumentRoot/var/www/html改成DocumentRoot /var/www/blog/public,再修改apache2.conf

<code>$ <span>sudo</span> vim /etc/apache2/apache2.conf</code>
Copier après la connexion

<code>AllowOverride <span>all</span></code>
Copier après la connexion

加到

<code>Options Indexes FollowSymLinks
AllowOverride <span>None</span><span>Require</span><span>all</span> granted</code>
Copier après la connexion

之后,现在启动Apache服务器:

<code>$ <span>sudo</span> service apache2 start</code>
Copier après la connexion

在浏览器中访问localhost或者127.0.0.1就可以看到我们的网站了,至此部署就完成了。

6.小结

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

最后的代码下载:

<code><span>$ </span>git clone <span>https:</span>/<span>/github.com/shiyanlou</span><span>/laravel-blog-6.git</span></code>
Copier après la connexion

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

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

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment configurer rapidement les centos hdfs Comment configurer rapidement les centos hdfs Apr 14, 2025 pm 07:24 PM

Le déploiement du système de fichiers distribué Hadoop (HDFS) sur un système CENTOS nécessite plusieurs étapes, et le guide suivant décrit brièvement le processus de configuration en mode autonome. Le déploiement complet de cluster est plus complexe. 1. Configuration de l'environnement Java D'abord, assurez-vous que le système a installé Java. Installez OpenJDK avec la commande suivante: Yumininstall-yjava-1.8.0-openjdk-devel Configure des variables d'environnement Java: echo "exportjava_home = / usr / lib / jvm / java-1.8.0-openjdk" >> / etc / profilEcho "ex ex

Choisir entre Nginx et Apache: le bon ajustement pour vos besoins Choisir entre Nginx et Apache: le bon ajustement pour vos besoins Apr 15, 2025 am 12:04 AM

Nginx et Apache ont leurs propres avantages et inconvénients et conviennent à différents scénarios. 1.Nginx convient aux scénarios élevés de la concurrence et de la consommation de ressources faibles. 2. Apache convient aux scénarios où des configurations complexes et des modules riches sont nécessaires. En comparant leurs fonctionnalités principales, leurs différences de performances et leurs meilleures pratiques, vous pouvez vous aider à choisir le logiciel du serveur qui convient le mieux à vos besoins.

Exemple d'introduction de Laravel Exemple d'introduction de Laravel Apr 18, 2025 pm 12:45 PM

Laravel est un cadre PHP pour la création facile des applications Web. Il fournit une gamme de fonctionnalités puissantes, notamment: Installation: Installez le Laravel CLI globalement avec Composer et créez des applications dans le répertoire du projet. Routage: définissez la relation entre l'URL et le gestionnaire dans Routes / web.php. Voir: Créez une vue dans les ressources / vues pour rendre l'interface de l'application. Intégration de la base de données: fournit une intégration prête à l'emploi avec des bases de données telles que MySQL et utilise la migration pour créer et modifier des tables. Modèle et contrôleur: le modèle représente l'entité de la base de données et le contrôleur traite les demandes HTTP.

Fonction principale de Laravel: développement backend Fonction principale de Laravel: développement backend Apr 15, 2025 am 12:14 AM

Les fonctions principales de Laravel dans le développement back-end incluent le système de routage, l'éloquente, la fonction de migration, le système de cache et le système de file d'attente. 1. Le système de routage simplifie la cartographie de l'URL et améliore l'organisation et la maintenance du code. 2.Lesormorm fournit des opérations de données orientées objet pour améliorer l'efficacité du développement. 3. La fonction de migration gère la structure de la base de données via le contrôle de la version pour assurer la cohérence. 4. Le système de cache réduit les requêtes de la base de données et améliore la vitesse de réponse. 5. Le système de file d'attente traite efficacement les données à grande échelle, évite de bloquer les demandes des utilisateurs et d'améliorer les performances globales.

Dépannage des méthodes pour Zookeeper sur Centos Dépannage des méthodes pour Zookeeper sur Centos Apr 14, 2025 pm 04:30 PM

Guide de dépannage de Zookeeper pour les systèmes CENTOS Cet article fournit un guide étape par étape pour vous aider à résoudre efficacement les défauts de Zookeeper sur les systèmes CentOS. 1. Vérifiez l'état du service ZooKeeper: Tout d'abord, utilisez la commande suivante pour vérifier l'état du service ZooKeeper: SudosystemctlStatuszooKeeper Si le service n'est pas en cours d'exécution, utilisez la commande suivante pour démarrer: SudosystemctlStartzookeeper pour lui permettre de commencer par démarrer: SudosystemctLenablezookeeper2. Analyser le journal de gardien de zoo pour vérifier z

Comment apprendre Laravel comment apprendre Laravel gratuitement Comment apprendre Laravel comment apprendre Laravel gratuitement Apr 18, 2025 pm 12:51 PM

Vous voulez apprendre le cadre de Laravel, mais ne souffrez pas de ressources ni de pression économique? Cet article vous fournit un apprentissage gratuit de Laravel, vous apprenant à utiliser des ressources telles que les plateformes en ligne, les documents et les forums communautaires pour jeter une base solide pour votre parcours de développement PHP de la mise en place de maîtrise.

Comment mettre à niveau la version Zookeeper sur Centos Comment mettre à niveau la version Zookeeper sur Centos Apr 14, 2025 pm 06:39 PM

Guide de mise à niveau de la version Zookeeper dans le système CentOS, assurez-vous d'être entièrement préparé avant de mettre à niveau la version ZooKeeper. Les étapes suivantes vous guideront à travers la mise à niveau de la version ZooKeeper sur CentOS: sauvegarde la version existante: Avant de démarrer la mise à niveau, veuillez sauvegarder le répertoire de données ZooKeeper actuel et les fichiers de configuration en cas d'accidents. Téléchargez la nouvelle version: Téléchargez la version cible sur le site officiel d'Apachezookeeper. Décompressez la nouvelle version: dézip le package compressé Zookeeper téléchargé dans le répertoire de votre choix. Configurez la nouvelle version: Copiez le fichier zoo_sample.cfg et renommez-le sur zoo.cfg. Modifier Z

L'héritage d'Apache: qu'est-ce qui l'a rendu célèbre? L'héritage d'Apache: qu'est-ce qui l'a rendu célèbre? Apr 15, 2025 am 12:19 AM

ApacheBecameFamousDuetOtsOpen-Sourcenature, modulardeSign, andstrongcommunitySupport.1) itsopen-SourceModelandPermissiveApachecenseCourageagedwiSpreadadoption.2) themodulaarartereallowedExtensivestumishingAndadoption.3) AVIBRANTCOMMERCUTELLOWEDEDEXTENSUMMIZATIONADADAPTABIT

See all articles