当前位置:首页 > CMS教程 > 其它CMS > 列表

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

发布:smiling 来源: PHP粉丝网  添加日期:2021-07-20 21:52:42 浏览: 评论:0 

这篇文章主要介绍了PHP的Laravel框架结合MySQL与Redis数据库的使用部署,需要的朋友可以参考下。

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

零、环境介绍

操作系统: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正使用此工具进来依赖管理,有两种安装方式

局部安装

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

分别执行以下两条命令

curl -sS https://getcomposer.org/installer | php

mv composer.phar /usr/local/bin/composer

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

composer -V

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

三、安装Laravel

按照Laravel的官方文档说明即可,建议使用【通过Laravel安装工具】,没什么坑,这里略过

提示:由于Laravel还依赖于一些的PHP扩展,所以使用yum安装

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

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

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

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

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底部添加如下代码:

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

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

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

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

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

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

五、Laravel结合Redis

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

1、安装启动Redis

安装

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

启动

$ 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. 'redis' => array
  2.   'cluster' => false, 
  3.   'default' => array('host' => '127.0.0.1''port' => 6379) 

3、coding

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

Tags: Laravel Redis

分享到: