千家信息网

如何编译php-fpm模块与apache2.4结合

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章主要为大家展示了"如何编译php-fpm模块与apache2.4结合",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"如何编译php-fpm模块与ap
千家信息网最后更新 2026年11月01日如何编译php-fpm模块与apache2.4结合

这篇文章主要为大家展示了"如何编译php-fpm模块与apache2.4结合",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"如何编译php-fpm模块与apache2.4结合"这篇文章吧。

准备好3台虚拟机,配置好主机名和IP地址,关闭防火墙和selinux

nfs启动顺序:先启动rpc->在启动nfs

nfs权限参数

rw:读写

ro:只读

sync:同步模式,内存中数据时时写入磁盘

async:不同步,把内存中数据定期写入磁盘中

no_root_squash:加上这个选项后,root用户就会对共享的目录拥有至高的权限控制,就像是对本机的目录操作一样。不安全,不建议使用

root_squash:把root通过网络访问时,换成nfsnobody用户,即限制了root权限

all_squash:不管使用NFS的用户是谁,他的身份都会被限定成为nfsnobody用户身份

anonuid/anongid:要和root_squash 以及 all_squash一同使用,用于指定使用NFS的用户限定后的uid和gid,前提是服务端和客户端/etc/passwd中都存在这个uid和gid

共享文件权限为:服务权限与文件系统权限的交集

安装、配置nfs服务

[root@nfs ~]# mkdir -p /data/{mydata,www} #为web,mysql创建共享目录[root@nfs ~]# ls /data/mydata  www[root@nfs ~]# groupadd -g 110 apache[root@nfs ~]# useradd -u 110 -M -s /sbin/nologin apache[root@nfs ~]# chmod 777 /data/www/[root@nfs ~]# groupadd -g 111 msyql[root@nfs ~]# useradd -u 111 -M -s /sbin/nologin mysql[root@nfs ~]# chmod 777 /data/mydata/[root@nfs ~]# yum groupinstall  -y "NFS file server"[root@nfs ~]# vi /etc/exports/data/www 192.168.0.11(rw,root_squash)/data/mydata 192.168.0.20(rw,no_root_squash)[root@nfs ~]# service rpcbind restartStopping rpcbind:                                          [  OK  ]Starting rpcbind:                                          [  OK  ][root@nfs ~]# service nfs startStarting NFS quotas:                                       [  OK  ]Starting NFS mountd:                                       [  OK  ]Starting NFS daemon:                                       [  OK  ]Starting RPC idmapd:                                       [  OK  ]

安装、配置mysql

[root@mysql ~]# mkdir -p /data/mydata[root@mysql ~]# showmount -e 192.168.0.30Export list for 192.168.0.30:/data/mydata 192.168.0.20/data/www    192.168.0.11[root@mysql ~]# mount -t nfs 192.168.0.30:/data/mydata /data/mydata/[root@mysql ~]# cd /data/mydata/[root@mysql mydata]# lltotal 0[root@mysql mydata]# touch aa[root@mysql mydata]# lltotal 0-rw-r--r-- 1 root root 0 Sep 29 22:23 aa[root@mysql mydata]# cd ~[root@mysql ~]# groupadd -g 111 msyql[root@mysql ~]# useradd -u 111 -M -s /sbin/nologin mysql #创建mysql账户[root@mysql ~]# chown -R mysql:mysql /data/mydata[root@mysql ~]# tar -xf mariadb-5.5.36-linux-x86_64.tar.gz -C /usr/local/[root@mysql ~]# cd /usr/local[root@mysql local]# chown -R mysql:mysql mariadb-5.5.36-linux-x86_64/[root@mysql local]# ln -sv mariadb-5.5.36-linux-x86_64/ mysql[root@mysql mysql]# cd mysql[root@mysql mysql]# scripts/mysql_install_db --datadir=/data/mydata/ --user=mysql[root@mysql mysql]# mkdir /etc/mysql[root@mysql mysql]# cp support-files/my-large.cnf /etc/mysql/my.cnf[root@mysql mysql]# vi /etc/mysql/my.cnf #在mysqld下面添加下面几项[mysqld]...datadir = /data/mydatainnodb_file_per_table =onskip_name_resolve = on[root@mysql mysql]# cp support-files/mysql.server /etc/rc.d/init.d/mysqld[root@mysql mysql]# ln -sv /usr/local/mysql/include /usr/include/mysql[root@mysql mysql]# echo'/usr/local/mysql/lib' > /etc/ld.so.conf.d/mysql.conf[root@mysql mysql]# ldconfig[root@mysql mysql]# chkconfig --add mysqld[root@mysql mysql]# service mysqld start[root@mysql mysql]# bin/mysql_secure_installation #数据库安全初始化,设置root密码、权限和删除匿名用户[root@mysql mysql]# /usr/local/mysql/bin/mysql -uroot -p #验证能否登录Enter password: Welcome to the MariaDB monitor.  Commands end with ; or \g.Your MariaDB connection id is 3Server version: 5.5.36-MariaDB-log MariaDB ServerCopyright (c) 2000, 2014, Oracle, Monty Program Ab and others.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.MariaDB [(none)]> show databases;+--------------------+| Database         |+--------------------+| information_schema|| mysql          || performance_schema|+--------------------+3 rows in set (0.03 sec)MariaDB [(none)]> grant all on *.* to test@"192.168.%.%" identified by 'chinoe-147';##在nfs服务器上可以看到mysql元数据[root@nfs ~]# cd /data/mydata/[root@nfs mydata]# lsaria_log.00000001  aria_log_control  ibdata1  ib_logfile0  ib_logfile1  mysql  mysql-bin.000001  mysql-bin.000002  mysql-bin.000003  mysql-bin.index  mysql.pid  performance_schema

安装、配置apache+php-fpm

apache依赖包 apr-util-1.5.3.tar.bz2 、apr-1.5.0.tar.bz2、pcre-devel

[root@httpd ~]# groupadd -g 110 apache[root@httpd ~]# useradd -u 110 -M -s /sbin/nologin apache[root@httpd ~]# yum install -y pcre-devel[root@httpd ~]# tar -xf apr-1.5.0.tar.bz2  [root@httpd ~]# cd apr-1.5.0[root@httpd apr-1.5.0]# ./configure --prefix=/usr/local/apr[root@httpd apr-1.5.0]# make && make install[root@httpd apr-1.5.0]# cd ..[root@httpd ~]# tar -xf  apr-util-1.5.3.tar.bz2[root@httpd ~]# cd apr-util-1.5.3[root@httpd apr-util-1.5.3]#./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr[root@httpd apr-util-1.5.3]# make && makeinstall[root@httpd apr-util-1.5.3]# cd ..[root@httpd ~]# tar -xvf httpd-2.4.10.tar.bz2[root@httpd ~]# cd httpd-2.4.10[root@httpd httpd-2.4.10]# ./configure--prefix=/usr/local/apache --sysconfdir=/etc/httpd --enable-so --enable-ssl--enable-cgi --enable-rewrite --with-zlib --with-pcre --with-apr=/usr/local/apr--with-apr-util=/usr/local/apr-util --enable-modules=most--enable-mpms-shared=all --with-mpm=event[root@httpd httpd-2.4.10]# make && make install###然后需要自己编写httpd服务启动脚本,我这里是直接修改rpm安装httpd的脚本 #!/bin/bash## httpd        Startup script for the Apache HTTP Server## chkconfig: - 85 15# description: Apache is a World Wide Web server.  It is used to serve \#        HTML files and CGI.# processname: httpd# config: /etc/httpd/conf/httpd.conf# config: /etc/sysconfig/httpd# pidfile: /var/run/httpd.pid# Source function library.. /etc/rc.d/init.d/functionsif [ -f /etc/sysconfig/httpd ]; then        . /etc/sysconfig/httpdfi# Start httpd in the C locale by default.HTTPD_LANG=${HTTPD_LANG-"C"}# This will prevent initlog from swallowing up a pass-phrase prompt if# mod_ssl needs a pass-phrase from the user.INITLOG_ARGS=""# Set HTTPD=/usr/sbin/httpd.worker in /etc/sysconfig/httpd to use a server# with the thread-based "worker" MPM; BE WARNED that some modules may not# work correctly with a thread-based MPM; notably PHP will refuse to start.# Path to the apachectl script, server binary, and short-form for messages.apachectl=/usr/local/apache/bin/apachectl #修改为相关路径httpd=${HTTPD-/usr/local/apache/bin/httpd} #修改为相关路径prog=httpdpidfile=${PIDFILE-/var/run/httpd.pid} #修改为相关路径lockfile=${LOCKFILE-/var/lock/subsys/httpd} #修改为相关路径RETVAL=0start() {        echo -n $"Starting $prog: "        LANG=$HTTPD_LANG daemon --pidfile=${pidfile} $httpd $OPTIONS        RETVAL=$?        echo        [ $RETVAL = 0 ] && touch ${lockfile}        return $RETVAL}stop() {  echo -n $"Stopping $prog: "  killproc -p ${pidfile} -d 10 $httpd  RETVAL=$?  echo  [ $RETVAL = 0 ] && rm -f ${lockfile} ${pidfile}}reload() {    echo -n $"Reloading $prog: "    if ! LANG=$HTTPD_LANG $httpd $OPTIONS -t >&/dev/null; then        RETVAL=$?        echo $"not reloading due to configuration syntax error"        failure $"not reloading $httpd due to configuration syntax error"    else        killproc -p ${pidfile} $httpd -HUP        RETVAL=$?    fi    echo}# See how we were called.case "$1" in  start)  start  ;;  stop)  stop  ;;  status)        status -p ${pidfile} $httpd  RETVAL=$?  ;;  restart)  stop  start  ;;  condrestart)  if [ -f ${pidfile} ] ; then    stop    start  fi  ;;  reload)        reload  ;;  graceful|help|configtest|fullstatus)  $apachectl $@  RETVAL=$?  ;;  *)  echo $"Usage: $prog {start|stop|restart|condrestart|reload|status|fullstatus|graceful|help|configtest}"  exit 1esacexit $RETVAL[root@httpd  ~]# chmod +x /etc/init.d/httpd[root@httpd  ~]# chkconfig --add httpd[root@httpd ~]# vi /etc/profile.d/httpd.sh export PATH=/usr/local/apache/bin:$PATH[root@httpd  ~]# ./etc/profile.d/httpd.sh #重读一下配置文件编译安装apache在服务启动之前必须指定pid文件路径在/etc/httpd/httpd.conf的全局配置中添加pid文件ServerRoot "/usr/local/apache"PidFile "/var/run/httpd.pid" 必须与服务启动脚本httpd中的pidfile路径一样[root@httpd ~]# service httpd start[root@httpd ~]# curl -I 127.0.0.1HTTP/1.1 200 OKDate: Tue, 29 Sep 2015 12:57:18 GMTServer: Apache/2.4.10 (Unix)Last-Modified: Mon, 11 Jun 2007 18:53:14 GMTETag: "2d-432a5e4a73a80"Accept-Ranges: bytesContent-Length: 45Content-Type: text/html#apache已经安装完毕,测试正常

php-fpm以独立模块与apache结合

依赖包:bzip2-devel libmcrypt-devel libxml2-devel php-mysql

mysql与php不在同一台物理机时,还需要安装mysql-devel包和mysql-libs包

[root@httpd ~]# mkdir /etc/php5{,.d}[root@httpd ~]# mkdir /usr/local/php5[root@httpd ~]# yum -y groupinstall "Desktop Platform Development" [root@httpd ~]# yum -y install bzip2-devel libmcrypt-devel libxml2-devel php-mysql[root@httpd ~]# yum install -y mysql-devel mysql-libs[root@httpd ~]# tar -xf php-5.5.29.tar.xz [root@httpd ~]# cd php-5.5.29[root@httpd php-5.5.29]# ./configure --prefix=/usr/local/php5/ --with-mysql --with-openssl --with-mysqli --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml  --enable-sockets --enable-fpm --with-mcrypt  --with-config-file-path=/etc/php5/ --with-config-file-scan-dir=/etc/php5.d --with-bz2[root@httpd php-5.5.29]# make -j 4 && make install[root@httpd php-5.5.29]# cp php.ini-production /etc/php5/php.ini[root@httpd php-5.5.29]# cp sapi/fpm/init.d.php-fpm /etc/rc.d/init.d/php-fpm[root@httpd php-5.5.29]# chmod +x /etc/rc.d/init.d/php-fpm[root@httpd php-5.5.29]# chkconfig --add php-fpm[root@httpd php-5.5.29]# cp /usr/local/php5/etc/php-fpm.conf.default /usr/local/php5/etc/php-fpm.conf###修改php-fpm参数[root@httpd php-5.5.29]# vim /usr/local/php5/etc/php-fpm.confuser = apachegroup = apachelisten = 0.0.0.0:9000在pm = dynamic模块下面修改参数pm.max_children = 50pm.start_servers = 5pm.min_spare_servers = 2pm.max_spare_servers = 8pid = /usr/local/php5/var/run/php-fpm.pid [root@httpd php-5.5.29]# service php-fpm start[root@httpd php-5.5.29]# ss -tanlp |grep 9000LISTEN     0      128               127.0.0.1:9000                     *:*      users:(("php-fpm",114598,7),("php-fpm",114599,0),("php-fpm",114600,0),("php-fpm",114601,0),("php-fpm",114602,0),("php-fpm",114603,0))[root@httpd php-5.5.29]# vi /etc/httpd/httpd.conf User apache #修改进程用户Group apache ##注释掉中心主机,使用虚拟主机#DocumentRoot "/usr/local/apache/htdocs"##    Options Indexes FollowSymLinks#    AllowOverride None#    Require all granted#在相关的LoadModule下添加LoadModule proxy_module modules/mod_proxy.soLoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so在AddType下添加AddType application/x-httpd-php .php找到DirectoryIndex index.html 修改为:DirectoryIndex  index.php index.html#结尾加上虚拟主机    servername www.test.com    documentroot /data/www    ProxyRequests Off    ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/data/www/$1            options none        allowoverride none                    require all granted            [root@httpd ~]# mkdir -p /data/www[root@httpd ~]# mount -t nfs 192.168.0.30:/data/www /data/www/[root@httpd ~]# vi index.php

[root@httpd ~]# vi index.php #测试数据库

再测试数据库是否能链接上

已经success

以上是"如何编译php-fpm模块与apache2.4结合"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

权限 用户 服务 数据 路径 配置 模块 文件 编译 主机 内容 参数 数据库 目录 篇文章 脚本 测试 安全 内存 磁盘 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 湖北九亚互联网络科技有限公司 天津市摩尔互联网科技 A股互联网金融科技公司 上海挚品互联网科技 互联网科技革命 贷财互联网科技 致聘互联网科技 上海喔噻互联网科技 互联网科技公司名称 互联网系的金融科技公司 宁夏众和广鑫互联网科技有限公司 互联网行业科技股 互联网企业科技类企业如何做账 江苏苏星互联网科技有限公司 广州富喜互联网络科技 互联网相关科技技术 同城互联网络科技 银川新华互联网科技学校原画 马化腾互联网科技教学 广州全民伙伴互联网科技有限公司 互联网属科技 紫鲸互联网科技 中国互联网有什么科技含量 国大互联网教育科技有限公司工作 996高科技互联网公司 南博望互联网科技有限公司 恒生互联网科技业指数调整周期 2021世界互联网领先科技成果发布 平安好医生打造互联网科技医疗 利用互联网等科技手段
0