> For the complete documentation index, see [llms.txt](https://tony915.gitbook.io/laravel-4-2/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://tony915.gitbook.io/laravel-4-2/ji-ben-pei-zhi-she-ding/config-site.md).

# 設定 Laravel 網站

## 基本設定

當你的伺服器都設定完成，開啟瀏覽器輸入

```
http://localhost/你的網站名稱/public/
```

應該就可以看到預設的 Laravel 頁面。

註：「你的網站名稱」即目錄的名稱。

一個新的網站，通常要做的基本設定：

* 開啟 debug 模式
* 設定 url
* 輸入 key
* 設定資料庫

這些設定都會在 app/config 目錄下動作。

第一個要認識的是關於整個網站的 app.php，開啟它，你會發現它只是回傳陣列，這個陣列是以各個參數組合而成。首先要認識的有：

* debug
* url
* key

### debug

預設為 false 不開啟，改為 true 就是開啟。不過，我們先不要更動它，讓它保持 false。

### url

如果你是本機開發，可以不去修改。但當你上傳到伺服器上，就必須改成你的伺服器所在的網址，例如：

```
http://www.abc.com.tw/blog/public
```

假設 blog 是網站目錄的名稱。注意 public 後面沒有斜線。

### key

基於安全的理由，每個 Laravel 網站，都要指定一組 32 位元的 key。這個 key 可以由 artisan 來產生。請開啟終端機，進入網站目錄，輸入

```
php artisan key:generate
```

就會產生一組 32 位元的 key，將其複製貼上到 key 欄位。這組 key 會用來識別所有的連線動作，保護網站的安全，這是必須做的動作。

### 資料庫

接下來是設定資料庫，打開 database.php，首先要認識：

* default
* connections

default 是指定要使用的資料庫，預設為 mysql。可用的選項在下方 connections 項目中可以找到：

* sqlite
* mysql
* pgsql
* sqlsrv

接著在 connections 項目中，設定資料庫的連線資料，如果前面選擇mysql，就修改 mysql 項目的資料：

* database：指定你的資料庫的名稱
* username：指定可操作資料庫的使用者名稱
* password：指定使用者密碼

## 依環境設定

通常你會在本機開發，然後再上傳檔案到實際運作的伺服器，如果先把這些不同環境的配置設定好，就不用因為環境改變而去做這些配置的調整。

Laravel 讓你可以依不同環境設定不同的配置檔。在 config 目錄下，有一個 local 目錄，這個目錄是你本機開發的配置檔。

你可以自行新增一個 production 的目錄，當成伺服器上實際運行時的配置檔，在這些目錄中加入要重新指定的配置檔(檔名一樣)，這些檔案的設定會覆蓋掉原本 config 中的相同檔案中的設定參數。

在 local 目錄中，相同名稱的 app.php 中，我們設定 debug 參數為 true。這樣只要在本機的環境中就會開啟 debug 模式。而在 production 目錄中，也有相同名稱的 app.php ，其中的 debug 則設為 false。這樣在實際運行的伺服器上，就不會開啟 debug 模式。它們會覆蓋掉原本在 app/config 中相同名稱中的設定。

相同的概念，database.php 中的參數，也許本機及實際伺服器的資料庫名稱、帳號及密碼不同，就可以分開設定。

那要如何知道現在是在本機或是在實際運作的伺服器呢？

首先回到此網站的根目錄，其中有一個 bootstrap 的目錄，在 start.php 中可以看到一個環境變數：

```
$env = $app->detectEnvironment(array(
    'local' => array('abc.local'),
    'production' => array('cloud'),
));
```

"local"及"production"代表 config 下的目錄名稱，所設定的值是代表機器的 hostname(在終端機中輸入 hostname 即可得機器名稱)，資料以陣列的方式儲存。這裡的 "abc.local" 代表本機的機器名稱，"cloud" 代表實際伺服器的名稱。
