当前位置: 移动技术网 > IT编程>开发语言>PHP > PHP的Laravel框架结合MySQL与Redis数据库的使用部署

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

2017年12月12日  | 移动技术网IT编程  | 我要评论

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

  • 操作系统: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)最下方添加如下配置

location / {
  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,代码如下:

<?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 代码如下

<?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

安装

$ 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

启动

$ 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

'redis' => array(
  'cluster' => false,
  'default' => array('host' => '127.0.0.1', 'port' => 6379)
)


3、coding

<?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');
    }
  }
}

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网