laravel大型項目系列教程(六)之最佳化、單元測試以及部署

來源:互聯網
上載者:User
本節教程將講解錯誤處理、設定檔的使用、單元測試以及部署到Apache伺服器。

1.錯誤處理

如果使用者訪問的URL不存在或者伺服器存在錯誤時,我們不希望返貨一個錯誤的頁面,而想返回一個友好提示的頁面,在Laravel中可以很輕鬆地實現,Laravel有很簡單的錯誤和Tlog,當伺服器端存在錯誤時,app/start/global.php裡預設有一個處理所有異常的例外處理常式:

App::error(function(Exception $exception){    Log::error($exception);});

它會把異常資訊寫到日誌中,記錄檔預設是app/storage/logs/laravel.log

如果要顯示一個友好的錯誤提示頁面,我們可以建立一個視圖:

$ 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);

現在當訪問出現錯誤時,就會出現錯誤提示頁面:

2.404處理

當訪問的URL不存在時,我們也可以返回一個友好的提示頁面,先建立一個視圖:

$ php artisan generate:view notFound

修改notFound.blade.php

@extends('_layouts.default')@section('main')    Sorry, the page you requested does not exist!        returnIndex@stop

app/start/global.php中增加:

App::missing(function($exception){return Response::view('notFound', array(), 404);});

現在當你訪問的URL不存在時就會出現下面這樣的頁面:

3.設定檔

有時候我們可能需要一些事先就設定好的值,程式執行的時候只需要引用這個值,例如分頁顯示時每頁顯示的數量,我們可以使用設定檔,在Laravel中使用設定檔也很方便,我們可以在app/config下建立一個名為custom.php,在其中添加:

returnarray(    'page_size' => 10,);

現在你就可以在程式中使用了,把paginate(10)改成paginate(Config::get('custom.page_size')就行,其中custom對應app/config下的檔案名稱,page_size對應相應設定檔中的鍵名,設定檔也可以根據你是開發環境還是生產環境進行不同的配置,詳細的可以查看官方文檔。

4.單元測試

在網站上線前,我們通常需要進行單元測試,Laravel提供了很方便的單元測試模組。我這裡僅實現一個例子,我們可以先在app/tests下建立一個名為MyTest.php的檔案,在裡面定義一個名為MyTest的類,切記要繼承TestCase類,然後就可以寫測試代碼了:

classMyTestextendsTestCase {publicfunctiontestIndex()    {$this->call('GET', '/');        $this->assertResponseOk();        $this->assertViewHas('articles');        $this->assertViewHas('tags');    }    publicfunctiontestNotFound()    {$this->call('GET', 'test');        $this->assertResponseStatus(404);    }}

測試代碼寫完之後,我們需要安裝一個phpunit組件,在composer.jsonrequire-dev中添加:

"phpunit/phpunit": "3.7.*"

然後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模組

$ sudo a2enmod rewrite

然後把/var/www目錄的許可權設為777,這個目錄是存放網站的目錄:

$ sudo chmod -R 777 /var/www/

然後把我們開發的專案檔夾複製到這個檔案夾中,我這裡是blog檔案夾:

$ cd /var/www/$ cp -r ~/laravel-project/blog/ .

上面的開發項目路徑要跟你自己的一樣,之後我們需要把app/storage目錄的許可權改為777,因為storage檔案夾中會存放日誌等,涉及到寫操作:

$ cd blog/app/$ chmod -R777 storage/

下面設定管理員:

$ 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 FollowSymLinksAllowOverride NoneRequireall granted

之後,現在啟動Apache伺服器:

$ sudo service apache2 start

在瀏覽器中訪問localhost或者127.0.0.1就可以看到我們的網站了,至此部署就完成了。

6.小結

本節教程講了錯誤處理最佳化、設定檔的使用、單元測試以及怎麼部署到Apache伺服器,你可以買一個網域名稱和一個伺服器,最好買VPS雲端服務器,虛擬空間非常有局限性,然後把你自己寫的網站部署到伺服器讓大家一起訪問。

最後的代碼下載:

$ git clone https://github.com/shiyanlou/laravel-blog-6.git

本文詳細出自http://www.shiyanlou.com/courses/123,轉載請註明出處

以上就介紹了laravel大型項目系列教程(六)之最佳化、單元測試以及部署,包括了方面的內容,希望對PHP教程有興趣的朋友有所協助。

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.