CentOS 7 实现LAMP的方式

  • 将php作为apache的一个依附模块,类似于CGI

  • 将php作为一个独立的服务,fastcgi

将php作为apache依附模块实现lamp
1.借助第三方源配置仓库的repo
centos7镜像中自带的php软件包为5.4版本,已经被淘汰。

可以通过编译安装或借助第三方源的方式来安装新版本php

网站:https://www.wpdaxue.com/wordpress-download

[root@CentOS7 ~]# wget https://mirrors.tuna.tsinghua.edu.cn/remi/enterprise/remi-release-7.rpm

[root@CentOS7 ~]# yum install remi-release-7.rpm -y
2.安装apache和php(Centos7默认将php作为apache的一个模块)
#这里安装php74版本
#安装php的时候 apache会作为依赖自动安装
[root@CentOS7 ~]# yum install php74-php php74-php-mysqlnd php74-php-opcache 
php74-php-json php74-php-xml
3.测试

下载wordpress,解压到对应文件夹后进行测试
地址:https://www.wpdaxue.com/wordpress-download

centos7使用fastcgi的模式来实现lamp

使用fastcgi的模式,将php作为一个单独的服务

  • apache和php服务处于同一台机器

  • apache和php服务位于不同的机器

同一台机器上运行apaceh和php服务

[root@CentOS7 ~]# yum isntall httpd

[root@CentOS7 ~]# yum install php74-php-fpm

[root@CentOS7 ~]# yum install php74-msqlnd

[root@CentOS7 ~]# yum install php74-php-xml  php74-php-json  php74-php-mysqlnd -y

php-fpm的相关文件

[root@CentOS7 html]# rpm -ql php74-php-fpm
/etc/logrotate.d/php74-php-fpm
/etc/opt/remi/php74/php-fpm.conf  #核心配置文件
/etc/opt/remi/php74/php-fpm.d
/etc/opt/remi/php74/php-fpm.d/www.conf  #php的一个子配置文件
/etc/opt/remi/php74/sysconfig/php-fpm
/etc/systemd/system/php74-php-fpm.service.d
/opt/remi/php74/root/usr/sbin/php-fpm
/opt/remi/php74/root/usr/share/doc/php74-php-fpm-7.4.32
/opt/remi/php74/root/usr/share/doc/php74-php-fpm-7.4.32/php-fpm.conf.default
/opt/remi/php74/root/usr/share/doc/php74-php-fpm-7.4.32/www.conf.default
/opt/remi/php74/root/usr/share/fpm
/opt/remi/php74/root/usr/share/fpm/status.html
/opt/remi/php74/root/usr/share/licenses/php74-php-fpm-7.4.32
/opt/remi/php74/root/usr/share/licenses/php74-php-fpm-7.4.32/fpm_LICENSE
/opt/remi/php74/root/usr/share/man/man8/php-fpm.8.gz
/usr/lib/systemd/system/php74-php-fpm.service  #作为一个单独服务
.......

php-fpm的相关配置

php-fpm服务默认使用的是9000端口,当apache接收到用户请求动态资源的请求时,apache作为一个代理服务器将请求通过php-fpm的9000端口转发给php-fpm,它接收到请求后处理请求并返回给apache服务器。


#可以配置启动fascgi服务的时候默认使用的账号
[root@CentOS7 ~]# vim /etc/opt/remi/php74/php-fpm.conf

user = apache #fastcgi服务使用的默认用户

group = apache #用户组

listen = 127.0.0.1:9000 #监听的默认主机和端口

listen.allowed_clients = 127.0.0.1 #允许连接的远程客户端

ping.path = /ping #测试php是否正常工作 成功返回的结果是pong 可以测试服务是否正常运行

ping.response = pong #定义成功默认返回的结果

pm.status_path = /status #php的状态页默认的访问路径
定义apache将请求转发给fastcgi的转发规则:
apache转发请求的配置

开启了php的状态也和检测页面,需要再apache服务里面进行配置,当访问指定的路径时候就转发到fascgi服务器

