lnmp - tp6.0的安装和简单使用

2024-09-05 15:36
文章标签 简单 安装 使用 lnmp tp6.0

本文主要是介绍lnmp - tp6.0的安装和简单使用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

概述

使用了很长时间的Mac M2芯片的电脑在之前使用虚拟机之前总有一些bug不是那么好用,周末之余重新安装了一下centos虚拟机,搭建了lnmp环境,打算自己挤时间,做一点应用,作为一次新的小小的尝试。

安装&更新

centos 虚拟机安装

去centos官网下载安装包,https://www.centos.org/download/ 选择 ARM64 (aarch64)这个版本不会影响lnmp的安装,安装之前我一直想的会不会因为版本太高而导致不好用,非常丝滑,不用担心。

在这里插入图片描述

在开发的过程中有个选项需要注意,左侧选择server,右侧选择所需要的插件和兼容程序,其中需要注意的是windows兼容程序、开发工具、unix兼容程序、桌面等等,根据自己的需要选择。

#开发环境:
php 7.4.33
mysql 5.7
nginx 1.26

tp6.0+ 项目的初始化

# 创建
composer create-project topthink/think 你的应用名称
# 更新
composer update topthink/framework

在启动的时候,会遇见一个小小的问题,去php.ini配置文件中去找disable_functions注释掉下面的三个函数proc_get_status、proc_open、passthru,php配置文件的路径可能不一样,可以使用命令 php -i | grep php.ini去搜索。

在这里插入图片描述

proc_get_status() 函数用于获取通过 proc_open() 函数打开的进程的信息。这个函数返回一个关联数组,其中包含了关于该进程的各种状态信息,如进程ID、是否还在运行、输入/输出流的状态等。这些信息对于监控和管理通过PHP执行的进程非常有用。

出于函数都是出于安全原因,以上函数在某些环境中可能被禁用。

#thinkphp6.0 启动命令
php think run -p 80

tp6.0+ 多应用模式

设计初衷,在开发的过程中有很多痛点,比如数据模型的不规范调用,返回数据格式的不统一,所以设计初衷使用4层设计、使用前后端分离采用Api Json数据交互的方式来进行交互和处理。

Controller 针对不同的客户端请求,web(PC)、admin(后台管理),暂时只有这两个客户端的需求,把所有的业务逻辑涉及到的统一封装在Service业务逻辑层,第三方基础库统一放在Library下。

tp6.0使用composer方式来安装多应用插件,安装多应用命令 composer require topthink/think-multi-app

模型、错误处理、中间件

对Tp6.0框架中模型、错误处理、中间件,先做一个简单的使用,有助于了解和帮助后面更好的开发。

模型

Mysql的引入最为方便和便捷、在app中选择一个目录,新建一个PHP文件,定义好命名空间,$pk是定义的主键key,$table是表名,Mysql的配置在根目录.env下设置,代码如下:

namespace app\common\model;use think\Model;
class Manage_Admin extends Model{protected $pk = 'admin_id';protected $table = 'manage_admin';public function getAdminDetailsById($admin_id): array{if(empty($admin_id)){return [];}return $this->where('admin_id',$admin_id)->find()->toArray();}
}
错误处理

多应用下的错误处理有一点不同,需要把对应的映射关系文件放置在自己的目录下,新建名为provider.php的文件,添加对应的映射关系,代码如下:

use app\admin\exception\Http;
return ['think\exception\Handle' => Http::class,
];

http文件代码,如下:

namespace app\admin\exception;use think\exception\Handle;
use think\Response;
use Throwable;class Http extends Handle {private int $statusCode = 500;public function render($request, Throwable $e): Response{if(method_exists($e, 'getStatusCode')){$httpStatusCode = $e->getStatusCode();}else{$httpStatusCode = $this->statusCode;}return show($httpStatusCode, $e->getMessage());}
}
中间件

中间件是一个非常常用的插件,对公共的请求做一些拦截,参数验证等等,先简单实现一下这里的配置和demo,同理,应用下先放置配置文件,代码如下:

return [app\admin\middleware\Check::class,
];

Check映射文件代码,如下:

namespace app\admin\middleware;
use think\Response;class Check {public function handle($request, \Closure $next){return $next($request);}/*** 中间件结束调度* @param Response $res* @return void*/public function end(Response $res){}
}

最后我的app目录的树是这样的,如下:

