CentOS 7 实现LAMP
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
连接成功
 
                    
                     
                    
                 
                    
                 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号