# REST服務準備
## 13.1 Laravel
> Laravel是一套簡潔、優雅的PHP Web開發框架(PHP Web Framework)。它可以讓你從面條一樣雜亂的代碼中解脫出來;它可以幫你構建一個完美的網絡APP,而且每行代碼都可以簡潔、富于表達力。
* RESTful 路由: 通過簡單的閉包就能響應HTTP請求。幫你快速開始構建非凡的應用。
* 強大的數據操縱能力: Laravel自帶了強大的Eloquent ORM 和遷移工具。能夠完美的與MySQL、Postgres、SQL Server 和 SQLite協同工作。
* 優雅的模版引擎: PHP代碼或輕量級的Blade模版引擎都可無縫融合。Blade模版可以繼承,并且擁有極快的解析速度。相信你會喜歡它的。
* 為明天做準備: 構建大型的企業級應用或者只是提供簡單的JSON API;書寫強大的控制器或輕巧的RESTful路由,Laravel適應所有級別的開發工作。
* 可靠的基石: Laravel 的基石是數個Symfony組件,這些經過千錘百煉、可靠的組件為你的應用提供堅實的基礎。
* 基于Composer管理器: Composer 是一套幫你管理第三方擴展包的工具。能夠讓你迅速在 Packagist 中找到需要的擴展包。
* 強大的社區支持: 無論你是一個PHP新手還是經驗豐富的架構師,都能在社區中找到需要的知識。你可以在IRC中討論Idea,或者在論壇中發布問題。
* 測試、重構: Laravel 從開始就將測試作為重點功能。我們提供了靈活的IoC容器,集成了PHPUnit 測試工具。不用擔心,這些都很容易上手。
### 13.1.1 為什么是 Laravel
* 因為個人喜愛,你也可以用 Ruby On Rails來搭建這樣一個功能,或者是Java。
* PHP在我的服務器上運行得挺不錯的,而且我又不需要重新去寫配置那些配置。
* Laravel 可以簡單的開發我們所需要的功能,換句話說他是 PHP 世界的 Ruby On Rails。
這里不會再重述之前的問題,這里只是將需要的步驟一個個寫下來,然后丟到這里好好說一下。至于RESTful是什么,前面已經介紹了,就不再重復了。那么下面,我們就用Laravel來搭建一個平臺給物聯網用的。
## 13.2 安裝 Laravel
### 13.2.1 GNU/Linux安裝Composer
GNU/Linux Ubuntu/OpenSUSE下可以執行
~~~
$ curl -sS https://getcomposer.org/installer | php
~~~
#### 13.2.1.1 Windows安裝Composer
請直接下載
[Composer-Setup](https://getcomposer.org/Composer-Setup.exe)
#### 13.2.1.2 Mac OS
1.安裝Composer
~~~
brew install homebrew/php/composer
~~~
2.安裝Laravel
~~~
composer global require "laravel/installer=~1.1"
~~~
3.創建Laravel工程
~~~
composer create-project laravel/laravel your-project-name --prefer-dist
~~~
#### 13.2.1.3 Mac OS
1.下載laravel.phar
~~~
wget http://laravel.com/laravel.phar
~~~
2.重命名
~~~
mv laravel.phar laravel
~~~
3.移動到bin中
~~~
sudo mv laravel /usr/local/bin
~~~
4.創建項目
~~~
laravel new blog
~~~
## 13.3 MySQL
### 13.3.1 安裝MySQL
`出于某些原因,我建議用MariaDB替換MySQL,如果你"真正"需要mysql,將mariadb替換為mysql`
ps: 在下文中我會繼續用MySQL,而不是MariaDB,MairaDB是MySQL的一個分支,真正的開源分支。
Ubuntu/Debian/Mint
~~~
$ sudo apt-get install mariadb-server
~~~
Fedora/Centos
~~~
$ sudo yum install mariadb-server
~~~
openSUSE
~~~
$ sudo zypper install mariadb-server
~~~
Mac OS
~~~
$ brew install mariadb
~~~
### 13.3.2 配置MySQL
修改database.php
~~~
app/config/database.php
~~~
要修改的就是這個
~~~
'mysql' => array(
'driver' => 'mysql',
'host' => 'localhost',
'database' => 'iot',
'username' => 'root',
'password' => '940217',
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
),
~~~
如果你已經有phpmyadmin,似乎對你來說已經很簡單了,如果沒有的話,就直接用
~~~
$ mysql -uroot -p
~~~
來創建一個新的
~~~
CREATE DATABASE IF NOT EXISTS iot default charset utf8 COLLATE utf8_general_ci;
~~~
數據庫的目的在于存儲數據等等的閑話這里就不多說了,創建一個RESTful的目的在于產生下面的JSON格式數據,以便于我們在Android、Java、Python、jQuery等語言框架或者平臺上可以調用,最主要的是可以直接用Ajax來產生更炫目的效果。
~~~
{
"id": 1,
"temperature": 14,
"sensors1": 12,
"sensors2": 12,
"led1": 0
}
~~~
* [**一步步搭建物聯網系統**](http://www.ituring.com.cn/book/1580)
* [前言](http://www.ituring.com.cn/tupubarticle/3778)
* [第一部分](http://www.ituring.com.cn/tupubarticle/3801)
* [1 無處不在的HTML](http://www.ituring.com.cn/tupubarticle/3779)
* [2 無處不在的Javascript](http://www.ituring.com.cn/tupubarticle/3780)
* [3 無處不在的CSS](http://www.ituring.com.cn/tupubarticle/3781)
* [4 無處不在的三劍客](http://www.ituring.com.cn/tupubarticle/3782)
* [5 GNU/Linux 強大且Free](http://www.ituring.com.cn/tupubarticle/3783)
* [6 Arduino 極客的玩具](http://www.ituring.com.cn/tupubarticle/3784)
* [7 Python 代碼如散文](http://www.ituring.com.cn/tupubarticle/3785)
* [8 Raspberry Pi 極客的盛宴](http://www.ituring.com.cn/tupubarticle/3786)
* [9 Server 一切皆為服務](http://www.ituring.com.cn/tupubarticle/3787)
* [10 Web服務](http://www.ituring.com.cn/tupubarticle/3788)
* [11 HTTP 熟悉&陌生](http://www.ituring.com.cn/tupubarticle/3789)
* [12 設計RESTful API](http://www.ituring.com.cn/tupubarticle/3790)
* [第二部分](http://www.ituring.com.cn/tupubarticle/3802)
* [?13 環境準備](http://www.ituring.com.cn/tupubarticle/3791)
* [14 創建REST服務](http://www.ituring.com.cn/tupubarticle/3792)
* [15 REST與不同語言](http://www.ituring.com.cn/tupubarticle/3793)
* [16 前端顯示](http://www.ituring.com.cn/tupubarticle/3794)
* [17 RESTful的CoAP協議](http://www.ituring.com.cn/tupubarticle/3795)
* [第三部分](http://www.ituring.com.cn/tupubarticle/3803)
* [18 簡單物聯網](http://www.ituring.com.cn/tupubarticle/3797)
* [19 Android簡單示例](http://www.ituring.com.cn/tupubarticle/3798)
* [尾聲](http://www.ituring.com.cn/tupubarticle/3799)