Laravel Install

安裝

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

安裝配置Composer

Composer的應用文件為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年的錯誤修復和3年的安全修復水评。

運行測試

本地開發(fā)服務器

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

默認Laravel框架的公共路徑為項目下的public文件夾下塘偎,項目入口文件為public/index.php疗涉,index.php會作為進入應用的HTTP請求的前端控制器。

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

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

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

$ cd nirvana
$ php artisan serve

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

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

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

$ vim /usr/local/nginx/conf/vhost/nirvana.conf
server {
  # 配置域名
  server_name www.nirvana.com;
  # 配置項目根目錄
  root /home/wwwroot/nirvana/public;
  # 將所有請求引導至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文件夾中包含了引導框架的app.php文件和一個名為cache的緩存目錄驮肉,cache緩存目錄下存放著框架生成的用于提升性能的文件,隨著項目開發(fā)會不斷修改已骇,因此此目錄也需要具有讀寫權(quán)限。

$ chmod -R nirnava/bootstrap 0755

應用密鑰

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

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

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

環(huán)境配置

對于應用程序而言,不同的運行環(huán)境會對應著不同的配置文件仰禽,比如開發(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)境變量奸忽,比如服務器級或系統(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對應當前環(huán)境的配置文件翘盖,若使用Git源碼倉庫管理桂塞,則無需提交至遠程,只需在本機本地保留即可馍驯。另外阁危,由于每個開發(fā)人員需要的環(huán)境配置不同,若提交至遠程倉庫汰瘫,每次拉取后都會覆蓋本地狂打。其次,若將含有生產(chǎn)環(huán)境的配置提交到遠程混弥,其中的關(guān)于服務器的敏感配置相當于直接暴露出來趴乡,直接會造成安全隱患。因此需將.env加入到.gitigore文件中蝗拿,以忽略提交晾捏。

$ cd nirvana
$ vim .gitignore
.env

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

$ vim .gitignore
/.idea

應用配置

應用配置位于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)系作者
  • 序言:七十年代末仓手,一起剝皮案震驚了整個濱河市裙品,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌俗或,老刑警劉巖市怎,帶你破解...
    沈念sama閱讀 221,695評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異辛慰,居然都是意外死亡区匠,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,569評論 3 399
  • 文/潘曉璐 我一進店門帅腌,熙熙樓的掌柜王于貴愁眉苦臉地迎上來驰弄,“玉大人,你說我怎么就攤上這事速客∑莞荩” “怎么了?”我有些...
    開封第一講書人閱讀 168,130評論 0 360
  • 文/不壞的土叔 我叫張陵溺职,是天一觀的道長岔擂。 經(jīng)常有香客問我位喂,道長,這世上最難降的妖魔是什么乱灵? 我笑而不...
    開封第一講書人閱讀 59,648評論 1 297
  • 正文 為了忘掉前任塑崖,我火速辦了婚禮,結(jié)果婚禮上痛倚,老公的妹妹穿的比我還像新娘规婆。我一直安慰自己,他們只是感情好蝉稳,可當我...
    茶點故事閱讀 68,655評論 6 397
  • 文/花漫 我一把揭開白布抒蚜。 她就那樣靜靜地躺著,像睡著了一般耘戚。 火紅的嫁衣襯著肌膚如雪嗡髓。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,268評論 1 309
  • 那天毕莱,我揣著相機與錄音,去河邊找鬼颅夺。 笑死朋截,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的吧黄。 我是一名探鬼主播部服,決...
    沈念sama閱讀 40,835評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼拗慨!你這毒婦竟也來了廓八?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,740評論 0 276
  • 序言:老撾萬榮一對情侶失蹤赵抢,失蹤者是張志新(化名)和其女友劉穎剧蹂,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體烦却,經(jīng)...
    沈念sama閱讀 46,286評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡宠叼,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,375評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了其爵。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片冒冬。...
    茶點故事閱讀 40,505評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖摩渺,靈堂內(nèi)的尸體忽然破棺而出简烤,到底是詐尸還是另有隱情,我是刑警寧澤摇幻,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布横侦,位于F島的核電站挥萌,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏丈咐。R本人自食惡果不足惜瑞眼,卻給世界環(huán)境...
    茶點故事閱讀 41,873評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望棵逊。 院中可真熱鬧伤疙,春花似錦、人聲如沸辆影。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,357評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蛙讥。三九已至锯蛀,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間次慢,已是汗流浹背旁涤。 一陣腳步聲響...
    開封第一講書人閱讀 33,466評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留迫像,地道東北人劈愚。 一個月前我還...
    沈念sama閱讀 48,921評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像闻妓,于是被迫代替她去往敵國和親菌羽。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,515評論 2 359

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