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

相关文章

Python使用FastAPI实现大文件分片上传与断点续传功能

《Python使用FastAPI实现大文件分片上传与断点续传功能》大文件直传常遇到超时、网络抖动失败、失败后只能重传的问题,分片上传+断点续传可以把大文件拆成若干小块逐个上传,并在中断后从已完成分片继... 目录一、接口设计二、服务端实现(FastAPI)2.1 运行环境2.2 目录结构建议2.3 serv

Spring Security简介、使用与最佳实践

《SpringSecurity简介、使用与最佳实践》SpringSecurity是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架,本文给大家介绍SpringSec... 目录一、如何理解 Spring Security?—— 核心思想二、如何在 Java 项目中使用?——

springboot中使用okhttp3的小结

《springboot中使用okhttp3的小结》OkHttp3是一个JavaHTTP客户端,可以处理各种请求类型,比如GET、POST、PUT等,并且支持高效的HTTP连接池、请求和响应缓存、以及异... 在 Spring Boot 项目中使用 OkHttp3 进行 HTTP 请求是一个高效且流行的方式。

Java使用Javassist动态生成HelloWorld类

《Java使用Javassist动态生成HelloWorld类》Javassist是一个非常强大的字节码操作和定义库,它允许开发者在运行时创建新的类或者修改现有的类,本文将简单介绍如何使用Javass... 目录1. Javassist简介2. 环境准备3. 动态生成HelloWorld类3.1 创建CtC

使用Python批量将.ncm格式的音频文件转换为.mp3格式的实战详解

《使用Python批量将.ncm格式的音频文件转换为.mp3格式的实战详解》本文详细介绍了如何使用Python通过ncmdump工具批量将.ncm音频转换为.mp3的步骤,包括安装、配置ffmpeg环... 目录1. 前言2. 安装 ncmdump3. 实现 .ncm 转 .mp34. 执行过程5. 执行结

Java使用jar命令配置服务器端口的完整指南

《Java使用jar命令配置服务器端口的完整指南》本文将详细介绍如何使用java-jar命令启动应用,并重点讲解如何配置服务器端口,同时提供一个实用的Web工具来简化这一过程,希望对大家有所帮助... 目录1. Java Jar文件简介1.1 什么是Jar文件1.2 创建可执行Jar文件2. 使用java

C#使用Spire.Doc for .NET实现HTML转Word的高效方案

《C#使用Spire.Docfor.NET实现HTML转Word的高效方案》在Web开发中,HTML内容的生成与处理是高频需求,然而,当用户需要将HTML页面或动态生成的HTML字符串转换为Wor... 目录引言一、html转Word的典型场景与挑战二、用 Spire.Doc 实现 HTML 转 Word1

Java中的抽象类与abstract 关键字使用详解

《Java中的抽象类与abstract关键字使用详解》:本文主要介绍Java中的抽象类与abstract关键字使用详解,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧... 目录一、抽象类的概念二、使用 abstract2.1 修饰类 => 抽象类2.2 修饰方法 => 抽象方法,没有

MyBatis ParameterHandler的具体使用

《MyBatisParameterHandler的具体使用》本文主要介绍了MyBatisParameterHandler的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参... 目录一、概述二、源码1 关键属性2.setParameters3.TypeHandler1.TypeHa

Spring 中的切面与事务结合使用完整示例

《Spring中的切面与事务结合使用完整示例》本文给大家介绍Spring中的切面与事务结合使用完整示例,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考... 目录 一、前置知识:Spring AOP 与 事务的关系 事务本质上就是一个“切面”二、核心组件三、完