安裝
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)境中會一般會采用名為debug
或development
的環(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
文件在packages
下require
選項中會發(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"