Php—— 1.apache2.4.x+php7.x

裴欣荣
2023-12-01

一、httpd安装

1.准备安装

1.1 安装开发包
[root@master soft]# yum install -y gcc gcc-c++ expat-devel zlib-devel openssl-devel
1.2 install apr
[root@master soft]# wget http://mirror.bit.edu.cn/apache//apr/apr-1.7.0.tar.gz
[root@master soft]# tar zxvf apr-1.7.0.tar.gz
[root@master soft]# cd apr-1.7.0
[root@master apr-1.7.0]# ./configure --prefix=/share/apr && make -j 8 && make install && echo $?
1.3 install apr-util
[root@master soft]# wget http://mirror.bit.edu.cn/apache/apr/apr-util-1.6.1.tar.gz
[root@master soft]# tar zxvf apr-util-1.6.1.tar.gz
[root@master soft]# cd apr-util-1.6.1
[root@master apr-util-1.6.1]# ./configure --prefix=/share/apr-util --with-apr=/share/apr && make -j 8 && make install && echo $?
1.4 install pcre

Notice:★★★★
必须是8.x,否则apache httpd 安装找不到pcre-config

[root@master soft]# wget https://ftp.pcre.org/pub/pcre/pcre-8.43.zip
[root@master soft]# unzip pcre-8.43.zip
[root@master soft]# cd pcre-8.43
[root@master pcre-8.43]# ./configure --prefix=/share/pcre8 && make -j 8 && make install && echo $?

2.下载源码包

[root@master soft]# wget http://mirror.bit.edu.cn/apache/httpd/httpd-2.4.41.tar.gz
[root@master soft]# tar zxvf httpd-2.4.41.tar.gz

3.编译安装

Notice:★★★
重新编译安装,需要删除源文件,重新解压。


[root@master httpd-2.4.41]# env CFLAGS="-Wall -DBIG_SECURITY_HOLE" ./configure --prefix=/share/apache/ --exec-prefix=/share/apache/win/ --bindir=/share/apache/bin --sbindir=/share/apache/sbin --libexecdir=/share/apache/libexec --sysconfdir=/share/apache/conf --sharedstatedir=/share/apache/com --localstatedir=/share/apache/var --runstatedir=/share/apache/run --libdir=/share/apache/lib --includedir=/share/apache/include --oldincludedir=/share/apache/usr/include --datarootdir=/share/apache/share --datadir=/share/apache/data  --infodir=/share/apache/info --infodir=/share/apache/locale --mandir=/share/apache/man --docdir=/share/apache/doc/PACKAGE --html=/share/apache/doc/html --dvidir=/share/apache/doc/dvi --pdfdir=/share/apache/doc/pdf --psdir=/share/apache/doc/ps --with-apr=/share/apr --with-apr-util=/share/apr-util --with-pcre=/share/pcre8 --with-mysql=/share/mariadb  --enable-so --enable-ssl --enable-deflate --enable-rewrite --enable-headers --enable-expires --enable-cgid --enable-cgi --enable-mods-shared=allable-ssl --enable-mods-shared=all  --enable-track-vars  && make -j 8 && make install && echo $?

Notice:★★
修改root权限启动httpd的方法有3种:
A.在编译前面加env CFLAGS="-Wall -DBIG_SECURITY_HOLE" 环境变量
B.在/etc/profile和~/.bashrc中加环境遍历
export CFLAGS="-Wall -DBIG_SECURITY_HOLE"
C.修改头文件

[root@master include]# pwd
/share/soft/httpd-2.4.41/include
[root@master include]# vim http
http_config.h      http_core.h        http_log.h         http_protocol.h    http_vhost.h       
http_connection.h  httpd.h            http_main.h        http_request.h     
[root@master include]# vim http_config.h 

#ifndef BIG_SECURITY_HOLE
#define BIG_SECURITY_HOLE
#endif

Notice:★★★★
安装完毕一定要查看httpd.conf文件,与yum安装的路径和配置差异较大。

4.指定全局变量

[root@master soft]# echo 'export HTTPD_HOME=/share/apache' >>/etc/profile
[root@master soft]# echo 'export PATH=$HTTPD_HOME/bin:$HTTPD_HOME/sbin:$PATH' >> /etc/profile
[root@master soft]# echo 'export HTTPD_HOME=/share/apache' >> ~/.bashrc
[root@master soft]# echo 'export PATH=$HTTPD_HOME/bin:$HTTPD_HOME/sbin:$PATH' >> ~/.bashrc
[root@master soft]# source /etc/profile ~/.bashrc 

5.添加httpd服务

[root@master ~]# vim /usr/lib/systemd/system/httpd.service
[Unit]
Description=The Apache HTTP Server
After=network.target remote-fs.target nss-lookup.target
Documentation=man:/share/apache/sbin/httpd(8)
Documentation=man:/share/apache/sbin/apachectl(8)
[Service]
Type=forking
EnvironmentFile=/share/apache/conf/httpd.conf
ExecStart=/share/apache/sbin/httpd $OPTIONS -k start
ExecReload=/share/apache/sbin/httpd $OPTIONS -k graceful
ExecStop=/share/apache/sbin/httpd $OPTIONS -k stop
KillSignal=SIGCONT
PrivateTmp=true
[Install]
WantedBy=multi-user.target

6.验证安装

[root@master ~]# systemctl start httpd
[root@master ~]# systemctl status httpd
● httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
   Active: active (running) since Mon 2020-02-24 09:14:42 CST; 5s ago
   .....................

修改配置文件

[root@master conf]# pwd
/share/apache/conf
[root@master conf]# vim httpd.conf 
#将daemon改成root,也可以改成其他的自定义的用户
User root
Group root
#去掉ServerName前的#
ServerName www.example.com:80
[root@master conf]# systemctl restart httpd

检查配置文件路径

[root@node3 ~]# httpd -t -D DUMP_RUN_CFG
ServerRoot: "/share/apache/"
Main DocumentRoot: "/share/apache/data/htdocs"
Main ErrorLog: "/share/apache/var/logs/error_log"
Mutex default: dir="/share/apache/var/logs/" mechanism=default 
PidFile: "/share/apache/var/logs/httpd.pid"
Define: DUMP_RUN_CFG
User: name="root" id=0
Group: name="root" id=0

7.安装脚本

#清理环境
rm -rf /share/apr /share/apr-util /share/pcre8 /share/apache
cp -rpfn /etc/{profile.bak,profile}
cp -rpfn ~/.bashrcbak ~/.bashrc

#环境安装
yum install -y gcc
yum install -y gcc-c++ 
yum install -y expat-devel 
yum install -y zlib-devel 
yum install -y openssl-devel 
yum install -y psmisc 
yum install -y wget

cd /share/soft
wget ftp://ftpuser/apr-1.7.0.tar.gz
tar zxvf apr-1.7.0.tar.gz
cd apr-1.7.0
./configure --prefix=/share/apr 
make -j 4 
make install
echo $?

cd /share/soft
wget ftp://ftpuser/apr-util-1.6.1.tar.gz
tar zxvf apr-util-1.6.1.tar.gz
cd apr-util-1.6.1
./configure --prefix=/share/apr-util --with-apr=/share/apr 
make -j 4
make install
echo $?

cd /share/soft
wget ftp://ftpuser/pcre-8.43.zip
unzip pcre-8.43.zip
cd pcre-8.43
./configure --prefix=/share/pcre8
make -j 4
make install
echo $?

#下载安装包
cd /share/soft
wget ftp://ftpuser/httpd-2.4.41.tar.gz

#编译安装httpd
tar xf httpd-2.4.41.tar.gz
cd httpd-2.4.41
env CFLAGS="-Wall -DBIG_SECURITY_HOLE" ./configure --prefix=/share/apache/ --exec-prefix=/share/apache/win/ --bindir=/share/apache/bin --sbindir=/share/apache/sbin --libexecdir=/share/apache/libexec --sysconfdir=/share/apache/conf --sharedstatedir=/share/apache/com --localstatedir=/share/apache/var --runstatedir=/share/apache/run --libdir=/share/apache/lib --includedir=/share/apache/include --oldincludedir=/share/apache/usr/include --datarootdir=/share/apache/share --datadir=/share/apache/data  --infodir=/share/apache/info --infodir=/share/apache/locale --mandir=/share/apache/man --docdir=/share/apache/doc/PACKAGE --html=/share/apache/doc/html --dvidir=/share/apache/doc/dvi --pdfdir=/share/apache/doc/pdf --psdir=/share/apache/doc/ps --with-apr=/share/apr --with-apr-util=/share/apr-util --with-pcre=/share/pcre8 --with-mysql=/share/mariadb  --enable-so --enable-ssl --enable-deflate --enable-rewrite --enable-headers --enable-expires --enable-cgid --enable-cgi --enable-mods-shared=allable-ssl --enable-mods-shared=all  --enable-track-vars  && make -j 8 && make install && echo $?

#生成环境变量
#cp -rpfn /etc/{profile,profile.bak}
#cp -rpfn ~/.bashrc ~/.bashrcbak
echo 'export HTTPD_HOME=/share/apache' >>/etc/profile
echo 'export PATH=$HTTPD_HOME/bin:$HTTPD_HOME/sbin:$PATH' >> /etc/profile
echo 'export HTTPD_HOME=/share/apache' >> ~/.bashrc
echo 'export PATH=$HTTPD_HOME/bin:$HTTPD_HOME/sbin:$PATH' >> ~/.bashrc
source /etc/profile ~/.bashrc

#生成服务文件
cat<<EOF>/usr/lib/systemd/system/httpd.service
Description=The Apache HTTP Server
After=network.target remote-fs.target nss-lookup.target
Documentation=man:/share/apache/sbin/httpd(8)
Documentation=man:/share/apache/sbin/apachectl(8)
[Service]
Type=forking
EnvironmentFile=/share/apache/conf/httpd.conf
ExecStart=/share/apache/sbin/httpd $OPTIONS -k start
ExecReload=/share/apache/sbin/httpd $OPTIONS -k graceful
ExecStop=/share/apache/sbin/httpd $OPTIONS -k stop
KillSignal=SIGCONT
PrivateTmp=true
[Install]
WantedBy=multi-user.target
EOF

#修改配置文件 
cp -rpfn /share/apache/conf/{httpd.conf,httpd.conf.bak}
sed -i 's/daemon/root/g' /share/apache/conf/httpd.conf 
sed -i 's/#ServerName/ServerName/g' /share/apache/conf/httpd.conf 

#验证安装
systemctl start httpd
systemctl status httpd

二、php安装

1.安装准备

[root@master soft]# 
yum -y install wget 
yum -y install vim 
yum -y install pcre 
yum -y install pcre-devel 
yum -y install openssl 
yum -y install openssl-devel 
yum -y install libicu-devel 
yum -y install gcc 
yum -y install gcc-c++ 
yum -y install autoconf 
yum -y install libjpeg 
yum -y install libjpeg-devel 
yum -y install libpng 
yum -y install libpng-devel 
yum -y install freetype 
yum -y install freetype-devel 
yum -y install libxml2 
yum -y install libxml2-devel 
yum -y install zlib 
yum -y install zlib-devel 
yum -y install glibc 
yum -y install glibc-devel 
yum -y install glib2 
yum -y install glib2-devel 
yum -y install ncurses 
yum -y install ncurses-devel 
yum -y install curl 
yum -y install curl-devel 
yum -y install krb5-devel 
yum -y install libidn 
yum -y install libidn-devel 
yum -y install openldap
yum -y install openldap-devel 
yum -y install nss_ldap 
yum -y install jemalloc-devel
yum -y install cmake 
yum -y install boost-devel 
yum -y install bison 
yum -y install automake 
yum -y install libevent 
yum -y install libevent-devel
yum -y install gd 
yum -y install gd-devel 
yum -y install libtool-ltdl
yum -y install libtool
yum -y install libtool-ltdl-devel
yum -y install libmcrypt 
yum -y install libmcrypt-devel 
yum -y install mcrypt 
yum -y install mhash 
yum -y install libxslt 
yum -y install libxslt-devel 
yum -y install readline 
yum -y install readline-devel 
yum -y install gmp 
yum -y install gmp-devel 
yum -y install libcurl 
yum -y install libcurl-devel 
yum -y install openjpeg-devel 
yum -y install libjpeg-turbo 
yum -y install libjpeg-turbo-devel 
yum -y install libpng 
yum -y install freetype  
yum -y install libpng-devel 
yum -y install freetype-devel 
yum -y install icu 
yum -y install libicu 
yum -y install libicu-devel 
yum -y install openldap 
yum -y install openldap-clients 
yum -y install openldap-devel o
yum -y install penldap-servers 
yum -y install sqlite-devel 
yum -y install oniguruma 
yum -y install oniguruma-devel
[root@master soft]# cp -frp /usr/lib64/libldap* /usr/lib/

3.下载php包

[root@master soft]# wget https://www.php.net/distributions/php-7.4.3.tar.gz
[root@master soft]# tar xf php-7.4.3.tar.gz 
[root@master soft]# cd php-7.4.3/

4.编译安装

建议在mariadb后台启动后安装

root@master php-7.4.3]# ./configure --prefix=/share/php/php7.4.3 --with-apxs2=/share/apache/bin/apxs --with-config-file-path=/share/php/php7.4.3/etc --enable-fpm --with-fpm-user=root --with-fpm-group=root --enable-mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --enable-mysqlnd-compression-support --with-iconv-dir --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir --enable-xml --disable-rpath --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --enable-mbregex --enable-mbstring --enable-intl --with-libmbfl --enable-ftp --with-gd --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-xmlrpc --enable-zip --enable-soap --with-gettext --disable-fileinfo --enable-opcache --with-pear --enable-maintainer-zts --with-ldap=shared --without-gdbm  --with-mysql-sock=/share/mariadb/mariadb10.5/etc/mysql.sock  --enable-sockets  && make -j 12  && make install && echo $?

Notice:★★★★
编译问题:cc: Internal error: Killed (program cc1)
内存不够报错。 添加–disable-fileinfo
question1:

configure: error: Cannot find ldap libraries in /usr/lib.
cp -frp /usr/lib64/libldap* /usr/lib/

question2:

configure: error: Package requirements (oniguruma) were not met
wget https://github.com/kkos/oniguruma/archive/v6.9.4.tar.gz -O oniguruma-6.9.4.tar.gz
tar -zxf oniguruma-6.9.4.tar.gz
cd oniguruma-6.9.4
./autogen.sh && ./configure --prefix=/usr
make && make install
yum -y install https://mirrors.tuna.tsinghua.edu.cn/centos/7/cloud/x86_64/openstack-queens/Packages/o/oniguruma-6.7.0-1.el7.x86_64.rpm
yum -y install https://mirrors.tuna.tsinghua.edu.cn/centos/7/cloud/x86_64/openstack-queens/Packages/o/oniguruma-devel-6.7.0-1.el7.x86_64.rpm

Notice:★★
mysqldnd即MySQL Native Driver简写,即是由PHP源码提供的mysql驱动连接代码,它的目的是代替旧的libmysql驱动。
为何要使用mysqlnd驱动?
A.libmysql驱动是由mysql AB公司(现在是oracle公司)编写, 并按mysql license许可协议发布,所以在PHP中默认是被禁用的。而mysqlnd是由php官方开发的驱动,以php license许可协议发布,故就规避了许可协议和版权的问题。
B.因为mysqlnd内置于PHP源代码,故你在编译安装php时就不需要预先安装mysql server也可以提供mysql client API (mysql_connect, pdo , mysqli), 这将减化一些工作量.
C. mysqlnd是专门为php优化编写的驱动,它使用了PHP本身的特性,在内存管理,性能上比libmysql更有优势. php官方的测试是:libmysql将每条记录在内存中保存了两份,而mysqlnd只保存了一份
D. 一些新的或增强的功能
增强的持久连接
引入特有的函数mysqli_fetch_all()
引入一些性能统计函数mysqli_get_cache_stats(), mysqli_get_client_stats(),
mysqli_get_connection_stats(),
使用上述函数,可很容易分析mysql查询的性能瓶颈!
SSL支持(从php 5.3.3开始有效)
压缩协议支持
命名管道支持(php 5.4.0开始有效)

5.yum安装php、php-fpm

Notice:★★
yum 安装php会将httpd一起安装包
参考

5.1 安装第三方的PHP yum源
[root@master share]# yum install https://mirror.webtatic.com/yum/el7/epel-release.rpm
5.2 手写yum源

如果5.1 安装yum源不成功,可以手写yum源

[root@master ~]# vim /etc/yum.repos.d/remi.repo 
[remi-php54]
name=remi-php54
baseurl=http://rpms.remirepo.net/enterprise/7/php54/x86_64/
enabled=1
gpgcheck=1
gpgkey=http://rpms.remirepo.net/RPM-GPG-KEY-remi
[remi-php55]
name=remi-php55 
baseurl=http://rpms.remirepo.net/enterprise/7/php55/x86_64/
enabled=1
gpgcheck=1
gpgkey=http://rpms.remirepo.net/RPM-GPG-KEY-remi
[remi-php56]
name=remi-php56 
baseurl=http://rpms.remirepo.net/enterprise/7/php56/x86_64/
enabled=1
gpgcheck=1
gpgkey=http://rpms.remirepo.net/RPM-GPG-KEY-remi
[remi-php70]
name=remi-php70 
baseurl=http://rpms.remirepo.net/enterprise/7/php70/x86_64/
enabled=1
gpgcheck=1
gpgkey=http://rpms.remirepo.net/RPM-GPG-KEY-remi
[remi-php71]
name=remi-php71 
baseurl=http://rpms.remirepo.net/enterprise/7/php71/x86_64/
enabled=1
gpgcheck=1
gpgkey=http://rpms.remirepo.net/RPM-GPG-KEY-remi
[remi-php72]
name=remi-php72 
baseurl=http://rpms.remirepo.net/enterprise/7/php72/x86_64/
enabled=1
gpgcheck=1
gpgkey=http://rpms.remirepo.net/RPM-GPG-KEY-remi
[remi-php73]
name=remi-php73 
baseurl=http://rpms.remirepo.net/enterprise/7/php73/x86_64/
enabled=1
gpgcheck=1
gpgkey=http://rpms.remirepo.net/RPM-GPG-KEY-remi
[remi-php74]
name=remi-php72 
baseurl=http://rpms.remirepo.net/enterprise/7/php74/x86_64/
enabled=1
gpgcheck=1
gpgkey=http://rpms.remirepo.net/RPM-GPG-KEY-remi

Notice:★★
php-fpm版本是7.4的,安装完毕,可以采用systemctrl直接启动

[root@master yum.repos.d]# yum info php-fpm
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
Available Packages
Name        : php-fpm
Arch        : x86_64
Version     : 7.4.3
Release     : 1.el7.remi
Size        : 1.8 M
Repo        : remi-php74
Summary     : PHP FastCGI Process Manager
URL         : http://www.php.net/
License     : PHP and Zend and BSD and MIT and ASL 1.0 and NCSA
Description : PHP-FPM (FastCGI Process Manager) is an alternative PHP FastCGI
            : implementation with some additional features useful for sites of
            : any size, especially busier sites.
[root@master yum.repos.d]# yum search php74
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
========================================================= N/S matched: php74 ==========================================================
php74-runtime.x86_64 : Package that handles php74 Software Collection.
php74.x86_64 : Package that installs PHP 7.4
php74-php-cli.x86_64 : Command-line interface for PHP
php74-php-common.x86_64 : Common files for PHP
php74-php-json.x86_64 : JavaScript Object Notation extension for PHP

Notice:★★
yum安装受网络状态限制,不建议使用!

6.配置PHP

6.1 php.ini
[root@master php-7.4.3]# pwd
/blueicex/soft/php-7.4.3
[root@master php-7.4.3]# cp php.ini-production  /share/php/php7.4.3/php.ini
[root@master php7.4.3]# pwd
/share/php/php7.4.3
[root@master php7.4.3]# mkdir /share/php/php7.4.3/extensions
[root@master php7.4.3]# vim /share/php/php7.4.3/php.ini
expose_php = Off
short_open_tag = ON
max_execution_time = 300
max_input_time = 300
memory_limit = 128M
post_max_size = 32M
date.timezone = Asia/Shanghai
mbstring.func_overload=2
extension_dir = "/share/php/php7.4.3/extensions/no-debug-zts-20200227/"
6.2 php-fpm.conf
[root@master etc]# pwd
/share/php/php7.4.3/etc
[root@master etc]# cp php-fpm.conf.default php-fpm.conf
6.3 www.conf
[root@master php-fpm.d]# pwd
/share/php/php7.4.3/etc/php-fpm.d
[root@master php-fpm.d]# cp  www.conf.default  www.conf

7.指定环境变量

[root@master sbin]# pwd
/share/php/php7.4.3/sbin
[root@master sbin]# ln -sf  /share/php/php7.4.3  /share/lnhome/php
[root@master bin]# cd /share/lnhome/php/
[root@master php]# ls
bin  etc  extensions  include  lib  php  sbin  var
[root@master php]# echo 'export PHP_HOME=/share/lnhome/php' >>/etc/profile
[root@master php]# echo 'export PATH=$PHP_HOME/sbin:$PATH' >> /etc/profile
[root@master php]# echo 'export PHP_HOME=/share/apache' >> ~/.bashrc
[root@master php]# echo 'export PATH=$PHP_HOME/sbin:$PATH' >> ~/.bashrc
[root@master php]# source /etc/profile ~/.bashrc 

8.验证PHP安装

[root@master etc]# php-fpm --help
Usage: php [-n] [-e] [-h] [-i] [-m] [-v] [-t] [-p <prefix>] [-g <pid>] [-c <file>] [-d foo[=bar]] [-y <file>] [-D] [-F [-O]]
  -c <path>|<file> Look for php.ini file in this directory
  -n               No php.ini file will be used
  -d foo[=bar]     Define INI entry foo with value 'bar'
  -e               Generate extended information for debugger/profiler
  -h               This help
  -i               PHP information
  -m               Show compiled in modules
  -v               Version number
  -p, --prefix <dir>
                   Specify alternative prefix path to FastCGI process manager (default: /share/php/php7.4.3).
  -g, --pid <file>
                   Specify the PID file location.
  -y, --fpm-config <file>
                   Specify alternative path to FastCGI process manager config file.
  -t, --test       Test FPM configuration and exit
  -D, --daemonize  force to run in background, and ignore daemonize option from config file
  -F, --nodaemonize
                   force to stay in foreground, and ignore daemonize option from config file
  -O, --force-stderr
                   force output to stderr in nodaemonize even if stderr is not a TTY
  -R, --allow-to-run-as-root
                   Allow pool to run as root (disabled by default)

# Notice:R, --allow-to-run-as-root
[root@master php]# php74 -v
PHP 7.4.3 (cli) (built: Feb 18 2020 11:53:05) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
[root@master php]# php-fpm -c /share/php/php7.4.3/php.ini  -y /share/php/php7.4.3/etc/php-fpm.conf -R
root@master etc]# ps aux | grep php
root     115011  0.0  0.3 245364  7484 ?        Ss   12:18   0:00 php-fpm: master process (/share/php/php7.4.3/etc/php-fpm.conf)
root     115012  0.0  0.3 245364  6784 ?        S    12:18   0:00 php-fpm: pool www
root     115013  0.0  0.3 245364  6784 ?        S    12:18   0:00 php-fpm: pool www

9.添加php-fpm服务

9.1 手写服务
[root@master fpm]# vim  /usr/lib/systemd/system/php-fpm.service
[Unit]
Description=The PHP FastCGI Process Manager
After=network.target
[Service]
Type=forking
ExecStart=/share/php/php7.4.3/sbin/php-fpm  -R -D -O  -c /share/php/php7.4.3/php.ini  --fpm-config /share/php/php7.4.3/etc/php-fpm.conf  --pid /share/php/php7.4.3/etc/php-fpm.pid
ExecReload=/bin/kill -USR2 $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
9.2 验证服务
[root@master fpm]# ps aux | grep php
root      41374  0.0  1.1 610272 23248 ?        Ss   05:15   0:00 php-fpm: master process (/etc/opt/rh/rh-php73/php-fpm.conf)
apache    41375  0.0  0.5 610272 10452 ?        S    05:15   0:00 php-fpm: pool www
apache    41376  0.0  0.5 610272 10452 ?        S    05:15   0:00 php-fpm: pool www
apache    41377  0.0  0.5 610272 10452 ?        S    05:15   0:00 php-fpm: pool www
apache    41378  0.0  0.5 610272 10452 ?        S    05:15   0:00 php-fpm: pool www
apache    41379  0.0  0.5 610272 10452 ?        S    05:15   0:00 php-fpm: pool www
root      49588  0.0  0.0 112712   964 pts/2    R+   07:38   0:00 grep --color=auto php
[root@master fpm]# killall php-fpm
[root@master fpm]# systemctl start php-fpm
[root@master fpm]# systemctl status php-fpm
● php-fpm.service - LSB: starts php-fpm
   Loaded: loaded (/etc/rc.d/init.d/php-fpm; bad; vendor preset: disabled)
   Active: active (running) since Wed 2020-02-26 07:38:21 CST; 11s ago
   ..................
[root@master fpm]# ps aux | grep php
root      49613  0.0  0.3 245360  7492 ?        Ss   07:38   0:00 php-fpm: master process (/share/php/php7.4.3/etc/php-fpm.conf)
apache    49614  0.0  0.3 245360  7036 ?        S    07:38   0:00 php-fpm: pool www
apache    49615  0.0  0.3 245360  7036 ?        S    07:38   0:00 php-fpm: pool www
root      49730  0.0  0.0 112712   964 pts/2    R+   07:40   0:00 grep --color=auto php

三、http配置php功能

Notice:★★★★
编译安装和yum安装截然不同,要看清楚配置和文件架构
编译安装已经在httpd.conf装载了php7模块,为了便于管理,可以去除httpd.conf关于php模块的配置,重新新建模块装载文件

[root@master apache]# pwd
/share/apache/
[root@master apache]# mkdir modules conf.modules.d conf.d
[root@master apache]# cd conf.modules.d/
[root@master conf.modules.d]# vim 00-php.conf
LoadModule php7_module  libexec/libphp7.so
[root@master conf.modules.d]# cd ../conf.d/
[root@master conf.d]# vim php.conf 
	<IfModule mod_php7.c>
	        AddType application/x-httpd-php .php
	</IfModule>
	<IfModule dir_module>
	        DirectoryIndex index.html index.php
	</IfModule>
