必要開發套件:
- PHP >= 7.13
- Laravel >= 5.5
- composer
- MysqlDB或MariaDB
- npm
- Apache >= 1.4 (可自行選取架設伺服器的工具,這邊僅介紹Apache)
可以直接安裝XAMPP
=> 裡面包含PHP
、MariaDB
、Apache
、phpmyadmin
.....等工具
首先確保composer
與npm
已經安裝完成可使用composer --version
與npm --version
測試有沒有安裝成功。
-
安裝後端
PHP
套件 (產品模式下請使用composer install --no-dev
)composer install
-
安裝前端
JavaScript
套件npm install
-
建立資料庫
建立資料庫請使用MysqlDB
或MariaDB
,編碼模式請選utf8_general_ci
,並且設定到.env
的DB_DATABASE
變數中。 -
設定
.env
檔案
先將專案下的.env.example
複製一份並改名為.env
,並且開啟編輯.env
檔案-
APP_NAME
為應用名稱。 -
APP_ENV
為環境變數。(此變數值本身沒什麼特別的作用,但對於某些套件會依照此值做出不同的變化)- 一般設定為
local
開發模式testing
測試模式staging
上線測試模式production
上線模式
-
APP_KEY
為應用密鑰。可使用指令php artisan key:generate
自動產生 -
APP_DEBUG
為應用Debug模式。主要用於Debugbar
這個laravel的debug套件,注意上線時一定要將此值設為false
。(為true
則開啟Debug訊息;反之false
為關閉) -
APP_URL
為設定Laravel伺服器的URL位址,有一些需要監聽伺服器的套件會需要用到。# 應用程式設定 APP_NAME=InduLab APP_ENV=local APP_KEY= APP_DEBUG=true APP_URL=http://localhost ...
-
-
產生APP_KEY
php artisan key:generate
在專案目錄下開啟命令提示字元,輸入以下指令
php artisan serve
--host={YOUR ALLOW IP}
可設定ip白名單(預設為localhost
)--port={YOUR PORT}
可設定伺服器的監聽通訊埠(預設為8000)
建置資料表開啟命令提示字元,輸入以下指令
php artisan migrate
-
打包前端程式碼
在專案目錄下開啟命令提示字元,可以使用npm run watch
或npm run dev
,dev為使用webpack編譯檔案,完成後輸出檔案到指定目錄;watch則是初次編譯完成後,會持續監聽指定打包的目錄檔案是否有變更,如果有變更則重新進行打包。npm run watch
註記:watch與dev為開發階段使用,請勿拿到線上直接使用此打包的檔案。
-
相關設定
如果想要改變webpack相關設定,可以自行查閱專案跟目錄下的webpack.mix.js
檔案。BrowserSyc
:host
會綁定到全位置,所以注意要將轉發頁面及UI控制板的頁面對外之port
進行封鎖。SourceMap
:只要在開模式下,目前設定將此功能開啟。此功能主要用於webpack打包後可以有效地進行Debug,可以實際顯示執行的行號與位置,但會增加檔案大小及實際上線很容易使用者可以輕易查看到你的原始碼,所以這邊建議產品模式將此功能關閉。設定將webpackConfig
的devtool: "inline-source-map"
去除即可。(預設的設定會自行判斷目前為開發模式或產品模式,如果為產品模式則不會設定此行,也就是說產品模式不會有SourceMap功能)- 其他: 其他功能部分如
laravel
內的mix
版本JS
及CSS
號管控、將常用的套件打包進行抽取到vendor.js
以減少請求同樣內容的問題、如何打包檔案及SASS
如何編譯為CSS
檔案等等。可依照需求自行查看文檔進行修改,這邊就不贅述了。
-
Vue開發須知
-
安裝前後端套件
開啟CLI視窗輸入指令composer install --no-dev && npm install
-
建置後端
專案下複製.env.example
檔案並改名為.env
在專案根目錄下,並產生APP_KEY
。
開啟CLI視窗輸入指令php artisan key:generate
完成配置後開啟
.env
檔案並設定資料庫相關設定,如資料庫名稱、資料庫使用者帳號與密碼,完成後開始資料庫的遷移(migration)。
開啟CLI視窗輸入指令php artisan migrate
-
建置前端
開啟CLI視窗輸入指令npm run prod
-
測試伺服器
等待上方步驟都已經成功完成後,開啟CLI視窗輸入指令php artisan serve
完成測試後關閉測試伺服器,並開始配置伺服器應用(
Apache
)設定部分
設定虛擬主機(Virtaul Host)。假設伺服器欲監通訊埠(port) 8000的位置,並且允許所有主機IP連 入,設定如下範例。(請先確認proxy的模組已啟用 => httpd.conf
)
注意:如果僅需架設單獨一個伺服器,可不用設定虛擬主機與代理,直接設定httpd.conf
即可。
-
apache/conf/httpd.conf
LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_http_module modules/mod_proxy_http.so
-
apache/conf/extra/httpd-vhosts.conf
# 監聽 0.0.0.0:8000 位置 Listen 8000 # 虛擬主機設定 <VirtualHost *:8000> # 首頁位置,這邊設定在laravel專案下之public的index.php作為啟動處 DocumentRoot D:/phy/InduLab_laravel5/public # 掛載專案目錄 <Directory "D:/phy/InduLab_laravel5"> # 允許專案內的.htaccess檔案覆寫設定 AllowOverride All # 設定允許及拒絕的Domain及IP <RequireAll> Require ip 140.125.32 </RequireAll> </Directory> # 將一些敏感的設定檔如.htaccess、web.config拒絕存取。 <LocationMatch “\.htaccess|web\.config”> Order Allow,Deny Deny from all </LocationMatch> # 錯誤訊息紀錄位置 ErrorLog D:/xampp/logs/error_slope.log # 一般訊息紀錄位置 CustomLog D:/xampp/logs/access_slope.log combined </VirtualHost>
設定完成後,即可開啟瀏覽器測試是否可以成功開啟網頁。
-
預設管理員帳號
帳號:admin 密碼:admin
-
如果出現狀態碼419的問題,確認
.env
檔案內的APP_KEY
及session
相關的設定。另外在使用POST
方法時,請務必要加上@csrf
在表單內,伺服器會驗證裡面的_token
欄位。- 確認
.env
檔案內的APP_KEY
變數是否有正確的配置,可使用php artisan key:generate
來配置APP_KEY
。 - 確認
.env
檔案內的SESSION_LIFETIME
來設定session
存在的時間(單位以分鐘計時),因如果session
過期會造成驗證session
錯誤,會擲回TokenMismatchException
錯誤,如果未來有需要可在app/Exceptions/Handler.php
來處理錯誤,範例如以下程式碼。public function render($request, Exception $exception) { if($exception instanceof \Illuminate\Session\TokenMismatchException) { /* * 實作例外擲回時的處理,如下方的重新導向到/login的URI */ // 回到登入頁面 return redirect('/login'); } ... }
- 使用
POST
方法時,請在表單內加入@csrf
或{!! csrf_field() !!}
在blade.php
檔案內,範例如下如果使用<form method="POST" action="/data"> @csrf <input type="text" name="data1" id="data1"/> <input type="text" name="data2" id="data2"/> {{-- ... --}} </form>
ajax
方法請自行在POST
時自己加入_token
欄位,並放入目前的token
字串給伺服器。或在請求的header
內加入X-CSRF-TOKEN
欄位並放入token
。
- 確認
-
如果出現狀態碼500,請確認後端程式碼是否錯誤,如果擲回例外而沒又去接取時,便會跳出狀態碼500。
-
如果使用
npm run {command}
出現cross-env
錯誤, 請安裝cross-env
套件到電腦環境變數npm install cross-env -g
-
請先執行指令
composer dump-autoload
,讓composer重新自動加載目錄下檔案。(一般會發生在seed
命令下)
以下指令都會配置在php artisan {command}
下面,所以命令開頭請自行加上php artisan
。
-
make:hash {待加密密碼}
:
將輸入的密碼進行hash加密,並將結果印出在命令提示視窗上。D:\workspace\master\InduLab_laravel5>php artisan make:hash 123456 $2y$10$U25mbHdNnM.Xu/.rB8jqvu6NJZAMvuErR3p7xF7LPqZTLT/sh.9Yq