├── app
│   ├── admin
│   │   ├── controller
│   │   ├── exception
│   │   └── provider.php
│   ├── AppService.php
│   ├── BaseController.php
│   ├── common
│   │   ├── library
│   │   ├── model
│   │   └── service
│   ├── common.php
│   ├── event.php
│   ├── ExceptionHandle.php
│   ├── middleware.php
│   ├── provider.php
│   ├── Request.php
│   └── service.php

这篇关于lnmp - tp6.0的安装和简单使用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1139361

相关文章

Conda与Python venv虚拟环境的区别与使用方法详解

《Conda与Pythonvenv虚拟环境的区别与使用方法详解》随着Python社区的成长,虚拟环境的概念和技术也在不断发展,:本文主要介绍Conda与Pythonvenv虚拟环境的区别与使用... 目录前言一、Conda 与 python venv 的核心区别1. Conda 的特点2. Python v

Spring Boot中WebSocket常用使用方法详解

《SpringBoot中WebSocket常用使用方法详解》本文从WebSocket的基础概念出发,详细介绍了SpringBoot集成WebSocket的步骤,并重点讲解了常用的使用方法,包括简单消... 目录一、WebSocket基础概念1.1 什么是WebSocket1.2 WebSocket与HTTP

C#中Guid类使用小结

《C#中Guid类使用小结》本文主要介绍了C#中Guid类用于生成和操作128位的唯一标识符,用于数据库主键及分布式系统,支持通过NewGuid、Parse等方法生成,感兴趣的可以了解一下... 目录前言一、什么是 Guid二、生成 Guid1. 使用 Guid.NewGuid() 方法2. 从字符串创建

Python使用python-can实现合并BLF文件

《Python使用python-can实现合并BLF文件》python-can库是Python生态中专注于CAN总线通信与数据处理的强大工具,本文将使用python-can为BLF文件合并提供高效灵活... 目录一、python-can 库:CAN 数据处理的利器二、BLF 文件合并核心代码解析1. 基础合

Python使用OpenCV实现获取视频时长的小工具

《Python使用OpenCV实现获取视频时长的小工具》在处理视频数据时,获取视频的时长是一项常见且基础的需求,本文将详细介绍如何使用Python和OpenCV获取视频时长,并对每一行代码进行深入解析... 目录一、代码实现二、代码解析1. 导入 OpenCV 库2. 定义获取视频时长的函数3. 打开视频文

Spring IoC 容器的使用详解(最新整理)

《SpringIoC容器的使用详解(最新整理)》文章介绍了Spring框架中的应用分层思想与IoC容器原理,通过分层解耦业务逻辑、数据访问等模块,IoC容器利用@Component注解管理Bean... 目录1. 应用分层2. IoC 的介绍3. IoC 容器的使用3.1. bean 的存储3.2. 方法注

Python内置函数之classmethod函数使用详解

《Python内置函数之classmethod函数使用详解》:本文主要介绍Python内置函数之classmethod函数使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录1. 类方法定义与基本语法2. 类方法 vs 实例方法 vs 静态方法3. 核心特性与用法(1编程客

Linux中压缩、网络传输与系统监控工具的使用完整指南

《Linux中压缩、网络传输与系统监控工具的使用完整指南》在Linux系统管理中,压缩与传输工具是数据备份和远程协作的桥梁,而系统监控工具则是保障服务器稳定运行的眼睛,下面小编就来和大家详细介绍一下它... 目录引言一、压缩与解压:数据存储与传输的优化核心1. zip/unzip:通用压缩格式的便捷操作2.

使用Python实现可恢复式多线程下载器

《使用Python实现可恢复式多线程下载器》在数字时代,大文件下载已成为日常操作,本文将手把手教你用Python打造专业级下载器,实现断点续传,多线程加速,速度限制等功能,感兴趣的小伙伴可以了解下... 目录一、智能续传:从崩溃边缘抢救进度二、多线程加速:榨干网络带宽三、速度控制:做网络的好邻居四、终端交互

Python中注释使用方法举例详解

《Python中注释使用方法举例详解》在Python编程语言中注释是必不可少的一部分,它有助于提高代码的可读性和维护性,:本文主要介绍Python中注释使用方法的相关资料,需要的朋友可以参考下... 目录一、前言二、什么是注释?示例:三、单行注释语法:以 China编程# 开头,后面的内容为注释内容示例:示例:四