相对于熟读官方文档,更重要的是要把框架环境搭起来。
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'
);
}
}
}
|