1. 程式人生 > >laravel5.5 嘗試使用laravel安裝器安裝(失敗) 最後還是用的composer。。。

laravel5.5 嘗試使用laravel安裝器安裝(失敗) 最後還是用的composer。。。

伺服器要求

Laravel 框架對PHP版本和擴充套件有一定要求,不過這些要求 Laravel Homestead 都已經滿足了,不過如果你沒有使用 Homestead 的話(那真是一件很遺憾的事情),有必要了解下這些以便確認自己的環境滿足要求:

  • PHP >= 7.0.0
  • PHP OpenSSL 擴充套件
  • PHP PDO 擴充套件
  • PHP Mbstring 擴充套件
  • PHP Tokenizer 擴充套件
  • PHP XML 擴充套件

滿足以上需求之後,就可以開始安裝 Laravel 了。

安裝 Laravel

Laravel 使用 Composer 管理依賴,所以,安裝之前確保已經在機器上安裝了 Composer(如果尚未安裝的話參考

這篇文件去安裝吧)。

通過 Laravel 安裝器

首先,通過 Composer 安裝 Laravel 安裝器:

composer global require "laravel/installer"

確保 $HOME/.composer/vendor/bin 在系統路徑中(Mac中對應路徑是 ~/.composer/vendor/bin,Windows對應路徑是 ~/AppData/Roaming/Composer/vendor/bin,其中 ~ 表示當前使用者家目錄),否則不能在命令列任意路徑下呼叫 laravel 命令。

安裝完成後,通過簡單的 laravel new 命令即可在當前目錄下建立一個新的 Laravel 應用,例如,laravel new blog

將會建立一個名為 blog 的新應用,且包含所有 Laravel 依賴。該安裝方法比通過 Composer 安裝要快很多:

laravel new blog

如果之前已經安裝過舊版本的 Laravel 安裝器,需要更新後才能安裝最新的 Laravel 5.5 框架應用:

composer global update

通過 Composer Create-Project

你還可以在終端中通過 Composer 的 create-project 命令來安裝 Laravel 應用:

composer create-project --prefer-dist laravel/laravel blog

如果要下載安裝 Laravel 其他版本應用,比如 5.4 版本,可以使用這個命令:

composer create-project --prefer-dist laravel/laravel blog 5.4.*。

本地開發伺服器

如果你在本地安裝了 PHP,並且想要使用 PHP 內建的開發環境伺服器為應用提供服務,可以使用 Artisan 命令 serve

php artisan serve

該命令將會在本地啟動開發環境伺服器,這樣在瀏覽器中通過 http://localhost:8000 即可訪問應用:

當然,更強大的本地開發環境選擇還是 Homestead 和 Valet

配置 Laravel

初始化配置

公共目錄

安裝完 Laravel 後,需要將 Web 伺服器的 document/web 根目錄指向 Laravel 應用的 public 目錄,該目錄下的 index.php 檔案作為前端控制器(單一入口),所有 HTTP 請求都會通過該檔案進入應用。

配置檔案

Laravel 框架的所有配置檔案都存放在 config 目錄下,所有的配置項都有註釋,所以你可以輕鬆遍覽這些配置檔案以便熟悉所有配置項。

目錄許可權

安裝完 Laravel 後,需要配置一些目錄的讀寫許可權:storage 和 bootstrap/cache 目錄對 Web 伺服器指定的使用者而言應該是可寫的,否則 Laravel 應用將不能正常執行。如果你使用 Homestead 虛擬機器做為開發環境,這些許可權已經設定好了。

應用key

接下來要做的事情就是將應用的 key(APP_KEY)設定為一個隨機字串,如果你是通過 Composer 或者 Laravel 安裝器安裝的話,該 key 的值已經通過 php artisan key:generate 命令生成好了。

通常,該字串應該是 32 位長,通過 .env 檔案中的 APP_KEY 進行配置,如果你還沒有將 .env.example 檔案重新命名為 .env,現在立即這樣做。如果應用 key 沒有被設定,使用者 Session 和其它加密資料將會有安全隱患!

更多配置

Laravel 幾乎不再需要其它任何配置就可以正常使用了,不過,你最好再看看 config/app.php 檔案,其中包含了一些基於應用可能需要進行改變的配置,比如 timezone 和 locale(分別用於配置時區和本地化)。

你可能還想要配置 Laravel 的一些其它元件,比如快取、資料庫、Session 等,關於這些我們將會在後續文件一一探討。

Web 伺服器配置

關於虛擬主機的配置(對映域名到Laravel應用目錄)略過,如果瞭解細節可參考這篇教程,當然也可以留待下一篇講 Homestead 和 Valet 再去了解。本文只探討如何美化 URL 讓其更具有可讀性。

Apache

框架中自帶的 public/.htaccess 檔案支援隱藏 URL 中的 index.php,如過你的 Laravel 應用使用 Apache 作為伺服器,需要先確保 Apache 啟用了mod_rewrite 模組以支援 .htaccess 解析。

