ホームページ > バックエンド開発 > PHPチュートリアル > Laravel 大規模プロジェクトチュートリアルシリーズ (6) 最適化、単体テスト、デプロイメント

Laravel 大規模プロジェクトチュートリアルシリーズ (6) 最適化、単体テスト、デプロイメント

WBOY
リリース: 2016-08-08 09:29:16
オリジナル
1096 人が閲覧しました

このチュートリアルでは、エラー処理、構成ファイルの使用、単体テスト、および 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/start/global.php里默认有一个处理所有异常的异常处理程序:
<code><span>$ </span>php artisan <span>generate:</span>view error</code>
ログイン後にコピー

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

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

<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>
ログイン後にコピー

修改error.blade.php

<code><span>return</span> Response<span>::view</span>(<span>'error'</span>, <span>array</span>(), <span>500</span>);</code>
ログイン後にコピー

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

<code>$ php artisan generate:view <span>not</span><span>Found</span></code>
ログイン後にコピー

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

2.404处理

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

<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>
ログイン後にコピー

修改notFound.blade.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>
ログイン後にコピー

app/start/global.php中增加:

<code><span>return</span><span>array</span>(
    <span>'page_size'</span> => <span>10</span>,
);</code>
ログイン後にコピー

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

3.配置文件

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

<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>
ログイン後にコピー

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

4.单元测试

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

<code><span>"phpunit/phpunit"</span>: <span>"3.7.*"</span></code>
ログイン後にコピー

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

<code>$ <span>sudo</span> a2enmod rewrite</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>$ sudo chmod -R <span>777</span> /<span>var</span><span>/www/</span></code>
ログイン後にコピー

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

<code><span>$ </span>cd /var/www/
<span>$ </span>cp -r ~<span>/laravel-project/blog</span><span>/ .</span></code>
ログイン後にコピー

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

<code><span>$ </span>cd blog/app/
<span>$ </span>chmod -<span>R</span><span>777</span> storage/</code>
ログイン後にコピー

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

<code>$ sudo vim /etc/apache2/sites-enabled/<span>000</span>-<span><span>default</span>.conf </span></code>
ログイン後にコピー

下面配置服务器:

<code>$ <span>sudo</span> vim /etc/apache2/apache2.conf</code>
ログイン後にコピー

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

<code>AllowOverride <span>all</span></code>
ログイン後にコピー

<code>Options Indexes FollowSymLinks
AllowOverride <span>None</span><span>Require</span><span>all</span> granted</code>
ログイン後にコピー

加到

<code>$ <span>sudo</span> service apache2 start</code>
ログイン後にコピー

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

<code><span>$ </span>git clone <span>https:</span>/<span>/github.com/shiyanlou</span><span>/laravel-blog-6.git</span></code>
ログイン後にコピー
ログイン後にコピー

在浏览器中访问localhost或者127.0.0.1例外情報を処理してログに書き込みます。デフォルトのログ ファイルは app/storage/logs/laravel.log です。

わかりやすいエラー プロンプト ページを表示したい場合は、次のビューを作成できます:

rrreee🎜Modify error.blade.php: 🎜rrreee🎜In App::error(function( $Exception) に例外が追加されました: 🎜rrreee🎜 アクセス エラーが発生すると、エラー メッセージ ページが表示されます: 🎜🎜🎜🎜2.404 処理🎜🎜 アクセスされた URL が存在しない場合、わかりやすいプロンプト ページを返し、最初にビューを作成することもできます: 🎜rrreee🎜Modification notFound.blade.php: 🎜rrreee🎜 app/start/global.php に追加されました: 🎜rrreee🎜 アクセスした URL が存在しない場合、次のように表示されます次のようなページ: 🎜🎜🎜🎜3.ファイル 🎜🎜 場合によっては、プログラムの実行時に、ページング表示中に各ページに表示される数値を参照するだけで済みます。 Laravel で設定ファイルを使用するのも簡単です。便宜上、app/config の下に custom.php という名前の新しいファイルを作成し、次のように追加します。これをプログラムで使用するには、paginate(10) を paginate(Config::get('custom.page_size') に置きます。ここで、custom は <code>app/config に対応します。 および page_size の下のファイル名は、対応する構成ファイルのキー名に対応します。構成ファイルは、次のいずれかに応じて異なる構成にすることもできます。詳細については、公式ドキュメントをご覧ください。🎜🎜 Web サイトをオンラインにする前に、Laravel は非常に便利な単体テスト モジュールを提供します。ここでは例を実装するだけです。まず、app/tests という名前のファイルを作成し、MyTest という名前のクラスを定義します。 > その中で、TestCase クラスを継承することを忘れないでください。これで、テスト コードを書くことができます: 🎜rrreee🎜 テスト コードが書かれた後、phpunit をインストールする必要があります> コンポーネント、composer.jsonrequire-dev Add in code>: 🎜rrreee🎜 次に、<code>composer update をインストールします。 完了したら、 を実行します。 >vendor/bin/phpunit。しばらくすると、テスト結果が表示されます。データベースの移行や充填などの初期化操作を実行したい場合は、setUp で定義できます。 メソッドを使用します。テストが完了した後、シーンを復元したい場合は、tearDown で実行することを忘れないでください。 > メソッド。テスト中に特定の構成ファイルを使用したい場合は、それを app/config/testing ディレクトリに作成できます。テスト中に元の構成が自動的に上書きされます。 🎜🎜5. Apache へのデプロイ🎜🎜 テストに合格したら、運用環境では、app/config/app.php を配置する必要があります。 > debugfalse に設定されます。ここではApacheサーバーへのデプロイ方法を説明します。まず、LAMP 環境が tasksel を通じてインストールされていることを宣言します。まず mod_rewrite モジュール をインストールします: 🎜rrreee🎜 次に /var /www ディレクトリの権限は 777 に設定されています。このディレクトリは Web サイトが保存されているディレクトリです: 🎜rrreee🎜 次に、開発したプロジェクト フォルダーをこのフォルダーにコピーします。ここに があります。 blog フォルダー: 🎜rrreee🎜 上記の開発プロジェクトのパスは自分のものと同じである必要があります。次に、app/storage ディレクトリの権限を 777 に変更する必要があります。 >storage フォルダー 書き込み操作を含むログなどを保存します: 🎜rrreee🎜 以下のサーバーを構成します: 🎜rrreee🎜 DocumentRoot/var/www/htmlDocumentRoot / に変更します。 var/www/blog/public を変更し、apache2.conf を変更します: 🎜rrreee🎜 🎜rrreee🎜 を 🎜rrreee🎜 に追加した後、Apache サーバーを起動します: 🎜rrreee🎜Visit localhost または <code>127.0.0.1 から Web サイトが表示され、展開が完了しました。 🎜🎜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教程有兴趣的朋友有所帮助。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート