前有 ChatGPT 的横空出世,现有 DeepSeek 的后生可畏。
在人工智能(AI)飞速发展的今天,大语言模型(LLMs)百家争鸣、群英荟萃,AI
已经成为人们茶余饭后必备的话题,更是人们工作、学习中必备的工具。
前有 ChatGPT 的横空出世,现有 DeepSeek 的后生可畏。
在人工智能(AI)飞速发展的今天,大语言模型(LLMs)百家争鸣、群英荟萃,AI
已经成为人们茶余饭后必备的话题,更是人们工作、学习中必备的工具。
无论你是什么方向的开发者,在日常工作中必不可少的要和 Linux 系统打交道。在打交道
之前,就必须先远程连接上去,应该很少人人会使用VNC
远程连接吧,更何况很少作为开发的Linux
系统不会安装图形库界面吧,那就必须得使用命令行SSH
远程连接了。
要安装SSH
,肯定的直接在机器上操作,物理机你就接个键盘、显示器,虚拟机直接用界面连接操作。
首先需要安装openssh-server
,如果已经安装可跳过下面的命令。
之前做Laravel项目,一直使用的是Laravel Mix
打包静态资源。但是随着Vite
的横空出世,Laravel已经默认使用Vite
来打包静态资源了。
在此之前,你需要创建一个Laravel项目,并准备PHP
和Node.js
环境。
Laravel
的Vite
插件是laravel-vite-plugin
。项目默认的package.json
中的依赖项已经包含了,只需要安装一下即可。
Laravel
是一个优雅的 PHP WEB框架,在早期的版本中,一般是采用Mix
搭配webpack
来构建前端资源。
Vue
是一个渐进式 JavaScript 框架,Vite
是下一代前端开发和构建工具。那么这个组合起来,堪称绝美
。
下面是我所使用的版本:
这里直接使用composer
创建Laravel
项目。
在开发过程中,难免需要对 sql 语句的问题排查,我们可以把程序执行中运行的 sql 语句记录到日志中。
甚至,还可以记录 sql 语句的执行时间,对执行时间过长的 sql 的语句增加预警等。
Laravel
框架提供的 sql 监听事件,只需要在 Provider 的 boot 方法里增加监听回调即可。
目前,CentOS 7.9 已经算是很古老的系统了,但仍然还在很多公司中使用。安装 PHP 有编译安装,也可以使用 Yum 安装,前者较为复杂,耗时耗力,后者就很简单而且很快。但是官方的 Yum 中自带的 PHP 版本也只有很古老的 PHP 5.4 了,要想安装比较新的 PHP 8 就需要使用第三方提供的 Yum 源了。
Remi's RPM repository
(简称 Remi 仓库)是由法国开发者 Remi Collet 维护的一个针对 Red Hat Enterprise Linux(RHEL)及其衍生发行版(如 CentOS、Oracle Linux 等)的第三方软件仓库。
Casbin 是一个高效强大的开源访问控制框架,它支持 ACL、RBAC、ABAC 等多种模型。
Model
,即模型
,是 Casbin 的一个重要组成部分,模型的定义简单而复杂,且充满学问。Model
的作用,是对权限模型的定义,例如:acl
、rbac
、abac
等权限模型。
模型配置主要有五个部分:[request_definition],[policy_definition],[role_definition],[policy_effect] 和 [matchers],分别表示请求定义、策略定义、角色定义、策略效果定义、匹配器,其中 [role_definition] 角色定义是用于基于角色的模型(RBAC),支持用 #
开头表示注释。
优先级模型,所谓优先级,是指按一定的顺序加载策略。
优先级高的策略先加载,先加载的策略具有较高的优先级。
PHP-Casbin 目前支持三种模式:隐式优先顺序加载策略、显示优先顺序加载策略、基于角色和用户的层级关系加载策略。
分布式服务,是将多个具有不同或相同功能的服务分散在不同的服务器上,对外提供服务。
那么在分布式服务中,使用 PHP-Casbin 作为权限控制时,不同服务器上的服务的策略要保证是同步的。这里我们主要探讨常驻内存的 PHP 服务,在常驻内存的服务中,PHP-Casbin 一般是单例模式,所有的策略都会加载到内存,性能出色。
PHP-FPM 下每次都重新初始化
Enforcer
并重新加载策略,不需要做额外的策略同步。
多租户
(multi-tenancy)是一种软件架构技术,是实现在多租户
的环境下共用
相同的系统或程序组件,并且保证各用户间的数据隔离
,也可称作域租户
。
PHP-Casbin 不仅提供了全局的RBAC
的权限模型,而且还支持特定域的权限模型。特定租户/域的角色意味着当用户在不同的租户/域中时,用户可以拥有不同的角色,亦拥有不同的权限策略。在大型项目中,特别是在像SaaS
PaaS
这种云服务中,不同的租户需要拥有独立的权限控制,这就非常有用。
这里我以一个多商户
的电商平台为例,电商平台的商户就是租户
,每个商户有自己的管理人员,可以分配不同的角色,定义自己的权限。这些商户间的数据在逻辑上是完全隔离的,但他们共享这个电商平台的其他资源。
多商户电商平台
商户1,用户1,属于管理员角色
商品1
商户2,用户2,属于管理员角色
商品2
PHP-Casbin 是一个非常流行的权限控制框架,支持ACL
RBAC
ABAC
等权限控制模型。
它使用 Matcher
中配置的表达式来做权限决策,不仅提供了非常多的内置函数,而且还可以在Matcher
中指定自定义函数。
快速安装,到底有多快?
这里以目前最新的PHP8.2为例,我的电脑尝试了一些10分钟之内搞定,如果网络好可能更快。
PPA个人软件包存档(Personal Package Archive)是一项服务,允许用户上传使用Launchpad构建和发布的Ubuntu源软件包作为apt信息库。
为什么要添加PPA存储库,因为Ubuntu系统带的镜像库中PHP的版本太旧,没有最新的PHP版本。
composer.json
记录了项目中依赖库的关系、版本信息、其他数据等。
{
"name": "phpoffice/phpspreadsheet",
"description": "Read, Create and Write Spreadsheet documents in PHP",
"keywords": ["PHP", "OpenXML", "Excel", "xlsx", "xls"],
"type": "library",
"license": "MIT",
"authors": [
{
"name": "Maarten Balliauw",
"homepage": "https://blog.maartenballiauw.be"
}
]
}
name
, 包名,包括作者名称和项目名称,以/
分割;包名称可以包含任何字符,包括空格,并且不区分大小写。为了简化安装,建议定义一个不包含非字母数字字符或空格的短名称;
工欲善其事,必先利其器;器欲尽其能,必先得其法。
作为 PHP 工匠,Composer
便是 PHP 工匠们的一大利器之一,下面就介绍一下如何得其法
,进而尽其能
。
专业企业官网建设,塑造企业形象,传递企业价值
系统软件开发,用心思考,用心设计,用心体验
打破技术瓶颈,让不堪重负的项目起死回生
构建全渠道一体化运营能力,实现全链路数字化
文案撰写、营销策划,专注品牌全案
一站式解决企业互联网营销痛点和难题
以技术的力量,改变互联网
联系我们