如果 Laravel 自帶的 .htaccess 檔案不起作用,試試將其中內容做如下替換:

Options +FollowSymLinks
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]

Nginx

如果你使用的是 Nginx,使用如下站點配置指令就可以支援 URL 美化:

location / {
    try_files $uri $uri/ /index.php?$query_string;
}

當然,使用 Homestead 或 Valet 的話,以上配置已經為你配置好,無需額外操作。

環境配置

基於應用執行的環境不同設定不同的配置值能夠給我們開發帶來極大的方便,比如,我們通常在本地和線上環境配置不同的快取驅動,這一功能在 Laravel 中很容易實現。

Laravel 使用 PHP 擴充套件庫 DotEnv 來實現這一功能,在新安裝的 Laravel 中,根目錄下有一個 .env.example 檔案,如果 Laravel 是通過 Composer 安裝的,那麼該檔案已經被重新命名為 .env,否則的話你要自己手動重新命名該檔案。

不要試圖將 .env 檔案提交到版本控制系統(如Git或Svn)中,一方面,開發環境和線上環境配置值不一樣,提交沒有意義,更重要的是,.env 包含了很多應用敏感資訊,如資料庫使用者名稱及密碼等,如果不慎將程式碼提交到 Github 公開倉庫,後果將不堪設想!

如果你是在一個團隊中進行開發,則需要將 .env.example 檔案隨你的應用程式碼一起提交到原始碼控制中:將一些配置值以佔位符的方式放置在 .env.example 檔案中,這樣其他開發者就會很清楚執行你的應用需要配置哪些環境變數。

還可以建立一個 .env.testing 檔案,該檔案會在執行 PHPUnit 測試或執行帶有 --env=testing 選項的 Artisan 命令時覆蓋從 .env 檔案讀取的值。

獲取環境變數配置值

應用每次接受請求時,.env 中列出的所有配置及其對應值都會被載入到 PHP 超全域性變數 $_ENV 中,然後你就可以在應用中通過輔助函式 env 來獲取這些配置值。實際上,如果你去檢視 Laravel 的配置檔案,就會發現很多地方已經在使用這個輔助函數了:

'debug' => env('APP_DEBUG', false),

傳遞到 env 函式的第二個引數是預設值,如果環境變數沒有被配置將會使用該預設值。

判斷當前應用環境

當前應用環境由 .env 檔案中的 APP_ENV 變數決定,你可以通過 App 門面上的 environment 方法來訪問其值:

$environment = App::environment();

你也可以向 environment 方法傳遞引數來判斷當前環境是否匹配給定值,如果需要的話你甚至可以傳遞多個值。如果當前環境與給定值匹配,該方法返回 true

if (App::environment('local')) {
    // The environment is local
}

if (App::environment('local', 'staging')) {
    // The environment is either local OR staging...
}

訪問配置值

你可以使用全域性輔助函式 config 在應用程式碼的任意位置訪問配置值,配置值以檔名+“.”+配置項的方式進行訪問,當配置項沒有被配置的時候返回預設值:

$value = config('app.timezone');

如果要在執行時設定配置值,傳遞陣列引數到 config 方法即可:

config(['app.timezone' => 'Asia/Shanghai']);

快取配置檔案

為了給應用加速,你可以使用 Artisan 命令 config:cache 將所有配置檔案的配置快取到單個檔案裡,這將會將所有配置選項合併到單個檔案從而被框架快速載入。

應用每次上線,都要執行一次 php artisan config:cache,但是在本地開發時,沒必要經常執行該命令,因為配置值經常會改變。

注:如果在部署過程中執行 config:cache 命令,需要確保只在配置檔案中呼叫了 env 方法。

維護模式

當你的應用處於維護模式時,所有對應用的請求都應該返回同一個自定義檢視。這一功能在對應用進行升級或者維護時,使得“關閉”站點變得輕而易舉。對維護模式的判斷程式碼位於應用預設的中介軟體棧中,如果應用處於維護模式,訪問應用時狀態碼為 503 的 MaintenanceModeException 將會被丟擲。

要開啟維護模式,關閉站點,只需執行 Artisan 命令 down 即可:

php artisan down

還可以提供 message 和 retry 選項給 down 命令。message 的值用於顯示或記錄自定義訊息,而 retry 的值用於設定 HTTP 請求頭的 Retry-After

php artisan down --message="Upgrading Database" --retry=60

要關閉維護模式,開啟站點,對應的 Artisan 命令是 up

php artisan up

注:你可以通過定義自己的模板來定製預設的維護模式模板,自定義模板檢視位於 resources/views/errors/503.blade.php

維護模式 & 佇列

當你的站點處於維護模式中時,所有的佇列任務都不會執行;當應用退出維護模式這些任務才會被繼續正常處理。

維護模式的替代方案

由於維護模式命令的執行需要幾秒時間,你可以考慮使用 Envoyer 實現 0 秒下線作為替代方案。