今天重新实践了下 CentOS 7.6 下安装 PHP7 并完成配置,总结了一条可以照其实现的套路。

安装 PHP 所需扩展# yum install libxml2 libxml2-devel openssl openssl-devel bzip2 bzip2-devel libcurl libcurl-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel gmp gmp-devel libmcrypt libmcrypt-devel readline readline-devel libxslt libxslt-devel

获取 PHP 源码包

采用源码编译的方式安装 PHP,好处是可以获取最新版本,也能提供一定的配置灵活性,适合有经验的。获取方式可以在 Centos 中运行 Wget ,也可以在其他环境下下载 tar 包然后上传到服务器上。推荐后者,速度更快,此处假设已经获取到了 php-7.4.0.tar.gz,并存放到了 /home/downloads# cd /home/downloads

# wget https://www.php.net/distributions/php-7.4.0.tar.gz

解压

因与安装实际目录无关,解压到当前目录即可,解压后接入目录等待执行下面操作# tar -xvf php-7.4.0.tar.gz

# cd php-7.4.0

进行配置

对安装进行预配置,设置一些编译参数。最简单的配置是不带任何参数# ./configure

但通常因为可能要自定义 PHP 安装目录、配置文件目录等,可以使用个人习惯的基础配置语句:设定PHP安装目录为 /usr/local/php,配置文件目录为 /usr/local/php/etc,并允许使用 php-fpm 管理 PHP 请求# ./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --enable-fpm

检查输入无误后即可运行,通常很快完成

Make

使用 Make 命令进行编译,时间约 5-10min,可能遇到坑。比如在华为 Centos 7.6 上安装时就遇到了 sqlite3 缺失无法完成的错误提示,百度一下,将 sqlite3 安装上再重新运行 Make 命令# make

make install

如 make 无误,make install 很快。# make install

Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20190902/

Installing PHP CLI binary: /usr/local/php/bin/

Installing PHP CLI man page: /usr/local/php/php/man/man1/

Installing PHP FPM binary: /usr/local/php/sbin/

Installing PHP FPM defconfig: /usr/local/php/etc/

Installing PHP FPM man page: /usr/local/php/php/man/man8/

Installing PHP FPM status page: /usr/local/php/php/php/fpm/

Installing phpdbg binary: /usr/local/php/bin/

Installing phpdbg man page: /usr/local/php/php/man/man1/

Installing PHP CGI binary: /usr/local/php/bin/

Installing PHP CGI man page: /usr/local/php/php/man/man1/

Installing build environment: /usr/local/php/lib/php/build/

Installing header files: /usr/local/php/include/php/

Installing helper programs: /usr/local/php/bin/

Installing man pages: /usr/local/php/php/man/man1/

此时 PHP 安装完毕,接下来就要进行相关配置

设置全局变量

刚才在 配置 一节中,设置 PHP 目录在 /usr/local/php,因此该目录下就有了 bin 目录,将 /usr/local/php/bin 添加到全局变量 $PATH 中编辑文件

# vi /etc/profile

将下面两句添加到文件尾并保存

PATH=$PATH:/usr/local/php/bin

export PATH

刷新生效

# source /etc/profile

查看是否生效

# php -v

参考显示结果

# PHP 7.4.0 (cli) (built: Dec 17 2019 14:44:39) ( NTS )

# Copyright (c) The PHP Group

# Zend Engine v3.4.0, Copyright (c) Zend Technologies

配置 PHP 环境

根据配置时自定义的路径,将有关 PHP 运行的配置文件、启动方式等进行设置,逐一运行下列命令进入PHP源码解压缩目录

# cd /home/downloads/php-7.4.0

将源码中准备好的配置文件复制到指定目录并改名作为 php 运行时的配置文件,在 ./configure 时指定了配置文件目录是 --with-config-file-path=/usr/local/php/etc

# cp php.ini-production /usr/local/php/etc/php.ini

php-fpm.conf 是 php-fpm 运行时配置文件,里边记录了 include 路径,可以将多个配置文件放到 include 路径下

# cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf

www.conf 是默认的有关 www 应用的配置

# cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf

复制 php-fpm 程序到 /etc/init.d,启动、重启或停止 /etc/init.d/php-fpm 即可实现对 PHP 的控制

# cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm

赋予 /etc/init.d/php-fpm 执行权限

# chmod +x /etc/init.d/php-fpm

上述命令完成后,在不考虑与 Nginx 的配合情况下,PHP 实际已经可以独立工作了,可以启动 php-fpm 并查看相关信息# /etc/init.d/php-fpm start[/restart/stop]

输出

Starting php-fpm done

查看 php-fpm 运行情况# ps -ef|grep php

输出

# root 24080 1 0 09:49 ? 00:00:00 php-fpm: master process (/usr/local/php/etc/php-fpm.conf)

# nobody 24081 24080 0 09:49 ? 00:00:00 php-fpm: pool www

# nobody 24082 24080 0 09:49 ? 00:00:00 php-fpm: pool www

# root 24096 23960 0 09:52 pts/0 00:00:00 grep --color=auto php

上例中 master process 因为是使用 root 账户启动并运行 php-fpm ,因此显示 root 账户,nobody 是因为默认 www.conf 配置文件中 user 和 group 默认值就是 nobody 用户

与 Nginx 的配合

假设现在有站点 a.com,路径是 /home/wwwroot/a.com,为方便区别管理,在 /usr/local/php/etc/php-fpm.d 下新增关于 a.com 的配置文件 a.com.conf并假设该文件已创建完毕通过复制 www.conf 创建 a.com.conf

# cp www.conf a.com.conf

编辑目标文件

# vi a.com.conf

修改 user 和 group 的账号,修改为与 nginx 一致

user = nginx

group = nginx

修改监听端口号,即监听 9001 端口,Nginx要将a.com 的请求发到这个端口来(Nginx中设置)

listen = 127.0.0.1:9001

修改 Nginx 配置文件,新增 server 站点,并在 location 中处理 a.com 的 php 转发server {

listen 80;

server_name a.com;

location ~* \.php$ {

root /home/wwwroot/a.com/;

fastcgi_pass 127.0.0.1:9001;

fastcgi_index index.php;

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

include fastcgi_params;

}

}

注意上面 server 节中,有关 .php 的请求被转发去了 127.0.0.1:9001,即 a.com.conf 的设定中,这样两边就配合起来了。以此为例,增加新站点 b.com 时,可以再新建 b.com.conf,并设定 php 监听端口号是 9002,Nginx 配置中新增 server 转发到 127.0.0.1:9002,实现同一主机上多个站点的管理。

坑有关用户名和组:yum 安装 Nginx 后,系统内增加了 nginx 用户和组,因此 Nginx 使用该用户名和组运行没有问题,在 PHP 的 www.conf 配置中,默认用户名和组是 nobody,权限较少,可以修改与 Nginx 一致,即都改成 nginx。

有关系统目录权限:注意网站数据所存放的根目录和父目录的访问权限,本次就遇到了将 wwwroot 根目录放到 /root 下并不合适,可以放到 /home 下。

nginx.conf 配置中有关 PHP 的location内,要设置 root 或其它指定目录的方式,本次就遇到了忘记设置 root,结果同一目录下 html 均能访问,.php 文件始终返回"File Not Found"的问题

