Laravel Install

安裝

Laravel框架使用Composer管理項目依賴,因此安裝前需確保本機已經(jīng)安裝并配置好Composer。

安裝配置Composer

Composer的應(yīng)用文件為composer.phar,在Windows操作系統(tǒng)下可直接下載 https://getcomposer.org/Composer-Setup.exe 安裝包。若沒有在全局下安裝Composer,只有composer.phar文件,也可將composer.phar文件放到項目根目錄下后,使用php composer.phar來執(zhí)行Composer命令。若全局已經(jīng)安裝過Composer且已加入環(huán)境變量則可直接使用composer命令。

$ vim composer.phar
<?php
/*
 * This file is part of Composer.
 *
 * (c) Nils Adermann <naderman@naderman.de>
 *     Jordi Boggiano <j.boggiano@seld.be>
 *
 * For the full copyright and license information, please view
 * the license that is located at the bottom of this file.
 */

// Avoid APC causing random fatal errors per https://github.com/composer/composer/issues/264
if (extension_loaded('apc') && ini_get('apc.enable_cli') && ini_get('apc.cache_by_default')) {
    if (version_compare(phpversion('apc'), '3.0.12', '>=')) {
        ini_set('apc.cache_by_default', 0);
    } else {
        fwrite(STDERR, 'Warning: APC <= 3.0.12 may cause fatal errors when running composer commands.'.PHP_EOL);
        fwrite(STDERR, 'Update APC, or set apc.enable_cli or apc.cache_by_default to 0 in your php.ini.'.PHP_EOL);
    }
}

Phar::mapPhar('composer.phar');
define('COMPOSER_DEV_WARNING_TIME', 1492865599);
require 'phar://composer.phar/bin/composer';

__HALT_COMPILER(); ?>

默認Composer源地址為國外需翻墻訪問,可使用國內(nèi)提供的Composer源鏡像地址 https://packagist.phpcomposer.com,不過有時候也比較慢。推薦采用阿里提供的地址 https://mirrors.aliyun.com/composer/

替換默認Composer倉庫的源地址為鏡像地址

$ composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/

查看Composer全局配置列表中倉庫地址

$ composer config -gl
$ composer config --global --list

源碼包

Laravel源碼包托管在不同平臺上,常見的比如GitHub、Packgist。

項目安裝器

使用Composer全局安裝Laravel框架項目安裝器組件,即可直接使用laravel命令來創(chuàng)建項目。

$ composer search laravel/installer
laravel/installer Laravel application installer.
codemyviews/vanilla-installer Vanilla theme installer. Inspired by laravel/installer by Talor Otwel
$ composer global require laravel/installer
Warning from https://mirrors.aliyun.com/composer: You are using an outdated version of Composer. Composer 2.0 is now available and you should upgrade. See https://getcomposer.org/2

Composer需使用2.0版本,查看當前Composer版本。

$ composer -V
Composer version 1.8.5 2019-04-09 17:46:47

更新Composer版本為最新版

$ composer self-update
Updating to version 2.0.8 (stable channel).
   Downloading (100%)
Failed to decode response: zlib_decode(): data error
Retrying with degraded mode, check https://getcomposer.org/doc/articles/troubleshooting.md#degraded-mode for more info
Downloading (100%)

  [ErrorException]
  zlib_decode(): data error

修改Composer全局配置secure-http禁用HTTPS加密連接

$ composer config -g secure-http false

關(guān)閉網(wǎng)絡(luò)連接中IPv6選項

$ composer -V
Composer version 2.0.8 2020-12-03 17:20:38

重新安裝

$ composer global require laravel/installer
  [InvalidArgumentException]
  Could not find a matching version of package lavarel/installer. Check the package spelling, your version constraint and that the package is available in a stability which matches your m
  inimum-stability (stable).

關(guān)閉當前命令行窗口后重新執(zhí)行

$ composer global require laravel/installer
Changed current directory to C:/Users/jc/AppData/Roaming/Composer
https://mirrors.aliyun.com/composer could not be fully loaded (curl error 61 while downloading https://mirrors.aliyun.com/composer/p2/laravel/installer.json: Error while processing content unencoding: Unknown failure within decompression software.), package information was loaded from the local cache and may be out of date

 [Composer\Downloader\TransportException]
  curl error 61 while downloading https://mirrors.aliyun.com/composer/p2/laravel/installer.json: Error while processing content unencoding: Unknown failure within decompression software.

阿里云鏡像中l(wèi)aravel/installer不能安裝成功,更換為國內(nèi)源再次嘗試。

$ composer config -g repo.packagist composer https://packagist.phpcomposer.com 
$ composer config -gl | grep packagist
$ composer global require laravel/installer
  [InvalidArgumentException]
  Could not find a matching version of package lavarel/installer. Check the package spelling, your version constraint and that the package is available in a stability which matches your m
  inimum-stability (stable).

