PHP的Laravel框架结合MySQL与Redis数据库的使用部署

相对于熟读官方文档,更重要的是要把框架环境搭起来。

http://www.jb51.net/article/81257.htm  参考了
零、环境介绍

  • 操作系统:centOS
  • 数据库: mysql 5.6 (阿里云RDS)
  • PHP 5.4.4 (>=5.4即可)
  • Laravel 5.0

一、安装LNMP
在安装Laravel之前,需要把Linux + Nginx + Mysql + Php的环境搭建好。具体的搭建步骤这里就不再详述了。
P.S.

  • Linux阿里云已经自带了,本文使用的是centOS 6.5 64位的ECS
  • 关于Nginx和Apache的选择看自己喜好,本文使用的是反向代理能手Nginx
  • 是否安装Mysql也要看自己的情况,例如你使用阿里云的RDS,那就没必要安装了

二、安装Composer
composer是用来管理PHP包依赖的工具,Laravel正使用此工具进来依赖管理。有两种安装方式

局部安装
全局安装,即在系统任意目录下可使用。本文只介绍此种安装方法。官方安装文档

分别执行以下两条命令

1
2
curl -sS https: //getcomposer .org /installer | php
mv composer.phar /usr/local/bin/composer

安装完成,使用以下命令看是否安装成功

?
1
composer -V

出现版本号,即说明安装成功

三、安装Laravel
按照Laravel的官方文档说明即可,建议使用【通过Laravel安装工具】,没什么坑,这里略过
提示:由于Laravel还依赖于一些的PHP扩展,所以使用yum安装

?
1
sudo install yum php-mysql php-mcrypt php-mbstring php-tokenizer php-openssl

安装完成后,在Nginx的配置文件(一般是/etc/nginx/conf.d/default.conf)最下方添加如下配置

?
1
2
3
location / {
   try_files $uri $uri/ /index.php?$query_string;
}

来到你的laravel工程目录下,看到storage和vendor文件夹,使用以下命令修改其文件读写权限,让Nginx用户能读写它

?
1
2
sudo chmod -R 766 storage
sudo chmod -R 766 vendor

四、让MVC跑起来!
在此之前,你应该读一下官方文档 路由、控制器、数据库使用基础、Eloquent ORM
至此,可以开始coding,开发一个 MVC的demo了,此demo的功能是将数据库表tbl_item从数据库里读出来,并以json格式响应给浏览器。
假设你已经通过laravel new demo来初始化你的web app。

  • 数据库里建库(demo)、建表(tbl_item),(字段随意定)
  • 配置配置文件 config/database.php
  • 直接操作数据库,往tbl_item里插入一条数据
  • 开始coding

demo/app/http/routes.php底部添加如下代码:

?
1
Route::get( '/item/{id}' , 'ItemController@showItem' );

demo/app/http/controllers/ 目录新添文件 ItemController.php,代码如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php namespace App\Http\Controllers;
 
use Illuminate\Http\Request;
use App\Item as Item;
 
class ItemController extends Controller {
 
   private $model ;
 
   public function __construct()
   {
     $this ->model = new Item();
   }
 
   public function showItem( $id )
   {
     $users = $this ->model->fetchAll();
     echo json_encode( $users );
     Log::info( '获取用户列表,通过msyql' );
   }
}

demo/app/目录下新增文件 Item.php 代码如下

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php namespace App;
 
use Illuminate\Database\Eloquent\Model;
 
class Item extends Model {
 
   protected $fillable = [ 'name' , 'price' ];
   protected $guarded = [ 'id' ];
 
   /**
    * The database table used by the model.
    * default: tbl_items
    * @var string
    */
   // protected $table = 'tbl_items';
 
   public function fetchAll(){
     $items = $this ->all()->toJson();
     return $items ;
   }
}

使用浏览器访问http://yourIp/item/1,即可列出所有的item数据

五、Laravel结合Redis
直连DB是不够的,很快数据库访问就会成为系统的瓶颈。我们引入缓存Redis。还是一样的思路,先让系统跑起来。
1、安装启动Redis

安装

?
1
2
3
4
$ wget http: //download .redis.io /releases/redis-3 .0.1. tar .gz
$ tar xzf redis-3.0.1. tar .gz
$ cd redis-3.0.1
$ make

启动

?
1
$ src /redis-server

查看官方下载和安装文档,只需要几个命令即可


2、安装PHP PRedis
PRedis是PHP访问redis的扩展包,只需要下载原码即可,不需要安装PHP扩展(如php-redis.so)。但在这之前要介绍一个composer,因为laravel通过它来安装第三方程序包(管理依赖关系)。

cd 到你的App所在路径,修改composer.json,在require字段里,添加"predis/predis":"~1.0.1",然后当前目录下 sudo composer update,此时就会自动下载包需要的扩展包,这些扩展包将会被放在vendor目录下。如果出现内存不够这些报错,现在看来是内存分配不够的原因,重启一下服务器即可,彻底解决的办法要修改服务器配置,但我不清楚改哪里,后续再补

配置相关配置,查看官方文档即可。主要是配置config/database.php

?
1
2
3
4
'redis' => array (
   'cluster' => false,
   'default' => array ( 'host' => '127.0.0.1' , 'port' => 6379)
)


3、coding

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<?php namespace App\Http\Controllers;
 
use Illuminate\Http\Request;
use App\User as User;
use Illuminate\Support\Facades\Redis as Redis;
 
class UserController extends Controller {
 
   // use User;
 
   private $model ;
   /**
    * Create a new controller instance.
    *
    * @return void
    */
   public function __construct()
   {
     $this ->model = new User();
   }
 
   /**
    * Show
    *
    * @return Response
    */
   public function showUser( $id )
   {
     $redis = Redis::connection( 'default' );
     $cacheUsers = $redis ->get( 'userList' );
 
     if ( $cacheUsers ){
       $users = $cacheUsers ;
       print_r( $users );
       Log::info( '获取用户列表,通过redis' );
     } else {
       $users = $this ->model->fetchAll();
       $redis ->set( 'userList' , $users );
       print_r( $users );
       Log::info( '获取用户列表,通过msyql' );
     }
   }
}

PHP的Laravel框架结合MySQL与Redis数据库的使用部署

转载于:https://www.cnblogs.com/pretty_c_a_t/p/7097380.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值