centos下安装 php,Centos 下安装 PHP (新)相关推荐

  1. mysql linux centos 安装_Linux centos 下在线安装mysql

    1,查看是否有安装过mysql: #rpm -qa | grep mysql 如果无结果返回,说明没有安装Mysql,可以全新安装. 2,查看在线服务器提供的Mysql相关的安装包有哪些: #yum ...

  2. Linux(CentOS 7_x64位)系统下安装RDkit(修正)

    Linux(CentOS 7_x64位)系统下安装RDkit(修正) 一.RDKit简介 Linux(CentOS 7_x64位)系统下安装RDkit点击打开链接 前面写的一篇CentOS 7下安装R ...

  3. CentOS下yum找不到安装软件的解决方法。

    CentOS下yum找不到安装软件的解决方法. 参考文章: (1)CentOS下yum找不到安装软件的解决方法. (2)https://www.cnblogs.com/linbaiye/archive ...

  4. centos得mysql安装教程_Centos下Mysql安装图文教程_MySQL

    Mysql是比较常用的数据库,日常开发中也是采用地比较多.工欲善其事必先利其器,本文特地来讲解下如何在centos(其他linux发行版类似)下安装Mysql.首先准备的材料:Mysql,我这里采用的 ...

  5. centos 7 如何验证oracle安装成功_linux下Oracle数据的安装详解

    第二章:CentOS下Oracle用户环境配置和Oracle11g的安装: 1.下载Oracle安装包: linux.x64_11gR2_database_1of2.zip 和 linux.x64_1 ...

  6. 手机怎么下载python并安装-CentOS下python的下载及安装

    针对" CentOS下python的下载及安装 "的问题,下面由IT产品经理-陆亦晓为您解答: Python这门编程语言在数据分析.数据发掘以及服务端开发等方面都有非常好的使用,我 ...

  7. centos mysql 5.1_CentOS下的MySQL 5.1安装

    CentOS下的MySQL 5.1安装011.包02wget http://mysql.llarian.net/Downloads/MySQL-5.1/mysql-5.1.63.tar.gz032.解 ...

  8. python (16) 如何在linux下安装lxml(pip安装,ubuntu下,centos下)

    首先需要明白lxml包依赖其他包,必须先安装其他包然后再安装lxml 安装python-pip:方便安装python的第三方包 [root@******/]# wget https://bootstr ...

  9. linux centos安装git,centos下两种方法安装git–转载

    今天下个包需要使用git,网上找了下看到大多数只有编译安装,并且编译安装还有错,不知道他们也没有实验过,这里我来给大家介绍下编译安装和yum安装git. 系统:centos 5.5 需要的软件包:gi ...

  10. zabbix php 5.6 安装配置,CentOS 5.6下Zabbix 1.8.5 服务端安装部署

    CentOS 5.6下Zabbix 1.8.5 服务端安装部署 CentOS 5.6 x86_64 + Zabbix 1.8.5 IP:192.168.88.130 一.安装LAMP环境依赖包: # ...

最新文章

  1. python守护多线程_Python多线程Threading、子线程与守护线程实例详解
  2. android 6.0 sd卡读写权限,Android 6.0 读写SD卡权限问题
  3. 课后作业-阅读任务-阅读笔记4
  4. 记录一次StackOverflowError问题
  5. MySQL Index Merge Optimization
  6. 无缝向上滚动文字代码(Js+div),可用在公告栏
  7. 数字信号处理-02- FPGA常用运算模块-加减法器和乘法器
  8. 基于javaweb的员工绩效考核系统
  9. Solidity教程:初学Solidity
  10. linux vi下划线,如何将我的Vim高亮线更改为不是下划线?
  11. ExtJs6 响应式布局
  12. 曾维沛云推广:全网落地营销为广西南宁企业带来精准客户订单
  13. 打印web页或文本文件时如何去掉讨厌的页眉,页脚?--暨开篇
  14. \t\t盐城范围内野外钓鱼好去处(不是塘钓哟)
  15. 初学者如何吃透一个Java项目
  16. 【P2P网络】DHT协议基础1:Kademlia翻译稿
  17. WCP 新版本中多了几个新的导出函数
  18. poj 2404 Jogging Trails
  19. 菜鸟破解email账号的技巧
  20. ESP8266-AP模式作服务器

热门文章

  1. php sql 二次注入,espcms 二次注入一枚
  2. python是谁维护的_Python 库从开发到维护
  3. stl源码剖析_《STL源码剖析》学习笔记——空间配置器
  4. xp 硬盘安装linux双系统,WinXP硬盘安装Ubuntu 11.10双系统全程图解
  5. controller怎么调用controller_SpringMVC五大核心组件及调用过程
  6. java扫雷教程_java实现简单扫雷游戏
  7. Linux文件夹含义
  8. Linux下svn新建用户,Linux下建立svn工程
  9. 【阿里云OSS】403错误,AccessDenied:The bucket you access does not belong to you.
  10. 【linux】修改机器时间