编程语言laravel大型项目系列教程(六)之优化、单元测试以及部署

本节教程将讲解错误处理、配置文件的使用、单元测试以及部署到Apache服务器。

1.错误处理

如果用户访问的URL不存在或者服务器存在错误时,我们不希望返货一个错误的页面,而想返回一个友好提示的页面,在Laravel中可以很轻松地实现,Laravel有很简单的错误和日志处理,当服务器端存在错误时,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 FollowSymLinks
AllowOverride 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教程有兴趣的朋友有所帮助。

文章来源:https://www.php.cn/faq/332514.html

(0)

相关推荐

  •  Laravel使用EasyWechat,3分钟完成微信支付

    一.准备工作 1.下载微信官方PHP的SDK,里面有个rootca.pem要用到,在php.ini里配置curl.cainfo=你存放rootca.pem的绝对路径,重启PHP 2.composer集 ...

  • laravel自带的auth使用captcha验证码插件

    安装captcha composer 安装 登录网址 packagist.org 查找 laravel captcha安装 注册 providers aliases 生成配置文件 修改默认文件 页面修 ...

  • Macd顶级课程系列教程 第六课Macd其他形态的讲解

    6.1粘合发散 一种一直很弱的状态,突然因利好消息或者政策走强的图形 例如2020.6.19光大证券 做这种一般是受到突发利好影响造成的原来趋势被打破转入另外一种趋势的的图形,如果原来的趋势就是缓慢上 ...

  • Laravel的中大型项目构架

    初学者学习Laravel时分两种,一种是乖乖的将程序填入MVC构架内,导致controller与model异常的肥大,日后一样很难维护:一种是常常不知道程序该写在哪一个class内而犹豫不决,毕竟传统 ...

  • vue系列教程之微商城项目|vuex全局状态管理-加入购物车

    问题描述 vuex简介 vuex是vue项目中用于管理全局状态的插件,如果对状态二字不明了,就简单理解成全局变量即可. 全局状态管理方式有很多,千奇百怪,比如bus总线.自定义一个js文件等,感兴趣可 ...

  • vue系列教程之微商城项目|购物车页面

    问题描述 vant-ui提供了现成的商品卡片,可以用于购物车页面 解决方案 1.引入顶部导航栏 1.引入商品卡片组件 main.js中追加 2.页面使用并查看效果 views/gwc.vue ps:直 ...

  • vue系列教程之微商城项目|商品详情

    问题描述 页面注册 1.在secondary中,新建商品详情页shopDetail.vue 2.在路由配置页面router/index.js中,注册该页面的路由 3.监听商品列表页的商品点击事件,当点 ...

  • vue系列教程之微商城项目|商品购买

    页面注册 1.新建页面 secondary/shopping.vue 2.注册页面,将页面与对应路由绑定 3.测试,点击主页中的商品购买路由跳转到shopping 引入顶部导航栏 效果图 编写商品卡片 ...

  • vue系列教程之微商城项目|分类

    描述 准备工作 下载better-scroll cnpm install better-scroll -S 引入vant-ui的侧边导航栏组件 main.js中新增以下代码 静态布局 顶部导航栏引入 ...

  • vue系列教程之微商城项目|项目创建

    vue系列教程之微商城项目|项目创建

  • vue系列教程之微商城项目|主页

    轮播图  1.引入轮播图组件 main.js 2.新建轮播图组件 components/zhuye/swiper.vue 3.引入轮播图查看效果 zhuye.vue 效果图 4.轮播图数据请求 1)安 ...