[root@CentOS7 html]# cat /etc/httpd/conf.d/fcgi.conf
DirectoryIndex index.php    #默认的主页页面
ProxyRequests Off           #关闭正向代理,启用反向代理 apache此时是一个代理服务器
ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/var/www/html/$1
                            # 只要是php结尾的请求,就转发给fastcgi服务器进行处理。
                             #转发指定的请求
                             #/var/www/html/$1:从这个目录找打对应的请求
ProxyPassMatch ^/(fpm_status|ping)fcgi://127.0.0.1:9000
                            # 访问 fpm_status或ping页面的时候就转发到fscgi服务器上面
测试:
<?php
echo date("Y/m/d H:i:s");
phpinfo();
?>

将fastcgi服务和apache主机分离,作为一台独立的服务器部署

  • apache:10.0.0.17

  • fastcgi:10.0.0.18

  • mysql:10.0.0.19

apache:

1.安装对应软件包

[root@CentOS7 ~]# yum install httpd -y
[root@CentOS7 ~]#  yum install php-fpm -y

[root@CentOS7 ~]#  yum install php-mysql #php用于连接mysql的
[root@CentOS7 ~]# yum isntall mariadb-server #centos7默认不带mysql,所以使用mysql的分支mariadb

2.配置fascgi服务器的配置

[root@CentOS7 ~]# vim /etc/php-fpm.d/www.conf

listen = 0.0.0.0:9000  #监听所有ip的9000端口

; Default Value: any
;listen.allowed_clients = 127.0.0.1 #注释掉这行表示所有的用户都能远程到本机

ping.path = /ping #定义状态页面,fascgi正常就默认返回pong

pm.status_path = /fpm_status #定义状态页面

#更改配置文件或者安装对应模块之后需要重启服务才会生效
[root@CentOS7 ~]# systemctl restart php-fpm

#查看端口信息
[root@CentOS7 ~]# ss -ntl
State       Recv-Q Send-Q                                  Local Address:Port                                                 Peer Address:Port
LISTEN      0      128                                                 *:9000                                                            *:*
apache将请求转发给fascgi服务器的配置
[root@CentOS7 ~]# cat /etc/httpd/conf.d/fcgi.conf 
DirectoryIndex index.php

ProxyRequests Off #关闭正向代理,开启反向代理

#当用户访问的是.php的资源时,就将请求转发给10.0.0.18这台主机上9000端口的fascgi服务,从fascgi服务主机的/data/html目录中找到对应的文件进行执行,执行结果返回给apache
ProxyPassMatch ^/(.*\.php)$ fcgi://10.0.0.18:9000/data/html/$1

#用户访问fpm_status或ping页面时,就将请求转发给fastcgi
ProxyPassMatch ^/(fpm_status|ping) fcgi://10.0.0.18:9000
测试:
#fascgi主机测试
[root@CentOS7 ~]# curl http://10.0.0.17/ping
pong

[root@CentOS7 ~]# curl http://10.0.0.17/fpm_status
pool:                 www
process manager:      dynamic
start time:           17/Oct/2022:23:50:20 +0800
start since:          36729
accepted conn:        3
listen queue:         0
max listen queue:     0
listen queue len:     128
idle processes:       5
active processes:     1
total processes:      6
max active processes: 1
max children reached: 0
slow requests:        0


#连接数据库测试
#在fascgi服务器的/data/html文件中创建数据库测试文件
[root@CentOS7 html]# cat mysql.php 
<?php

$servername = "10.0.0.19";
$username = "root";
$password = "redhat";

try {
    $conn = new PDO("mysql:host=$servername;dbname=mysql", $username, $password);
    // 将PDO错误模式设置为异常
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    echo "连接成功"; 
}
catch(PDOException $e){

    echo "连接失败:".$e->getMessage();
}
?>

#测试
[root@CentOS7 html]# curl http://10.0.0.17/mysql.php
连接成功

原文地址:http://www.cnblogs.com/heyongshen/p/16801714.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性