關(guān)閉當前命令行窗口后,重新開啟新的命令行窗口再次執(zhí)行。

$ composer global require laravel/installer

依然沒有安裝成功,最后將資源包源地址修改會默認的 https://packagist.org 才會成功。

$ composer config -g repo.packagist composer https://packagist.org

創(chuàng)建項目

創(chuàng)建Laravel項目通常會采用兩種方式,一種方式是使用專門的Laravel安裝器(laravel/installer),另一種則是直接使用Composer的create-project命令來創(chuàng)建。

由于已經(jīng)安裝過Composer,可直接使用composer create-project命令創(chuàng)建Laravel項目。

創(chuàng)建名為nirvana的項目

$ composer create-project laravel/laravel nirvana
$ php composer.phar create-project laravel/laravel nirvana

使用Composer創(chuàng)建Laravel項目時可指定當前Laravel版本

$ composer create-project laravel/laravel nirvana "6.*" --prefer-dist
...
Writing lock file
Generating optimized autoload files
> Illuminate\Foundation\ComposerScripts::postAutoloadDump
> @php artisan package:discover --ansi
Discovered Package: facade/ignition
Discovered Package: fideloper/proxy
Discovered Package: laravel/tinker
Discovered Package: nesbot/carbon
Discovered Package: nunomaduro/collision
Package manifest generated successfully.
> @php artisan key:generate --ansi
Application key set successfully.

注意:Composer的--prefer-dist參數(shù)是為了強制下載.zip壓縮包并緩存到本地,而非克隆源代碼。因此沒有保留.git文件夾,也沒有版本信息。緩存到本地在下次安裝時會從本地加載以提高速度。簡單來說,是當有可用包時選擇從dist安裝。

命令執(zhí)行完畢后會在當前目錄下生成名為nirvana的文件夾即為目標項目

可使用php artisan命令查看當前項目所采用的Laravel框架的版本

$ cd nirvana
$ php artisan -V
Laravel Framework 6.18.43

也可以通過項目下Composer配置文件composer.json中的require選項查看Laravel框架的版本。

$ cd nirvana
$ vim composer.json
"laravel/framework": "^6.18.35"

需要注意的是當前Laravel6框架至少需要PHP7.2版本的支持,另外Laravel6也是一個LTS(Long-Time)最長時間支持和維護,因此會提供為期2年的錯誤修復(fù)和3年的安全修復(fù)。

運行測試

本地開發(fā)服務(wù)器

本地安裝的PHP7.2自帶了本地開發(fā)服務(wù)器,因此可直接使用PHP命令來開啟文本服務(wù)器,默認Laravel框架采用8000端口,因此需確保本機8000端口沒有被占用。

默認Laravel框架的公共路徑為項目下的public文件夾下,項目入口文件為public/index.phpindex.php會作為進入應(yīng)用的HTTP請求的前端控制器。

需要注意的是PHP本地開發(fā)服務(wù)器只用于本地開發(fā)測試,生產(chǎn)環(huán)境一般會采用專門的Web服務(wù)器,比如Nginx來配合使用。

$ cd nirvana
$ php -S localhost:8000 -t public/

也可以采用Laravel框架自帶的命令php artisan來開啟本地開發(fā)服務(wù)器

$ cd nirvana
$ php artisan serve

此時在瀏覽器中鍵入 http://127.0.0.1:8000/ 可訪問本地Laravel項目

遠程生產(chǎn)服務(wù)器

生產(chǎn)環(huán)境以Nginx作為Web服務(wù)器為例,需為Laravel項目提供專門的虛擬主機配置。

$ vim /usr/local/nginx/conf/vhost/nirvana.conf
server {
  # 配置域名
  server_name www.nirvana.com;
  # 配置項目根目錄
  root /home/wwwroot/nirvana/public;
  # 將所有請求引導(dǎo)至public/index.php前端控制器
  location / {
    # try_files $uri $uri/ /index.php$is_args&args;
    try_files $uri $uri/ /index.php?$query_string;
  }
  # 配置PHP-FPM
  location ~ \.php $ {
    try_files $uri = 404;
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME;
    $ducment_root$fastcgi_script_name;
    include fastcgi_params;
  }
}

檢測Nginx配置并重新加載配置

$ nginx -t
$ nginx -s reload

讀寫權(quán)限

Laravel項目中根目錄下storage文件夾用于存放編譯后的Blade模板、Session會話文件、緩存文件及其它框架生成的文件,比如日志等。項目運行時需不斷寫入數(shù)據(jù)到該目錄下的文件中,因此該目錄必須設(shè)置具有讀寫權(quán)限。

