设为首页 加入收藏

TOP

CentOS8 LAMP的实现以及相关应用(一)
2023-07-23 13:36:20 】 浏览:45
Tags:CentOS8 LAMP 相关应

LAMP架构

LAMP架构的组成:

image

LAMP架构的工作原理:

image

说明:
  • 访问动态资源的时候,apache就是个异构代理服务器,接收并转发用户的请求。通过CGI或者fastcgi接口将请求转发给php解释器。

  • apache请求转发的时候可能会涉及到跨网络转发,跨网络转发使用fastcgi来实现。

异构代理和同构代理的区别:
  • 异构代理:接受请求和转发请求使用的通信协议不同

  • 同构代理:接收请求和转发请求使用的通信协议相同

CGI和fastcgi;

CGI:
??Common Gateway Interface 公共网关接口,apache接收到请求以后,就会生成一个子进程来运行外部的php或者其他程序的运行工具,这个进程会把处理完的数据返回给web服务器,最后web服务器把内容发送给用户。

特点:
??执行完成后会销毁这个子进程,如果下次用户还请求改动态脚本,那么web服务器又再次fork一个新进程,周而复始的进行。早期时候使用较多,同时有多少个请求就生成多少个子进程。

例如:范例:httpd 利用CGI运行shell脚本

#apache默认就带cgi的功能
[root@CentOS8 cgi-bin]# httpd -M | grep cgi
 proxy_fcgi_module (shared)
 proxy_scgi_module (shared)
 cgid_module (shared)

#默认需要将脚本文件放到apache的/var/www/cgi-bin/目录下
[root@CentOS8 ~]# cat /etc/httpd/conf/httpd.conf | grep cgi
    ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
# "/var/www/cgi-bin" should be changed to whatever your ScriptAliased
<Directory "/var/www/cgi-bin">
    #AddHandler cgi-script .cgi
#ErrorDocument 404 "/cgi-bin/missing_handler.pl"

[root@CentOS8 cgi-bin]# pwd
/var/www/cgi-bin
[root@CentOS8 cgi-bin]# cat test.sh 
#!/bin/bash
#
cat << EOF
Content-Type: text/html

<pre>
My username is: $(id -un)
My id is: $(id -u)

My shell settings are:
$(set)

My environment variables are:
$(env)

Here is the file in /etc:
$(ls -l /etc/redhat-release )
$( cat /etc/redhat-release )
</pre>
EOF

[root@CentOS8 cgi-bin]# curl http://10.0.0.14/cgi-bin/test.sh

?
??apache2会识别CGI代码的前两行,以确定使用什么解释器进行解释执行,所以前两行的申明很重要。

fastcgi:

??web服务器收到一个请求时,不会重新生成一个子进程(因为这个子进程在web服务器启动时就开启了,而且不会退出),web服务器直接把内容传递给这个进程(进程间通信,但fastcgi使用了别的方式,tcp方式通信),这个进程收到请求后进行处理,把结果返回给web服务器,最后自己接着等待下一个请求的到来,而不是退出

CGI和fastcgi 比较:
  • CGI: 兼职, 一次性的过河拆桥式的服务

  • FASTCGI: 专职,全周期的持续式的服务

PHP

PHP:是一种脚本型的解释型语言

PHP的opcode语言

Opcode是一种PHP脚本编译后的中间语言

php脚本的执行:
  • 1.把php的文本文件转化为opcode语言

  • 2.将opcode解释为计算机可执行的二进制

php程序执行的步骤:

代码文件 ---(Zend引擎)--->opcode码---()--->

PHP的配置
配置文件:
配置文件的来源:
[root@CentOS8 ~]# rpm -qf /etc/php.ini
php-common-7.2.24-1.module_el8.2.0+313+b04d0a66.x86_64
配置文件格式:
  • 类似于mysql,注释使用的是(;)进行注释

  • 使用([])分为多个语句块

[foo]:Section Header
directive = value
php.ini配置文档;

php.ini的核心配置选项文档: http://php.net/manual/zh/ini.core.php

php.ini配置选项列表:http://php.net/manual/zh/ini.list.php

php常见设置:
expose_php = On        #响应报文显示首部字段x-powered-by: PHP/x.y.z,暴露php版本,建议为off

max_execution_time= 30        #最长执行时间30s

memory_limit=128M             #生产不够,可调大

display_errors=off            #调试使用,不要打开,否则可能暴露重要信息

display_startup_errors=off    #建议关闭

post_max_size=8M              #最大上传数据大小,生产可能调大,比下面项大

upload_max_filesize =2M       #最大上传文件,生产可能要调大

max_file_uploads = 20         #同时上传最多文件数

date.timezone =Asia/Shanghai  #指定时区 默认使用的是utc时间

short_open_tag=on             #开启短标签,如: <? phpinfo();?>
修改配置文件生效的方法:

修改完php配置文件后,需要重启php的相关软件才能生效。

#CentOS 8 上面不是依附于apache的一个模块,而是一个独立的服务
#CentOS 7中,php是作为一个依附于apache的一个模块,不是一个独立的服务
[root@CentOS8 ~]# ps aux | grep php
root       60277  0.0  0.9 166852 18020 ?        Ss   19:02   0:00 php-fpm: master process (/etc/php-fpm.conf)
apache     60278  0.0  0.5 183184 10172 ?        S    19:02   0:00 php-fpm: pool www
apache     60279  0.0  0.5 183184 10172 ?        S    19:02   0:00 php-fpm: pool www
apache     60280  0.0  0.5 183184 10172 ?        S    19:02   0:00 php-fpm: pool www
apache     60281  0.0  0.5 183184 10176 ?        S    19:02   0:00 php-fpm: pool www
apa
首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇nginx反向代理与负载均衡 下一篇vsftpd服务

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目