laravel大型项目系列教程(六)之优化、单元测试以及部署
本節(jié)教程將講解錯誤處理、配置文件的使用、單元測試以及部署到Apache服務(wù)器。
1.錯誤處理
如果用戶訪問的URL不存在或者服務(wù)器存在錯誤時,我們不希望返貨一個錯誤的頁面,而想返回一個友好提示的頁面,在Laravel中可以很輕松地實現(xiàn),Laravel有很簡單的錯誤和日志處理,當(dāng)服務(wù)器端存在錯誤時,app/start/global.php里默認有一個處理所有異常的異常處理程序:
App::error(function(Exception $exception) {Log::error($exception); });它會把異常信息寫到日志中,日志文件默認是app/storage/logs/laravel.log。
如果要顯示一個友好的錯誤提示頁面,我們可以創(chuàng)建一個視圖:
$ php artisan generate:view error修改error.blade.php:
@extends('_layouts.default')@section('main')Sorry, there is an error!return Index@stop在App::error(function(Exception $exception)中增加:
return Response::view('error', array(), 500);現(xiàn)在當(dāng)訪問出現(xiàn)錯誤時,就會出現(xiàn)錯誤提示頁面:
2.404處理
當(dāng)訪問的URL不存在時,我們也可以返回一個友好的提示頁面,先創(chuàng)建一個視圖:
$ php artisan generate:view notFound修改notFound.blade.php:
@extends('_layouts.default')@section('main')Sorry, the page you requested does not exist!return Index@stop在app/start/global.php中增加:
App::missing(function($exception) {return Response::view('notFound', array(), 404); });現(xiàn)在當(dāng)你訪問的URL不存在時就會出現(xiàn)下面這樣的頁面:
3.配置文件
有時候我們可能需要一些事先就設(shè)定好的值,程序執(zhí)行的時候只需要引用這個值,例如分頁顯示時每頁顯示的數(shù)量,我們可以使用配置文件,在Laravel中使用配置文件也很方便,我們可以在app/config下新建一個名為custom.php,在其中添加:
return array('page_size' => 10, );現(xiàn)在你就可以在程序中使用了,把paginate(10)改成paginate(Config::get('custom.page_size')就行,其中custom對應(yīng)app/config下的文件名,page_size對應(yīng)相應(yīng)配置文件中的鍵名,配置文件也可以根據(jù)你是開發(fā)環(huán)境還是生產(chǎn)環(huán)境進行不同的配置,詳細的可以查看官方文檔。
4.單元測試
在網(wǎng)站上線前,我們通常需要進行單元測試,Laravel提供了很方便的單元測試模塊。我這里僅實現(xiàn)一個例子,我們可以先在app/tests下創(chuàng)建一個名為MyTest.php的文件,在里面定義一個名為MyTest的類,切記要繼承TestCase類,然后就可以寫測試代碼了:
class MyTest extends TestCase {public function testIndex(){$this->call('GET', '/');$this->assertResponseOk();$this->assertViewHas('articles');$this->assertViewHas('tags');}public function testNotFound(){$this->call('GET', 'test');$this->assertResponseStatus(404);} }測試代碼寫完之后,我們需要安裝一個phpunit組件,在composer.json的require-dev中添加:
"phpunit/phpunit": "3.7.*"然后composer update安裝,完成后執(zhí)行vendor/bin/phpunit,稍等一會就會出現(xiàn)測試結(jié)果,在我們測試的時候如果想要做一些初始化操作,例如數(shù)據(jù)庫遷移和填充等,可以定義在setUp方法中,切記要先執(zhí)行parent::setUp,測試完成之后如果想要恢復(fù)現(xiàn)場,可以在tearDown方法中進行,如果在測試的時候想要使用特定的配置文件,我們可以在app/config/testing目錄下創(chuàng)建,測試時它會自動覆蓋原來的配置。
5.部署至Apache
測試通過后,我們可以把網(wǎng)站部署到應(yīng)用服務(wù)器了,在生產(chǎn)環(huán)境中,我們應(yīng)該把app/config/app.php中的debug設(shè)為false。這里講解怎么部署到Apache服務(wù)器上。首先聲明我這里的LAMP環(huán)境是通過tasksel安裝的,我們先安裝mod_rewrite模塊:
$ sudo a2enmod rewrite然后把/var/www目錄的權(quán)限設(shè)為777,這個目錄是存放網(wǎng)站的目錄:
$ sudo chmod -R 777 /var/www/然后把我們開發(fā)的項目文件夾復(fù)制到這個文件夾中,我這里是blog文件夾:
$ cd /var/www/ $ cp -r ~/laravel-project/blog/ .上面的開發(fā)項目路徑要跟你自己的一樣,之后我們需要把app/storage目錄的權(quán)限改為777,因為storage文件夾中會存放日志等,涉及到寫操作:
$ cd blog/app/ $ chmod -R 777 storage/下面配置服務(wù)器:
$ sudo vim /etc/apache2/sites-enabled/000-default.conf把DocumentRoot/var/www/html改成DocumentRoot /var/www/blog/public,再修改apache2.conf:
$ sudo vim /etc/apache2/apache2.conf把
AllowOverride all加到
Options Indexes FollowSymLinks AllowOverride None Require all granted之后,現(xiàn)在啟動Apache服務(wù)器:
$ sudo service apache2 start在瀏覽器中訪問localhost或者127.0.0.1就可以看到我們的網(wǎng)站了,至此部署就完成了。
6.小結(jié)
本節(jié)教程講了錯誤處理優(yōu)化、配置文件的使用、單元測試以及怎么部署到Apache服務(wù)器,你可以買一個域名和一個服務(wù)器,最好買VPS云服務(wù)器,虛擬空間非常有局限性,然后把你自己寫的網(wǎng)站部署到服務(wù)器讓大家一起訪問。
最后的代碼下載:
$ git clone https://github.com/shiyanlou/laravel-blog-6.git本文詳細出自http://www.shiyanlou.com/courses/123,轉(zhuǎn)載請注明出處
超強干貨來襲 云風(fēng)專訪:近40年碼齡,通宵達旦的技術(shù)人生總結(jié)
以上是生活随笔為你收集整理的laravel大型项目系列教程(六)之优化、单元测试以及部署的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 送ta一朵独一无二的玫瑰花
- 下一篇: Laravel大型项目系列教程(七)之7