关于laravel:PHPLargon-快速部署-Laravel-项目

44次阅读

共计 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)入口文件

大抵的导入过程如下:

  1. 外表入口为public/index.php,外部代码引入了 bootstrap 目录下的 app.php
  2. 通过外围的 kernel 进行疏导初始化。
  3. $app->make(Kernel::class)是外围的启动办法。
  4. 内核 Kernel 的次要工作:疏导、解决申请、生命周期流动、获取实例。
  5. 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 echovar_export, and highlight_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 中部署也更为简略。

正文完
 0