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>
它会把异常信息写到日志中,日志文件默认是app/storage/logs/laravel.log
。
如果要显示一个友好的错误提示页面,我们可以创建一个视图:
<code><span>$ </span>php artisan <span>generate:</span>view error</code>
修改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>
在App::error(function(Exception $exception)
中增加:
<code><span>return</span> Response<span>::view</span>(<span>'error'</span>, <span>array</span>(), <span>500</span>);</code>
现在当访问出现错误时,就会出现错误提示页面:
2.404处理
当访问的URL不存在时,我们也可以返回一个友好的提示页面,先创建一个视图:
<code>$ php artisan generate:view <span>not</span><span>Found</span></code>
修改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>
在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>
现在当你访问的URL不存在时就会出现下面这样的页面:
3.配置文件
有时候我们可能需要一些事先就设定好的值,程序执行的时候只需要引用这个值,例如分页显示时每页显示的数量,我们可以使用配置文件,在Laravel中使用配置文件也很方便,我们可以在app/config
下新建一个名为custom.php
,在其中添加:
<code><span>return</span><span>array</span>( <span>'page_size'</span> => <span>10</span>, );</code>
现在你就可以在程序中使用了,把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>
测试代码写完之后,我们需要安装一个phpunit
组件,在composer.json
的require-dev
中添加:
<code><span>"phpunit/phpunit"</span>: <span>"3.7.*"</span></code>
然后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>
然后把/var/www
目录的权限设为777,这个目录是存放网站的目录:
<code>$ sudo chmod -R <span>777</span> /<span>var</span><span>/www/</span></code>
然后把我们开发的项目文件夹复制到这个文件夹中,我这里是blog
文件夹:
<code><span>$ </span>cd /var/www/ <span>$ </span>cp -r ~<span>/laravel-project/blog</span><span>/ .</span></code>
上面的开发项目路径要跟你自己的一样,之后我们需要把app/storage
目录的权限改为777,因为storage
文件夹中会存放日志等,涉及到写操作:
<code><span>$ </span>cd blog/app/ <span>$ </span>chmod -<span>R</span><span>777</span> storage/</code>
下面配置服务器:
<code>$ sudo vim /etc/apache2/sites-enabled/<span>000</span>-<span><span>default</span>.conf </span></code>
把DocumentRoot/var/www/html
改成DocumentRoot /var/www/blog/public
,再修改apache2.conf
:
<code>$ <span>sudo</span> vim /etc/apache2/apache2.conf</code>
把
<code>AllowOverride <span>all</span></code>
加到
<code>Options Indexes FollowSymLinks AllowOverride <span>None</span><span>Require</span><span>all</span> granted</code>
之后,现在启动Apache服务器:
<code>$ <span>sudo</span> service apache2 start</code>
在浏览器中访问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>
本文详细出自http://www.shiyanlou.com/courses/123,转载请注明出处
以上就介绍了laravel大型项目系列教程(六)之优化、单元测试以及部署,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

Outils d'IA chauds

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

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

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

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 !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

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

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

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.

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.

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.

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

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.

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

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