运维之道 | CentOS7.6 编译安装 PHP7.3

一、安装PHP

1、配置PHP支持环境
[root@localhost ~]# yum -y install libxml2
[root@localhost ~]# yum -y install libxml2-devel

配置前如果没有libxml2libxml2-devel会报错

补充配置

因为不同的操作系统环境,系统安装开发环境包的完整程度也不相同,所以建议安装操作系统的时候做必要选择,也可以统一执行一遍所有的命令,将没有安装的组件安装好,如果已经安装了可能会进行升级

yum -y install openssl
yum -y install openssl-devel
yum -y install curl
yum -y install curl-devel
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 pcre
yum -y install pcre-devel
yum -y install libxslt
yum -y install libxslt-devel
yum -y install bzip2
yum -y install bzip2-devel
2、获取PHP源码包

PHP官网
运维之道 | CentOS7.6 编译安装 PHP7.3_第1张图片

[root@localhost src]# wget https://www.php.net/distributions/php-7.3.15.tar.gz
3、解压源码包
[root@localhost src]# tar -xzvf php-7.3.15.tar.gz
4、编译、安装
[root@localhost ~]# cd /usr/local/src/php-7.3.15
[root@localhost php-7.3.15]# ./configure --prefix=/usr/local/php \
--with-gd \
--with-freetype-dir \
--enable-gd-native-ttf \
--enable-mysqlnd \
--with-pdo-mysql=mysqlnd \
--with-openssl \
--with-mcrypt \
--enable-mbstring \
--enable-zip \
--enable-fpm

[root@localhost php-7.3.15]# make 

编译时间可能会有点长,编译完成之后,执行安装:

[root@localhost php-7.3.15]# make install
5、配置PHP启动
[root@localhost php-7.3.15]# cp php.ini-development /usr/local/php/lib/php.ini
[root@localhost php-7.3.15]# cp sapi/fpm/php-fpm /usr/local/bin
[root@localhost php]# cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf  ##其实就是cp配置文件
6、设置php.ini文件
[root@localhost ~]# vim /usr/local/php/lib/php.ini

在这里插入图片描述
打开php配置文件找到cgi.fix_pathinfo配置项,这一项默认被注释并且值为1,根据官方文档的说明,这里为了当文件不存在时,阻止Nginx将请求发送到后端的PHP-FPM模块,从而避免恶意脚本注入的攻击,所以此项应该去掉注释并设置为0。

拓展

另外注意一个地方就是php.ini配置文件的位置可以在编译前配置参数中设置,编译参数可以写成:–with-config-file-path=/usr/local/php 这样的话php就回去指定的目录下读取php.ini配置文件,如果不加这个参数默认位置就是php安装目录下的lib目录,具体也可以在phpinfo()输出界面查看,如果php.ini放到其他位置,php读取不到,那么所有的配置修改后都是不生效的,这点要注意

  • 此时首先应该创建web用户
[root@localhost ~]# groupadd www-data
[root@localhost ~]# useradd -g www-data www-data
[root@localhost ~]# usermod -s /sbin/nologin www-data
  • 修改www.conf.defalut配置用户的文件
[root@localhost ~]# cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf
[root@localhost ~]# vim /usr/local/php/etc/php-fpm.d/www.conf
  • 默认user和group的设置为nobody,将其改为www-data
user = www-data
group = www-data
  • 修改完成之后,保存并退出,然后执行以下命令启动php-fpm服务
[root@localhost ~]# /usr/local/bin/php-fpm
  • 启动完毕之后,php-fpm 服务默认使用9000端口,使用 netstat -tln | grep 9000可以查看端口使用情况
[root@localhost ~]# netstat -ntl | grep 9000                 
tcp        0      0 127.0.0.1:9000          0.0.0.0:*               LISTEN

9000端口正常使用,说明php-fpm服务启动成功


二、配置 Nginx - PHP

1、修改nginx.conf配置文件

修改location块,追加index.php让nginx服务器默认支持index.php为首页
在这里插入图片描述
配置.php请求被传送到后端的php-fpm模块,默认情况下php配置块是被注释的,此时去掉注释并修改为以下内容
这里面很多都是默认的,root是配置php程序放置的根目录,主要修改的就是fastcgi_param中的/scripts为$document_root
在这里插入图片描述
修改user用户,默认是#user nobody, 这里要去掉注释改为user www-data,表示nginx服务器的权限为www-data
在这里插入图片描述

2、检测nginx配置文件
[root@localhost ~]# /usr/local/nginx/sbin/nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
3、编辑php测试界面
[root@localhost ~]# vim /usr/local/nginx/html/test.php

<?php
        phpinfo();
?>
4、重载nginx服务
[root@localhost ~]# /usr/local/nginx/sbin/nginx -s reload
5、访问php测试界面
192.168.182.11/test.php

运维之道 | CentOS7.6 编译安装 PHP7.3_第2张图片


拓展1:CentOS7 使用 systemctl 命令启动php-fpm服务

1、进入php安装目录下
[root@localhost ~]# cd /usr/local/src/php-7.3.15/sapi/fpm/
2、复制php启动文件到系统启动目录下
[root@localhost fpm]# cp php-fpm.service /usr/lib/systemd/system/
3、使用systemctl代替/usr/local/bin/php-fpm/usr/local/php/sbin/php-fpm命令
[root@localhost ~]# systemctl start php-fpm			# 启动
[root@localhost ~]# systemctl stop php-fpm 			# 停止
[root@localhost ~]# systemctl status php-fpm		# 状态
[root@localhost ~]# systemctl enable php-fpm		# 开机自启

拓展2:PHP编译配置

--prefix=/usr/local/php7 	# 配置安装目录
--with-config-file-path=/usr/local/php7 	# 配置文件 php.ini 的路径
--enable-sockets 	# 开启 socket 
--enable-fpm 	# 启用 fpm 扩展
--enable-cli 	# 启用 命令行模式 (从 php 4.3.0 之后这个模块默认开启所以可以不用再加此命令)
--enable-mbstring 	# 启用 mbstring 库
--enable-pcntl 	# 启用 pcntl (CLI / CGI)
--enable-soap 	# 启用 soap 
--enable-opcache 	# 开启 opcache 缓存
--disable-fileinfo 	# 禁用 fileinfo (由于 5.3+ 之后已经不再持续维护了,但默认是开启的,所以还是禁止了吧)(1G以下内存服务器直接关了吧)
--disable-rpath  	#禁用在搜索路径中传递其他运行库。
--with-mysqli 	# 启用 mysqli 扩展
--with-pdo-mysql 	# 启用 pdo 扩展
--with-iconv-dir 	# 启用 XMLRPC-EPI 字符编码转换 扩展
--with-openssl 	# 启用 openssl 扩展 (需要 openssl openssl-devel)
--with-fpm-user=www 	#设定 fpm 所属的用户 
--with-fpm-group=www 	#设定 fpm 所属的组别
--with-curl 	# 启用 curl 扩展
--with-mhash 	# 开启 mhash 基于离散数学原理的不可逆向的php加密方式扩展库
# GD
--with-gd 	# 启用 GD 图片操作 扩展
--with-jpeg-dir 	# 开启对 jpeg 图片的支持 (需要 libjpeg)
--with-png-dir 	# 开启对 png 图片支持 (需要 libpng)
--with-freetype-dir 	# 开启 freetype 
# 压缩
--enable-zip 	# 启用 zip
--with-zlib 	# 启用对 zlib 支持 
# xml
--enable-simplexml 	# 启用对 simplexml 支持
--with-libxml-dir 	# 启用对 libxml2 支持

你可能感兴趣的:(PHP)