Laravel 大規模プロジェクトチュートリアルシリーズ (6) 最適化、単体テスト、デプロイメント
このチュートリアルでは、エラー処理、構成ファイルの使用、単体テスト、および 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.json
的require-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🎜Modifyerror.blade.php
: 🎜rrreee🎜In App::error(function( $Exception)
に例外が追加されました: 🎜rrreee🎜 アクセス エラーが発生すると、エラー メッセージ ページが表示されます: 🎜🎜
notFound.blade.php
: 🎜rrreee🎜 app/start/global.php
に追加されました: 🎜rrreee🎜 アクセスした URL が存在しない場合、次のように表示されます次のようなページ: 🎜🎜
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.json
の require-dev Add in code>: 🎜rrreee🎜 次に、<code>composer update
をインストールします。 完了したら、 を実行します。 >vendor/bin/phpunit
。しばらくすると、テスト結果が表示されます。データベースの移行や充填などの初期化操作を実行したい場合は、setUp で定義できます。
メソッドを使用します。テストが完了した後、シーンを復元したい場合は、tearDown
で実行することを忘れないでください。 > メソッド。テスト中に特定の構成ファイルを使用したい場合は、それを app/config/testing
ディレクトリに作成できます。テスト中に元の構成が自動的に上書きされます。 🎜🎜5. Apache へのデプロイ🎜🎜 テストに合格したら、運用環境では、app/config/app.php
に を配置する必要があります。 > debug
は false
に設定されます。ここではApacheサーバーへのデプロイ方法を説明します。まず、LAMP
環境が tasksel
を通じてインストールされていることを宣言します。まず mod_rewrite モジュール
をインストールします: 🎜rrreee🎜 次に /var /www ディレクトリの権限は 777 に設定されています。このディレクトリは Web サイトが保存されているディレクトリです: 🎜rrreee🎜 次に、開発したプロジェクト フォルダーをこのフォルダーにコピーします。ここに があります。 blog
フォルダー: 🎜rrreee🎜 上記の開発プロジェクトのパスは自分のものと同じである必要があります。次に、app/storage
ディレクトリの権限を 777 に変更する必要があります。 >storage フォルダー 書き込み操作を含むログなどを保存します: 🎜rrreee🎜 以下のサーバーを構成します: 🎜rrreee🎜 DocumentRoot/var/www/html
を DocumentRoot / に変更します。 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教程有兴趣的朋友有所帮助。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











Appleの製品とサービスは、常に世界中のユーザーに愛され続けています。香港 Apple ID を登録すると、ユーザーはさらに便利になり、特典が得られます。香港 Apple ID の登録手順と注意点を見てみましょう。香港 Apple ID の登録方法 Apple デバイスを使用する場合、多くのアプリケーションや機能では、Apple ID を使用してログインする必要があります。香港からアプリケーションをダウンロードしたり、香港 AppStore の優待コンテンツを楽しみたい場合は、香港の Apple ID を登録することが非常に必要です。この記事では香港のApple IDの登録手順と注意点を詳しく解説します。手順: 言語と地域を選択します。Apple デバイスで「設定」オプションを見つけて、次のように入力します。

Laravel - アーティザン コマンド - Laravel 5.7 には、新しいコマンドを処理およびテストするための新しい方法が付属しています。これには職人コマンドをテストする新しい機能が含まれており、そのデモについては以下で説明します。

Blackmagic Design は、好評を博した Blackmagic Camera アプリをついに Android に導入しました。プロ仕様のビデオ カメラ アプリは無料でダウンロードでき、完全な手動制御が可能です。これらのコントロールは、プロレベルの cin を簡単に摂取できるようにすることを目的としています。

Laravel 9 と CodeIgniter 4 の最新バージョンでは、更新された機能と改善が提供されます。 Laravel9はMVCアーキテクチャを採用しており、データベース移行、認証、テンプレートエンジンなどの機能を提供します。 CodeIgniter4 は、HMVC アーキテクチャを使用してルーティング、ORM、およびキャッシュを提供します。パフォーマンスの面では、Laravel9 のサービスプロバイダーベースの設計パターンと CodeIgniter4 の軽量フレームワークにより、優れたパフォーマンスが得られます。実際のアプリケーションでは、Laravel9 は柔軟性と強力な機能を必要とする複雑なプロジェクトに適しており、CodeIgniter4 は迅速な開発や小規模なアプリケーションに適しています。

大規模プロジェクト用のフレームワークを選択する場合、Laravel と CodeIgniter にはそれぞれ独自の利点があります。 Laravel はエンタープライズレベルのアプリケーション向けに設計されており、モジュール設計、依存関係の注入、強力な機能セットを提供します。 CodeIgniter は、速度と使いやすさを重視した、小規模から中規模のプロジェクトに適した軽量フレームワークです。複雑な要件と多数のユーザーを伴う大規模なプロジェクトには、Laravel のパワーとスケーラビリティがより適しています。単純なプロジェクトやリソースが限られている状況では、CodeIgniter の軽量で迅速な開発機能がより理想的です。

初心者にとって、CodeIgniter は学習曲線が緩やかで機能は少ないですが、基本的なニーズはカバーしています。 Laravel は幅広い機能セットを提供しますが、学習曲線はわずかに急になります。パフォーマンスの点では、Laravel と CodeIgniter はどちらも良好なパフォーマンスを示します。 Laravel にはより広範なドキュメントとアクティブなコミュニティ サポートがあり、CodeIgniter はよりシンプルで軽量で、強力なセキュリティ機能を備えています。ブログアプリケーションを構築する実際のケースでは、Laravel の EloquentORM を使用するとデータ操作が簡素化されますが、CodeIgniter ではより手動の構成が必要になります。

Laravel の Blade と CodeIgniter の Twig テンプレート エンジンを比較し、プロジェクトのニーズと個人的な好みに基づいて選択してください。Blade は MVC 構文に基づいており、適切なコード編成とテンプレートの継承を促進します。 Twig は、柔軟な構文、強力なフィルター、拡張サポート、セキュリティ サンドボックスを提供するサードパーティ ライブラリです。

小規模なプロジェクトの場合、Laravel は強力な機能とセキュリティを必要とする大規模なプロジェクトに適しています。 CodeIgniter は、軽量さと使いやすさを必要とする非常に小規模なプロジェクトに適しています。
