Laravel 學習筆記(4) - 基本配置及設定

configuration

使用 Laravel 框架,必須在伺服器上做一些設定才能運作,另外,也要瞭解如何配置每個 Laravel 專案的基本設定。

伺服器設定

以下設定為伺服器時上可能會需要做的動作。

Apache

在 httpd.conf 中,必須啟用 rewrite_module 才能讓 laravel 的 route 正常運作。

首先,開啟 httpd.conf 找到模組把註解取消:
LoadModule rewrite_module modules/mod_rewrite.so
以下權限的部份可參考修改,將 DocumentRoot 指定到你的網站根目錄,例如:
DocumentRoot "/var/www"
然後把這個目錄的覆寫權限(AllowOverride)打開,增加一個 xml 標籤:
<Directory "/var/www">
    AllowOverride All
</Directory>
或是直接加在 VirtualHost 也可以。

另外,進入 laravel 網站目錄,對 app/storage 目錄開啟寫入設定,
chmod -R 777 app/storage
或
chmod -R g+w app/storage
並且對網站加入 apache 所有權:
chown -R apache:apache *

整合式開發環境

為了快速建立開發環境,避免鎖碎的安裝,我們會使用整合式開發環境工具來建立發開環境。這些工具同時整合了 Apache 及 MySQL 伺服器及 PHP ,並且可能還包含其他語言及管理工具。

如果使用 Windows 作業系統,可以安裝 WAMP

!重要,Laravel 4 必須使用 PHP 5.4 以上的版本。

如果使用 Mac ,可以安裝 MAMP。MAMP 也有出 MAMP for Windows 的版本,可自行選擇。

要管理資料庫,可以使用 phpMyAdmin,或 Sequel Pro (只有 Mac 版本,不要裝 App Store 的,聽說不是它們開發的)

PHP 的指定

在 Mac 中使用MAMP有可能要指定 PHP 執行檔的位置,否則會出現找不到 PHP 或因為之前安裝過 PHP 而執行到之前安裝的。

打開終端機,輸入 vim ~/.bash_profile 在前面加入
export PATH=/Applications/MAMP/bin/php/php5.5.14/bin:$PATH
就是把 "/Applications/MAMP/bin/php/php5.5.14/bin" 這段路徑加入你的 PATH 中,你的 PHP 版本可能會不同,請自行調整。

Laravel 配置

通用設定

當你的伺服器都設定完成,開啟瀏覽器輸入
http://localhost/你的網站名稱(即目錄名稱)/public/
順利的話應該就可以看到預設的 Laravel 頁面。

備註:「你的網站名稱」其實就是資料夾的名稱。

接下來要做基本的設定:
  • 開啟 debug 模式
  • 設定 url
  • 設定 key
  • 設定資料庫
這些設定都會在 app/config 目錄下動作。

第一個要認識的是關於整個網站的 app.php,開啟它。它會回傳一個陣列,這個陣列是以各個參數組合而成。首先要認識的有:
  • debug
  • url
  • key

debug

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

url

如果你是本機開發,也可以不去修改。但當你上傳到伺服器上,就必須改成你的伺服器所在的網址,例如:
http://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 模式。

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

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

首先回到此網站的根目錄,其中有一個 bootstrap 的目錄,在 start.php 中可以看到一個環境變數:
$env = $app->detectEnvironment(array(
    'local' => array('abc.local'),
    'production' => array('cloud'),
));
"local"及"production"代表 config 下的目錄名稱,所設定的值是代表機器的 hostname (在終端機中輸入 hostname 即可得機器名稱),以陣列的方式儲存。這裡的 "abc.local" 代表本機的機器名稱,"cloud" 代表實際伺服器的名稱。

註:這裡的"production"及其目錄是我加的,預設裡並沒有。取什麼名稱都可以,只要設定對應到目錄名稱即可。

雜七雜八設定的頭都昏了,接下來就可以開始寫程式了。
本文網址:http://blog.tonycube.com/2014/12/laravel-4.html
Tony Blog 撰寫,轉載時請註明出處及文章連結,謝謝 😀

我要留言

留言小提醒:
1.回覆時間通常在晚上,如果太忙可能要等幾天。
2.請先瀏覽一下其他人的留言,也許有人問過同樣的問題。
3.程式碼請先將它編碼後再貼上。(線上編碼:http://bit.ly/1DL6yog)
4.文字請加上標點符號及斷行,難以閱讀者恕難回覆。
5.感謝您的留言,您的問題也可能幫助到其他有相同問題的人。