$ chmod -R nirnava/storage 0755

Laravel項目中根目錄下的bootstrap文件夾中包含了引導(dǎo)框架的app.php文件和一個名為cache的緩存目錄,cache緩存目錄下存放著框架生成的用于提升性能的文件,隨著項目開發(fā)會不斷修改,因此此目錄也需要具有讀寫權(quán)限。

$ chmod -R nirnava/bootstrap 0755

應(yīng)用密鑰

項目創(chuàng)建完畢后需為配置應(yīng)用密鑰,應(yīng)用密鑰默認為32位的隨機字符串,用于會話即其它加密場景,因此應(yīng)用密鑰對應(yīng)當前項目來說是相當于一個唯一的加密SALT。

若通過Composer或Laravel安裝器創(chuàng)建的項目,項目創(chuàng)建成功后,應(yīng)用密鑰已經(jīng)通過php artisan key:generate --ansi命令為你設(shè)置好。此時可以直接查看項目根目錄下的.env環(huán)境配置文件中的APP_KEY選項即可發(fā)現(xiàn)。若APP_KEY為空或報錯,可再此使用應(yīng)用密鑰生成命令,生成并配置。

$ cd nirvana
$ php artisan key:generate --ansi
$ vim .env
APP_KEY=base64:7nbIzLk4jgFu+fJwy97WifCg/yrwcuYB2wBkOpwkwS0=

環(huán)境配置

對于應(yīng)用程序而言,不同的運行環(huán)境會對應(yīng)著不同的配置文件,比如開發(fā)環(huán)境中會一般會采用名為debugdevelopment的環(huán)境配置,產(chǎn)生環(huán)境一般會采用名為product的環(huán)境配置。對于不同的環(huán)境只需要切換環(huán)境配置文件即可,修改項目中所有的配置。當然,也可以創(chuàng)建名為.env.testing的測試環(huán)境的配置,當運行PHPUnit單元測試時,或以php artisan --env=testing為選項執(zhí)行Artisan命令時,會自動覆蓋默認的.env環(huán)境配置。

$ cp .env.example .env.testing

另外需要注意的是.env環(huán)境配置中的所有變量都可以被外部環(huán)境變量,比如服務(wù)器級或系統(tǒng)級的環(huán)境變量所覆蓋。

Laravel框架采用Vance Lucas的DotEnv庫來實現(xiàn)PHP環(huán)境配置,打開項目根目錄下的composer.lock文件在packagesrequire選項中會發(fā)現(xiàn)。

$ vim composer.lock
"vlucas/phpdotenv": "^3.3"

環(huán)境變量配置位于項目根目錄下.env文件內(nèi),作為全局環(huán)境配置文件。通過.env環(huán)境變量配置文件加載的環(huán)境變量可通過getenv()$_ENV$_SERVER自動調(diào)用。

本地配置忽略提交

因此創(chuàng)建Laravel框架項目后會自動在項目根目錄下生成兩個文件.env.env.example文件,.env為項目當前環(huán)境下的配置文件,若不存在則可以拷貝.env.example并命名為.env

$ cp .env.example .env

由于.env對應(yīng)當前環(huán)境的配置文件,若使用Git源碼倉庫管理,則無需提交至遠程,只需在本機本地保留即可。另外,由于每個開發(fā)人員需要的環(huán)境配置不同,若提交至遠程倉庫,每次拉取后都會覆蓋本地。其次,若將含有生產(chǎn)環(huán)境的配置提交到遠程,其中的關(guān)于服務(wù)器的敏感配置相當于直接暴露出來,直接會造成安全隱患。因此需將.env加入到.gitigore文件中,以忽略提交。

$ cd nirvana
$ vim .gitignore
.env

另外若本地使用IDE開發(fā)則默認會在項目根目錄下會生成IDE配置文件夾的隱藏文件,比如采用PHPStorm作為開發(fā)工具時,會在項目根目錄下生成名為.idea的隱藏目錄,對于這種也應(yīng)該忽略提交。

$ vim .gitignore
/.idea

應(yīng)用配置

應(yīng)用配置位于config/app.php

$ vim config.php

修改默認UTC時區(qū)為中文時區(qū)

//"timezone"=>"UTC",
"timezone"=>"PRC"

修改默認本地化英文en為中文zh

//"locale"=>"en",
"locale"=>"zh"
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,825評論 6 546
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,814評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,980評論 0 384
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 64,064評論 1 319
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,779評論 6 414
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 56,109評論 1 330
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,099評論 3 450
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 43,287評論 0 291
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,799評論 1 338
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 41,515評論 3 361
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,750評論 1 375
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,221評論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,933評論 3 351
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,327評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,667評論 1 296
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,492評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,703評論 2 380

推薦閱讀更多精彩內(nèi)容