一文搞懂 PHP 运行环境

科技   2024-05-09 09:06   山西  

成长平台 web 安全学习的第一关是关于搭建 PHP 的运行环境,这个任务的目标是为了让学员理解 PHP 的运行环境中各个组件之间的关系,通过实际的操作来理解,不允许使用一键化工具,比如 phpstudy 等平台,因为在搭建的过程中会遇到各种各样的问题,在一步一步解决问题的过程中,加深对技术背后原理的理解,从而提升学员基础能力。

另一个部分的要求就是针对该服务器进行加固,也就是针对 web 服务、操作系统、数据库服务等安全加固,让学员了解基础服务存在哪些安全隐患,如何排除,也是一种锻炼的途径,目前已经有近 400 人完成报告,还有很多满分报告值得学习:

在完成任务之前,我相信,大部分人都是在网上搜索相关教程来完成搭建,但是网络上的教程所使用的系统环境和版本跟学员使用的不同,所以会出现各种问题,为了让初学者理解,今天从原理上分析 LNMP 和 LAMP 两种不同的架构。

LNMP(Linux + Nginx + Mysql + Php)

首先 LNMP 使用的是 Nginx,而 Nginx 是一个反向代理服务器,并不具备解析 PHP 脚本的能力,所以需要依靠 PHP-FPM 这个组件来完成 PHP 代码的解析。 

PHP-FPM 即 FastCGI Process Manager(FastCGI 进程管理器),而 FastCGI 是 HTTP 服务器和动态脚本之间的通信接口,Nginx 不支持对外部程序的直接调用或者解析,必须通过 FastCGI 来对脚本进行解析,当 Nginx 收到 CGI 请求之后,FastCGI 接口在脚本解析服务器上,启动一个或多个守护进程对脚本进行解析。

所以在部署 LNMP 环境时,整体流程如下:

1、安装 nginx 服务

2、安装 mysql 数据库

3、安装 Php-fpm 服务,成功安装启动后,会默认监听 9000 端口,用于接收来自 nginx 的解析请求

4、配置 nginx,需要在 nginx 的配置文件中指定 fastcgi 的地址和端口,如图

最后重启 nginx 其可完成部署。

LAMP(Linux + Apache + Mysql + Php)

LAMP 与 LNMP 的不同之处在于使用的 web 服务器是 Apache,Apache 是一个模块化的服务器,支持 PHP 解析模块和 mysql 连接,所以可以不用 php-fpm 来完成 php 脚本的解析。

关于 LAMP 的整体架构如图:

其中解析 PHP 的任务,由 Apache 直接调用 PHP 来完成,所以整个部署流程如下:

1、安装 Apache 服务,也就是 httpd 服务

2、安装 mysql 数据库

3、安装 PHP 运行环境及相关扩展,比如:

apt install -y php-{common,mysql,xml,xmlrpc,curl,gd,imagick,cli,dev,imap,mbstring,opcache,soap,zip,intl}

4、配置 Apache,设置监听端口,默认入口文件等

关于信安之路目前的几款产品定位及介绍

成长平台:适合小白入门、锻炼自学能力、总结能力、沉淀技术基础等场景,通过体系化的任务设置,开放性的任务要求,其他同学报告共享等方式,提升自学、总结、知识沉淀等能力,让自己在竞争中获得一些优势。

信安之路知识星球:稳定运营 7 年,历史沉淀三千多主题,两千多份文档,内容丰富,还能同时解锁成长平台和内部文库账号,目前正值年度特惠期间,加入仅需 299,原价 512

渗透测试那些事儿:专注于渗透测试相关内容分享,包括信息收集、通用漏洞 POC、黑盒测试方法、技巧等内容,加入可解锁成长平台账号以及内部文库部分内容,目前正值年度特惠期间,加入仅需 128,原价 168

内部文库:上线近三年,累计积累两千份文档,其中私密内容已有一千七百多份,均已体系化的内容方式呈现,试看目录:https://wiki.xazlsec.com/static/forder.html

信安之路
坚持原创,专注信息安全技术和经验的分享,致力于帮助十万初学者入门信息安全行业。
 最新文章