共计 5967 个字符,预计需要花费 15 分钟才能阅读完成。
引言
php
Largon 部署 Laravel 非常简单,只有对于 PHP 的一些组件进行相干理解即可。
Largon 的 bin 组件介绍
- Apache:老牌 Web 服务器
- Cmder:命令行工具(Windows 下的终端模拟器)
- Composer:PHP 包管理器
- Git:分布式版本控制软件
- HeidiSQL:收费的数据库管理工具(反对 MySQL、MSSQL、Postgres)
- Laragon:治理开发环境提供的工具 / 服务的平台
- Memcached:老牌缓存零碎
- MySQL:最风行的开源数据库系统
- Nginx:高性能 Web 服务器
- Ngrok:平安的内网穿透利器(外网拜访内网站点)
- Node.js:可能在服务器端运行 JavaScript 的凋谢源代码、跨平台 JavaScript 运行环境
- Notepad++:反对各种编程语言的文本编辑器
- PHP:蕴含最新稳固版本的 PHP
- PuTTY:一个收费玲珑的 SSH 客户端
- Redis:能够长久化的键值对存储系统(可用于实现缓存、NoSQL、队列等)
- Sendmail:邮件发送代理软件
- Telnet
- WinSCP:收费的 SFTP&FTP 客户端
- Yarn:NPM 包管理器
largon 部署 Laravel 的一些长处
- 丑化 URL:应用
app.test
代替localhost/app
- 可移植:能够任意挪动 Laragon 目录(不同磁盘、不同电脑、或者云服务)
- 与零碎隔离:Laragon 提供了一个与操作系统隔离的环境,从而放弃了零碎的洁净
- 繁难易用:Laragon 会主动为你实现简单的底层配置,你能够轻松地在不同版本的 PHP、Python、Java、MySQL、Nginx、MongoDB 等软件间切换
- 古代 & 功能强大:基于现代化的软件架构设计,从而实用于构建现代化的 Web 利用,很多日常琐碎都能够一键帮你搞定。
理解 Largon
Largon 在过来的一篇英文博客介绍过,这里不再独自介绍 Largon。
[[How to develop locally a Laravel app using Laragon]](https://segmentfault.com/a/11…)
装置 Largon
Largon 的最大毛病是 只能反对 Windows 用户应用,咱们只须要到官网下载 exe 安装包,一路下一步就能够了。
官网地址:https://laragon.org/download/
拜访数据库
默认数据库是 Laragon,用户名是 root,明码是 空字符串,点击「关上」按钮,就能够拜访这个默认的数据库:
进入到数据库连贯界面:
配置实现即可。
Largon 装置之后就能够立刻初始化 Laravel 我的项目。
疾速构建 Laravel 我的项目
Windows 零碎在界面的右下角右击图标,而后依据上面的提醒主动构建我的项目即可。
构建我的项目之后能够应用:http://laravel.test。
当然如果不喜爱 Largon 本人擅自动了配置,应用默认的形式能够比方 http://localhost/laravel/public/ 拜访能够间接看到相干的资源链接。
简略理解 Laravel 框架入口流程
集体对于 PHP 根本是无所不通,这里翻阅到一篇社区的文档,这篇文章介绍了拜访 Public 下的 index.php
加载过程,也就是框架是如何进行初始化和疏导的。
Lararel 框架执行流程详解(1)入口文件
大抵的导入过程如下:
- 外表入口为
public/index.php
,外部代码引入了bootstrap
目录下的app.php
。 - 通过外围的 kernel 进行疏导初始化。
$app->make(Kernel::class)
是外围的启动办法。- 内核 Kernel 的次要工作:疏导、解决申请、生命周期流动、获取实例。
- Laravel 实现初始化工作。
首先是进入到 app.php
文件中:
$app = require_once __DIR__.'/../bootstrap/app.php';
$kernel = $app->make(Kernel::class);
require_once
意思是如果对应的文件不存在会报错,require_once
语句和**require**
语句完全相同,惟一区别是 PHP 会查看该文件是否曾经被蕴含过,如果是则不会再次蕴含。
接着咱们能够看到 Laravel 的 Kernel 内核类,咱们查看它的类定义:
interface Kernel
{
/**
* Bootstrap the application for HTTP requests.
* 为 HTTP 申请提供应用程序。* @return void
*/
public function bootstrap();
/**
* Handle an incoming HTTP request.
* 解决一个 http 申请
* @param \Symfony\Component\HttpFoundation\Request $request
* @return \Symfony\Component\HttpFoundation\Response
*/
public function handle($request);
/**
* Perform any final actions for the request lifecycle.
* 执行申请生命周期的任何最终口头。* @param \Symfony\Component\HttpFoundation\Request $request
* @param \Symfony\Component\HttpFoundation\Response $response
* @return void
*/
public function terminate($request, $response);
/**
* Get the Laravel application instance.
* 获取实例
* @return \Illuminate\Contracts\Foundation\Application
*/
public function getApplication();}
“ 内核“类 干了四个事件:疏导、解决申请、生命周期流动、获取实例 这几个要害行为。Kernel 类是在 Illuminate\Contracts\Http\Kernel
的包中,咱们能够通过 var_dump
或者上面的形式打印出实例化之后的外部对象属性,当然也能够阅读文章开端一些不应用 IDE 或者插件优雅 DEBUG 办法(请看开端 ” 扩大:PHP 的 Debug 技巧局部 ”)。
提醒:集体构建的 laravel 项目名称就叫做 laravel,所以 Largon 配置为 laravel.test。然而因为集体刚开始接触 Laravel,不太分明在哪里做了手脚
在打印后果中咱们能够列举出上面一些比拟重要的属性:
- middleware
- middlewareGroups
- routeMiddleware
- app
- router
- bootstrappers
- middlewarePriority
重点看 app 属性,app 属性实际上是一个 Illuminate\Foundation\Application
的实例,这个实例蕴含了十分多的属性值,筛选其中次要的内容:
- loadedProviders
- bindings
- instances
- aliases
实现属性和初始化工作中,框架初始化代码会持续调用 kernel 类的 handle 办法,传入一个 request 申请,request 申请继承了 SymfonyRequest,并调用了一个 capture 办法,之后返回的值返回给 response 变量,因为外部比拟逻辑简单,整个流程根本到此为止。
这个过程比拟像是 Tomcat 的申请解决流程,或者说大部分的 Web 流程大体上都是干这么几件事件,当然这些框架不是这么几句话能够讲清楚的,kernel
类做了一系列的验证,散发,解决,包含表单验证,中间件,日志记录,调用控制器,查问数据等等 ….
好了这里点到为止,如果想要更深刻了解,能够从这里 vendor\laravel\framework\src\Illuminate\Foundation\Http\Kernel.php
作为入口持续扩大。
常见问题
quick.app 疾速创立我的项目失败
比较简单然而容易疏忽的问题,Largon 疾速构建我的项目实际上用的是 composer,如果本地的 composer --version
找不到对应配置就会存在报错的状况。
构建实现之后,如果看到上面的内容,阐明正确的下载并且部署我的项目:
***** NOTE: Now, you can use pretty url for your awesome project :) *****
--------------------------------------------------
(Laragon) Project path: E:/adongstack/company/php/laragon/www/laravel
(Laragon) Pretty url: http://laravel.test
这里还要 Largon 提供更好的 URL 拜访成果:http://laravel.test。这些都是自带的规定。
Could not find package laravel-laravel with stability stable
集体在独自应用 Composer 部署的时候遇到了上面的报错状况:
Creating a "laravel/laravel" project at "./test"
In CreateProjectCommand.php line 424:
Could not find package laravel/laravel with stability stable.
create-project [-s|--stability STABILITY] [--prefer-source] [--prefer-dist] [--prefer-install PREFER-INSTALL] [--repository REPOSITORY] [--repository-url REPOSITORY-URL] [--add-repository] [--dev] [--no-dev] [--no-custom-installers] [--no-scripts] [--no-progress] [--no-secure-http] [--keep-vcs] [--remove-vcs] [--no-install] [--no-audit] [--audit-format AUDIT-FORMAT] [--ignore-platform-req IGNORE-PLATFORM-REQ] [--ignore-platform-reqs] [--ask] [--] [<package> [<directory> [<version>]]]
StackFlow:Could not find package laravel-laravel with stability stable 其中给出的提醒为须要应用上面的命令:
composer create-project --prefer-dist laravel/laravel test
这里提到了It’s not laravel-laravel, it’s laravel/laravel.,须要留神我的项目的名字不要写错,最平安的形式是复制项目名称。
然而集体在这样解决之后仍然报错,之后找到了这篇帖子尝试修复:
https://blog.csdn.net/weixin_42014858/article/details/113312698
集体通过排查之后发现问题出在 Composer镜像仓库问题,国内的镜像目前广泛是存在问题的,所以咱们须要把镜像切换回国外(PHP 在国内当初的确一潭死水)。
之后问题迎刃而解:
composer config -g repo.packagist composer https://packagist.org
而后持续应用这个命令:
composer create-project --prefer-dist laravel/laravel test
扩大:Php 的 Debug 技巧
第一种是罕用的 PHP 调试办法:var_dump()
,然而默认间接调用的形式可读性较差,集体对于 PHP 不相熟,于是果决找谷大神搜了一波 php pretty var_dump
找到上面这篇实用的文章。[
这篇文章来自弱小的 StackFlow:
[https://stackoverflow.com/que…
](https://stackoverflow.com/que…)
第一种办法适宜喜爱 复制 / 粘贴 代码的:
echo '<pre>' . var_export($data, true) . '</pre>';
第二种办法能够给局部内容实现高亮:
highlight_string("<?php\n\$data =\n" . var_export($data, true) . ";\n?>");
当然还有其他人给出了更简洁的写法。成果是差不多的:
var_dump(highlight_string("<?\n". var_export($data, true)));
第三种办法适宜应用原汁原味的 var_dump
的开发人员,能够利用 <pre>
标签自带的 print_r()
办法优化:
echo '<pre>';
var_dump($data);
echo '</pre>';
Note that
echo
,var_export
, andhighlight_string
are all php functions and need to be inside a<?php
?>
block.
留神要卸载<?php ... ?>
这样的代码块内才能够失效。
顺带放一手老外的吐槽:
Damn! 15 years I've been working with PHP and I'm only seeing this now???
如果读者对此感兴趣,上面是能够间接复制粘贴到 public\index.php
进行调试查看 Kernel 外部相熟的办法:
// 第一种办法适宜喜爱复制 / 粘贴代码的
// echo '<pre>' . var_export($kernel, true) . '</pre>';
// 第二种办法:内容高亮
//highlight_string("<?php\n\$data =\n" . var_export($kernel, true) . ";\n?>");
// 第三种办法:// echo '<pre>';
// var_dump($kernel);
// echo '</pre>';
总结
Largon 应用非常简略,Laravel 的我的项目在 Largon 中部署也更为简略。