從頭開始建立一個laravel 網站 紀錄
建立新專案
通常在/var/www下面直接新增網站資料夾,不放在預設產生的html中, 所以要cd來到/var/www。
//require laravel
composer global require “laravel/installer=~1.1″
echo ‘export PATH="$PATH:$HOME/.composer/vendor/bin"‘ >> ~/.bashrc
source ~/.bashrc
//建立專案
laravel new laravel_practice
//進入這個新增的專案資料夾
cd laravel_practice
//更新composer套件管理(不然無法用php artisan)
composer update
//設定php artisan簡寫 (optional)
alias pa = 'php artisan'
//或是
alias artisan='php artisan'
設定Apache2 導向與網址
由於Laravel都是從同一個入口index.php進入,要先把網址覆寫模組(rewrite)打開 要從/public(對外公開的資料夾)進去laravel專案,在/etc/apache2 執行:
a2enmod rewrite
接著,在sites_available裡面新增一組網站設定檔案 practice.monoame.com.conf,通常是網址+.conf(不加a2ensite會注意不到) :::warning 注意,使用子網域的時候,務必要在dns上面加上wildcard (*.monoame.com),不然其他名稱不會被攔截。 :::
<VirtualHost *:80>
# 開起資料夾的overwrite
<Directory "/var/www/practice_laravel/public">
AllowOverride All
</Directory>
# 網域和文件資料夾設定
ServerName practice.monoame.com
ServerAdmin webmaster@localhost
DocumentRoot /var/www/practice_laravel/public
# 錯誤紀錄設定
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
最後重新載入apache2 就能看到網站了:
service apache2 reload
糟糕,如果出現500錯誤訊息不用緊張,請開啟storage資料夾的讀寫權限即可:
cd /var/www/laravel_practice
chmod -R o+w storage
設定.env檔案
原本會有個.env.example檔案,複製改成自己的,先初始化database連結
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=practice
DB_USERNAME=root
DB_PASSWORD=*******
這時候就可以產生應用程式金鑰了
artisan key:generate
開始建立文章用的資料庫
為了做一篇文章,我們需要四個部分:
- 資料庫與Model: 儲存資料與操作用
- View(Blade): 呈現頁面用
- Route網址路由: 負責導引跟處理網址需求到Controller
- Controller: 負責處理背後操作的邏輯(儲存 呈現 呼叫哪個View之類的)
資料庫建立與migration
artisan make:migration post
database/migration資料夾裡面會多出一個 日期_post.php 紀錄資料庫變更的細節, 在up function裡面儲存的是建立用的程式,使用Schema語法:
Schema::create('posts',function($table){
$table->increments('id'); //新增一個自動遞增的id
$table->string('title')->default(''); //新增標題
$table->text('content'); //新增內文
});
在down function裡面則是把這個資料表刪掉
Schema::drop('posts');
參考 https://laravel.com/docs/4.2/schema
設定完畢後,此時執行migrate,將剛剛的檔案裏面描述的資料庫變更正式的執行。
artisan migrate
如果需要回復剛剛的變更,只要執行rollback就可以倒退回前一個狀態。
artisan migrate:rollback
Model建立
artisan make:model Post
此時,會多出一個app/Post.php檔案,預設對應資料表是複數型的posts 連Company的mode都會自動對應到companies的資料表... 基本上沒有太多要額外做的設定, 也可以額外指定對應的資料表或資料寫入設定,會蓋掉原來自動設定
//指定對應的資料表
protected $table = 'users';
//指定可以被批次寫入的欄位
protected $fillable = array('first_name', 'last_name', 'email');
//指定不能被批次寫入的欄位
protected $guarded = array('id', 'password');
model的用法可以參考 https://laravel.com/docs/4.2/eloquent
Route設定
// routes/web.php