[root@master conf.d]# cd ../conf
[root@master conf]# cp httpd.conf  httpd.conf.bak
[root@master conf]# vim httpd.conf
Include conf.modules.d/*.conf
IncludeOptional conf.d/*.conf

[root@master conf.d]# mkdir /share/data/apache/www/html/v1 -pv
[root@master extra]# pwd
/share/apache/conf/extra
root@master extra]# cp httpd-vhosts.conf /share/apache/conf.d/v1.conf
[root@master extra]# cd /share/apache/conf.d/
[root@master conf.d]# vim v1.conf 
Listen 88
<VirtualHost *:88>
    ServerAdmin blueice1980@126.com
    DocumentRoot "/share/data/apache/www/html/v1"
    ServerName master.blueicex.com
    ErrorLog "var/logs/v1_error_log"
    CustomLog "var/logs/v1_access_log" common
    DirectoryIndex index.php
</VirtualHost>
<Directory "/share/data/apache/www/html/v1">
    AllowOverride None
    # Allow open access:
    Require all granted
</Directory>

启动Apache

[root@master conf.d]# systemctl start httpd

四、测试

[root@master conf]# echo  '<?php   phpinfo(); ?>' >>  /share/data/apache/www/html/v1/index.php
[root@master conf]# curl master.blueicex.com:/index.php
[root@master conf]# vim /share/data/apache/www/html/v1/mysql.php
<?php
$link = mysqli_connect('localhost', 'root', ' ');
if (!$link) {
die('Could not connect: ' . mysqli_error());
}
echo 'Connected successfully';
mysqli_close($link);
?>
[root@master conf]# curl master.blueicex.com:/mysql.php

五、安装脚本

#清理环境
rm -rf /share/php/php7.4.3 
cp -rpfn /etc/{profile.bak,profile}
cp -rpfn ~/.bashrcbak ~/.bashrc


#安装环境包(重点是这里)
yum -y install wget vim pcre pcre-devel openssl openssl-devel gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc  glibc-devel glib2 glib2-devel ncurses ncurses-devel curl curl-devel krb5-devel libidn libidn-devel openldap openldap-devel nss_ldap jemalloc-devel cmake boost-devel bison automake libevent libevent-devel gd gd-devel libtool libtool-devel  libmcrypt libmcrypt-devel mcrypt mhash libxslt libxslt-devel readline readline-devel gmp gmp-devel libcurl libcurl-devel openjpeg-devel libcurl libcurl-devel libjpeg-turbo libjpeg-turbo-devel libpng freetype  libpng-devel freetype-devel icu libicu libicu-devel openldap openldap-clients openldap-devel openldap-servers sqlite-devel oniguruma oniguruma-devel libticonv libticonv-devel wget psmisc
cp -frpn /usr/lib64/libldap* /usr/lib/

#下载php安装包
cd /share/soft
wget ftp://ftpuser/php-7.4.3.tar.gz

#编译安装php
tar xf php-7.4.3.tar.gz 
cd php-7.4.3
./configure --prefix=/share/php/php7.4.3 --with-apxs2=/share/apache/bin/apxs --with-config-file-path=/share/php/php7.4.3/etc --enable-fpm --with-fpm-user=root --with-fpm-group=root --enable-mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --enable-mysqlnd-compression-support --with-iconv-dir --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir --enable-xml --disable-rpath --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --enable-mbregex --enable-mbstring --enable-intl --with-libmbfl --enable-ftp --with-gd --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-xmlrpc --enable-zip --enable-soap --with-gettext --disable-fileinfo --enable-opcache --with-pear --enable-maintainer-zts --with-ldap=shared --without-gdbm  --with-mysql-sock=/share/mariadb/mariadb10.5/etc/mysql.sock  --enable-sockets  
make -j 6  
make install 
echo $?

#配置PHP
cd /share/soft/php-7.4.3
cp -fprn php.ini-production  /share/php/php7.4.3/php.ini
mkdir /share/php/php7.4.3/extensions -pv
cat << EOF >/share/php/php7.4.3/php.ini
expose_php = Off
short_open_tag = ON
max_execution_time = 300
max_input_time = 300
memory_limit = 128M
post_max_size = 32M
date.timezone = Asia/Shanghai
mbstring.func_overload=2
extension_dir = "/share/php/php7.4.3/extensions/no-debug-zts-20200227/"
EOF

cd /share/php/php7.4.3/etc
cp -fprn php-fpm.conf.default php-fpm.conf
cd /share/php/php7.4.3/etc/php-fpm.d
cp -fprn www.conf.default  www.conf

#指定环境变量
mkdir -pv /share/lnhome/
ln -sf  /share/php/php7.4.3  /share/lnhome/php
#cp -rpfn /etc/{profile,profile.bak}
#cp -rpfn ~/.bashrc ~/.bashrcbak
echo 'export PHP_HOME=/share/lnhome/php' >>/etc/profile
echo 'export PATH=$PHP_HOME/sbin:$PATH' >> /etc/profile
echo 'export PHP_HOME=/share/apache' >> ~/.bashrc
echo 'export PATH=$PHP_HOME/sbin:$PATH' >> ~/.bashrc
source /etc/profile ~/.bashrc 

#验证php安装
php-fpm --help
php74 -v

#添加php-fpm服务
cat << EOF >/usr/lib/systemd/system/php-fpm.service
[Unit]
Description=The PHP FastCGI Process Manager
After=network.target
[Service]
Type=forking
ExecStart=/share/php/php7.4.3/sbin/php-fpm  -R -D -O  -c /share/php/php7.4.3/php.ini  --fpm-config /share/php/php7.4.3/etc/php-fpm.conf  --pid /share/php/php7.4.3/etc/php-fpm.pid
ExecReload=/bin/kill -USR2 $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
EOF

#验证php服务安装
systemctl stop php-fpm
systemctl start php-fpm
systemctl status php-fpm

#http配置php功能
cd /share/apache/
mkdir modules conf.modules.d conf.d
cd /share/apache/conf.modules.d/
echo 'LoadModule php7_module  libexec/libphp7.so' >>00-php.conf

cd /share/apache/conf.d/
cat << EOF > php.conf  
<IfModule mod_php7.c>
	AddType application/x-httpd-php .php
</IfModule>
<IfModule dir_module>
	DirectoryIndex index.html index.php
</IfModule>
EOF

cd /share/apache/conf
cp httpd.conf  httpd.conf.bak
echo 'Include conf.modules.d/*.conf'>>httpd.conf
echo 'IncludeOptional conf.d/*.conf'>>httpd.conf

#验证服务
mkdir /share/data/apache/www/html/v1 -pv
cd /share/apache/conf/extra
cp httpd-vhosts.conf /share/apache/conf.d/v1.conf
cd /share/apache/conf.d/
>>v1.conf 
cat << EOF >/share/data/apache/www/html/v1
Listen 88
<VirtualHost *:88>
    ServerAdmin blueice1980@126.com
    DocumentRoot "/share/data/apache/www/html/v1"
    ServerName node2.blueicex.com
    ErrorLog "var/logs/v1_error_log"
    CustomLog "var/logs/v1_access_log" common
    DirectoryIndex index.php
</VirtualHost>
<Directory "/share/data/apache/www/html/v1">
    AllowOverride None
    # Allow open access:
    Require all granted
</Directory>
EOF
systemctl restart httpd
echo  '<?php   phpinfo(); ?>' >  /share/data/apache/www/html/v1/index.php
curl node2.blueicex.com:/index.php
cat <<EOF>/share/data/apache/www/html/v1/mysql.php
<?php
$link = mysqli_connect('localhost', 'root', 'blueice1980');
if (!$link) {
die('Could not connect: ' . mysqli_error());
}
echo 'Connected successfully';
mysqli_close($link);
?>
EOF
curl master.blueicex.com:/mysql.php

六、附加

1.安装选项
############系统
#默认禁用短形式的开始标签 <? 
--disable-short-tags
--enable-inline-optimization
--enable-sysvsem 
--enable-sysvshm
--enable-sigchild
#支持zend的多字节
--enable-zend-multibyte
#php.ini位置,默认为 PREFIX/lib。
--with-config-file-path=/usr/local/php/etc 
#整合apache,apxs功能
--with-apxs2=/usr/local/apache/bin/apxs
#安装 PEAR 扩展。pear命令的支持,PHP扩展用的
--with-pear
#进程控制
--enable-pcntl
#魔术引用的支持
--enable-magic-quotes 
#魔术头文件位置
--with-mime-magic=/usr/share/file/magic.mime 
#日历扩展功能
--enable-calendar 
#关闭额外的运行库文件
--disable-rpath 
#关闭调试
--disable-debug
#打开安全模式
--enable-safe-mode 
#开启wddx函数库
--enable-wddx
#允许PHP读取、写入、创建和删除Unix共享内存段的函数集
--enable-shmop

############CGI
#FPM 支持
--enable-fpm
支持fastcgi方式启动PHP
--enable-fastCGI 
--enable-force-CGI-redirect  


 
############压缩
--with-bz2 
--with-zlib 
--enable-zip
#zip 支持,[DIR]是 ZZIPlib 库安装路径
--with-zip[=DIR]

############网络
 #FTP扩展
--enable-ftp
#支持curl
--with-curl
#运用curl工具打开url流
--with-curlwrappers 
#支持 SOAP
–enable-soap

############xml及扩展
#打开XSLT 文件支持,扩展了libXML2库 ,需要libxslt软件
--with-xsl 
#libxml2库的支持
--with-libXML-dir
#xml-rpc的c语言 
--with-XMLrpc 

############字体
#打开gnu 的gettext 支持,编码库用到
--with-gettext 
#打开freetype1.*的支持,可以不加了
--with-ttf 
#freetype字体库的支持
--with-freetype-dir
#关闭iconv函数,种字符集间的转换
--without-iconv 
#mbstring 多字节扩展
--enable-mbstring

############图片
#jpeg图片的支持
--with-jpeg-dir
#png图片的支持
--with-png-dir
#激活 GD 支持,可以指定扩展位置。编译 GD 库需要libpng 和 libjpeg。建议通过 sudo apt-get install php7.2-gd 或 yum install php72w-gt 安装。
--with-gd[=DIR]
#打开图片大小调整,用到zabbix监控的时候用到了这个模块
--enable-bcmath
#图片的元数据支持 
--enable-exif 
#支持ncurses 屏幕绘制以及基于文本终端的图形互动功能的动态库
--with-ncurses 


############加密
--with-mcrypt
--with-mhash
#openssl
--with-openssl[=DIR]
#支持perl的正则库
--with-pcre
#perl的正则库案安装位置
--with-pcre-dir=/usr/local/bin/pcre-config 
--enable-mbregex


############数据库
#mariadb sock文件位置
--with-mysql-sock[=SOCKPATH]     
--enable-sockets 
#mariadb 安装目录
--with-mysqli=mysqlnd
#mariadb mysql_config 文件位置,包括文件名
--with-mysqli=mysqlnd
--enable-pdo
--with-pdo-mysql=mysqlnd 
#freeTDS需要用到的,可能是链接mssql 才用到
--enable-pcntl
--enable-dbase
--disable-dmalloc
#dba的gdbm支持
--with-gdbm

2.生成安装文件
[root@master temp]# cat php.txt 
--prefix=/share/php/php7.4.3 
--with-apxs2=/share/apache/bin/apxs 
--with-config-file-path=/share/php/php7.4.3/etc 
--enable-fpm 
--with-fpm-user=root
--with-fpm-group=root
--enable-mysqlnd 
--with-mysqli=mysqlnd 
--with-pdo-mysql=mysqlnd 
--enable-mysqlnd-compression-support 
--with-iconv-dir 
--with-freetype-dir 
--with-jpeg-dir 
--with-png-dir 
--with-zlib 
--with-libxml-dir 
--enable-xml 
--disable-rpath 
--enable-bcmath 
--enable-shmop 
--enable-sysvsem 
--enable-inline-optimization 
--with-curl 
--enable-mbregex 
--enable-mbstring 
--enable-intl 
--with-libmbfl 
--enable-ftp 
--with-gd 
--with-openssl 
--with-mhash 
--enable-pcntl 
--enable-sockets 
--with-xmlrpc 
--enable-zip 
--enable-soap 
--with-gettext 
--disable-fileinfo 
--enable-opcache 
--with-pear 
--enable-maintainer-zts 
--with-ldap=shared 
--without-gdbm 
[root@master temp]# ls
1.txt  dmt.sh  gege.service  gege.service.bak  groupauth  init.sh  php.txt  port80  port81  qichong  quchong  sslweb  temp  userauth
[root@master temp]# for i in `cat php.txt`; do echo -e -n  "$i "; done;
--prefix=/share/php/php7.4.3 --with-apxs2=/share/apache/bin/apxs --with-config-file-path=/share/php/php7.4.3/etc --enable-fpm --with-fpm-user=root --with-fpm-group=root --enable-mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --enable-mysqlnd-compression-support --with-iconv-dir --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir --enable-xml --disable-rpath --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --enable-mbregex --enable-mbstring --enable-intl --with-libmbfl --enable-ftp --with-gd --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-xmlrpc --enable-zip --enable-soap --with-gettext --disable-fileinfo --enable-opcache --with-pear --enable-maintainer-zts --with-ldap=shared --without-gdbm 
3.centos7常见错误
error: the HTTP XSLT module requires the libxml2/libxslt 
yum -y install libxml2 libxml2-dev
yum -y install libxslt-devel
error: the HTTP image filter module requires the GD library. 
yum -y install gd-devel
error: the GeoIP module requires the GeoIP library. 
yum -y install GeoIP GeoIP-devel GeoIP-data
error: the Google perftools module requires the Google perftools 
yum -y install gperftools
error: libatomic_ops library was not found. 
yum -y install libuuid-devel libblkid-devel libudev-devel fuse-devel libedit-devel libatomic_ops-devel
error trying to exec 'cc1plus': execvp: No such file or directory 
yum -y install gcc-c++
error: [pool www] cannot get uid for user 'www-data' 
groupadd www-data
useradd -g www-data www-data
configure: error: mbed TLS libraries not found. 。
需要安装mbedtls,教程:https://www.24kplus.com/linux/281.html
error: Cannot find OpenSSL's <evp.h> 
yum install openssl openssl-devel
ln -s /usr/lib64/libssl.so /usr/lib/
error: Libtool library used but 'LIBTOOL' is undefined 
yum install libtool
exec: g++: not found 
yum -y update gcc
yum -y install gcc+ gcc-c++
configure: error: tss lib not found: libtspi.so 
yum install trousers-devel
Can't exec "autopoint": No such file or directory 
yum install gettext gettext-devel gettext-common-devel
configure: error: libcrypto not found. 
yum remove openssl-devel
yum -y install openssl-devel
configure: error: Package requirements (libffi >= 3.0.0) were not met: No package 'libffi' found 
yum install libffi-devel
fatal error: uuid.h: No such file or directory 
yum install e2fsprogs-devel uuid-devel libuuid-devel
configure: error: openssl lib not found: libcrypto.so 
yum install openssl-devel
tar (child): lbzip2: Cannot exec: No such file or directory 
yum -y install bzip2
configure: error: C++ preprocessor "/lib/cpp" fails sanity check 
yum install gcc-c++
configure: error: Please reinstall the BZip2 distribution 
yum install bzip2 bzip2-devel
configure: error: cURL version 7.15.5 or later is required to compile php with cURL support 
yum install curl-devel
configure: error: not found. Please provide a path to MagickWand-config or Wand-config program 
yum install ImageMagick-devel
configure: error: no acceptable C compiler found in $PATH 
yum install gcc
configure: error: Package requirements (icu-uc >= 50.1 icu-io icu-i18n) were not met: 
yum install libicu-devel
configure: error: Package requirements (sqlite3 > 3.7.4) were not met: No package 'sqlite3' found 
yum install sqlite-devel
configure: error: Package requirements (oniguruma) were not met: No package 'oniguruma' found 
yum install oniguruma oniguruma-devel

————Blueicex 2020/2/26 07:45 blueice1980@126.com

 类似资料: