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
连接成功
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了