PHP的Laravel框架結(jié)合MySQL與Redis數(shù)據(jù)庫(kù)的使用部署
相對(duì)于熟讀官方文檔,更重要的是要把框架環(huán)境搭起來(lái)。
零、環(huán)境介紹
- 操作系統(tǒng):centOS
- 數(shù)據(jù)庫(kù): mysql 5.6 (阿里云RDS)
- PHP 5.4.4 (>=5.4即可)
- Laravel 5.0
一、安裝LNMP
在安裝Laravel之前,需要把Linux + Nginx + Mysql + Php的環(huán)境搭建好。具體的搭建步驟這里就不再詳述了。
P.S.
- Linux阿里云已經(jīng)自帶了,本文使用的是centOS 6.5 64位的ECS
- 關(guān)于Nginx和Apache的選擇看自己喜好,本文使用的是反向代理能手Nginx
- 是否安裝Mysql也要看自己的情況,例如你使用阿里云的RDS,那就沒(méi)必要安裝了
二、安裝Composer
composer是用來(lái)管理PHP包依賴的工具,Laravel正使用此工具進(jìn)來(lái)依賴管理。有兩種安裝方式
局部安裝
全局安裝,即在系統(tǒng)任意目錄下可使用。本文只介紹此種安裝方法。官方安裝文檔
分別執(zhí)行以下兩條命令
curl -sS https://getcomposer.org/installer | php mv composer.phar /usr/local/bin/composer
安裝完成,使用以下命令看是否安裝成功
composer -V
出現(xiàn)版本號(hào),即說(shuō)明安裝成功
三、安裝Laravel
按照Laravel的官方文檔說(shuō)明即可,建議使用【通過(guò)Laravel安裝工具】,沒(méi)什么坑,這里略過(guò)
提示:由于Laravel還依賴于一些的PHP擴(kuò)展,所以使用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;
}
來(lái)到你的laravel工程目錄下,看到storage和vendor文件夾,使用以下命令修改其文件讀寫權(quán)限,讓Nginx用戶能讀寫它
sudo chmod -R 766 storage sudo chmod -R 766 vendor
四、讓MVC跑起來(lái)!
在此之前,你應(yīng)該讀一下官方文檔 路由、控制器、數(shù)據(jù)庫(kù)使用基礎(chǔ)、Eloquent ORM
至此,可以開(kāi)始coding,開(kāi)發(fā)一個(gè) MVC的demo了,此demo的功能是將數(shù)據(jù)庫(kù)表tbl_item從數(shù)據(jù)庫(kù)里讀出來(lái),并以json格式響應(yīng)給瀏覽器。
假設(shè)你已經(jīng)通過(guò)laravel new demo來(lái)初始化你的web app。
- 數(shù)據(jù)庫(kù)里建庫(kù)(demo)、建表(tbl_item),(字段隨意定)
- 配置配置文件 config/database.php
- 直接操作數(shù)據(jù)庫(kù),往tbl_item里插入一條數(shù)據(jù)
- 開(kāi)始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('獲取用戶列表,通過(guò)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;
}
}
使用瀏覽器訪問(wèn)http://yourIp/item/1,即可列出所有的item數(shù)據(jù)
五、Laravel結(jié)合Redis
直連DB是不夠的,很快數(shù)據(jù)庫(kù)訪問(wèn)就會(huì)成為系統(tǒng)的瓶頸。我們引入緩存Redis。還是一樣的思路,先讓系統(tǒng)跑起來(lái)。
1、安裝啟動(dòng)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
啟動(dòng)
$ src/redis-server
查看官方下載和安裝文檔,只需要幾個(gè)命令即可
2、安裝PHP PRedis
PRedis是PHP訪問(wèn)redis的擴(kuò)展包,只需要下載原碼即可,不需要安裝PHP擴(kuò)展(如php-redis.so)。但在這之前要介紹一個(gè)composer,因?yàn)閘aravel通過(guò)它來(lái)安裝第三方程序包(管理依賴關(guān)系)。
cd 到你的App所在路徑,修改composer.json,在require字段里,添加"predis/predis":"~1.0.1",然后當(dāng)前目錄下 sudo composer update,此時(shí)就會(huì)自動(dòng)下載包需要的擴(kuò)展包,這些擴(kuò)展包將會(huì)被放在vendor目錄下。如果出現(xiàn)內(nèi)存不夠這些報(bào)錯(cuò),現(xiàn)在看來(lái)是內(nèi)存分配不夠的原因,重啟一下服務(wù)器即可,徹底解決的辦法要修改服務(wù)器配置,但我不清楚改哪里,后續(xù)再補(bǔ)
配置相關(guān)配置,查看官方文檔即可。主要是配置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('獲取用戶列表,通過(guò)redis');
}else{
$users = $this->model->fetchAll();
$redis->set('userList', $users);
print_r($users);
Log::info('獲取用戶列表,通過(guò)msyql');
}
}
}
- php操作redis數(shù)據(jù)庫(kù)常見(jiàn)方法實(shí)例總結(jié)
- PHP操作Redis數(shù)據(jù)庫(kù)常用方法示例
- PHP數(shù)據(jù)庫(kù)操作三:redis用法分析
- PHP實(shí)現(xiàn)的redis主從數(shù)據(jù)庫(kù)狀態(tài)檢測(cè)功能示例
- php實(shí)現(xiàn)redis數(shù)據(jù)庫(kù)指定庫(kù)號(hào)遷移的方法
- 30個(gè)php操作redis常用方法代碼例子
- redis 隊(duì)列操作的例子(php)
- php結(jié)合redis實(shí)現(xiàn)高并發(fā)下的搶購(gòu)、秒殺功能的實(shí)例
- php Session存儲(chǔ)到Redis的方法
- PHP操作Redis常用技巧總結(jié)
- php+redis實(shí)現(xiàn)商城秒殺功能
- php操作redis緩存方法分享
- php操作Redis數(shù)據(jù)庫(kù)基本示例【安裝、連接、設(shè)置、查詢、斷開(kāi)】
相關(guān)文章
php實(shí)現(xiàn)簡(jiǎn)單的權(quán)限管理的示例代碼
本篇文章主要介紹了php實(shí)現(xiàn)簡(jiǎn)單的權(quán)限管理的示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-08-08
Laravel5.4框架使用socialite實(shí)現(xiàn)github登錄的方法
這篇文章主要介紹了Laravel5.4框架使用socialite實(shí)現(xiàn)github登錄的方法,結(jié)合實(shí)例形式分析了Laravel相關(guān)下載、安裝、配置及github登陸、注冊(cè)、設(shè)置等相關(guān)操作技巧,需要的朋友可以參考下2019-03-03
php封裝實(shí)現(xiàn)釘釘機(jī)器人報(bào)警接口的示例代碼
這篇文章主要介紹了php封裝實(shí)現(xiàn)釘釘機(jī)器人報(bào)警接口的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08
ThinkPHP框架任意代碼執(zhí)行漏洞的利用及其修復(fù)方法
這篇文章主要介紹了ThinkPHP框架任意代碼執(zhí)行漏洞的利用及其修復(fù)方法,該漏洞的修復(fù)對(duì)于廣大使用ThinkPHP的開(kāi)發(fā)人員來(lái)說(shuō)尤為重要!需要的朋友可以參考下2014-07-07
php封裝單文件上傳到數(shù)據(jù)庫(kù)(路徑)
這篇文章主要介紹了php封裝單文件上傳到數(shù)據(jù)庫(kù)(路徑) 的相關(guān)資料,需要的朋友可以參考下2017-10-10

