安装 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 缺失无法完成的错误提示,然后就执行了yum install sqlite-devel,将 sqlite3 安装上再重新运行 make 命令。(ubuntu的话要执行 sudo apt-get install libsqlite3-dev进行安装)

make

make install

make 无误,make install 很快。

make install

此时 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 # 查看 PHP 配置相关
php -i |grep Config # 输出
Configure Command => './configure' '--prefix=/usr/local/php' '--with-config-file-path=/usr/local/php/etc' '--enable-fpm'
Configuration File (php.ini) Path => /usr/local/php/etc
Loaded Configuration File => /usr/local/php/etc/php.ini
Configuration

上例中 master process 因为是使用 root 账户启动并运行 php-fpm ,因此显示 root 账户,nobody 是因为默认 www.conf 配置文件中 usergroup 默认值就是 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.comphp 转发

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 监听端口号是 9002Nginx 配置中新增 server 转发到 127.0.0.1:9002,实现同一主机上多个站点的管理。

centos安装php环境的更多相关文章

  1. Linux CentOS安装PHP环境

    Linux CentOS安装PHP环境 1.下载php环境 wget http://cn2.php.net/distributions/php-7.2.1.tar.gz 更多php版本下载  http ...

  2. centos安装go环境

    centos安装go环境 1,下载合适的go安装包 https://studygolang.com/dl 2 上传到 centos服务器的 /usr/local下然后解压 3.设置go的环境变量    ...

  3. CentOS安装LNMP环境的基础组件

    注:以下所有操作均在CentOS 6.5 x86_64位系统下完成. 在安装LNMP环境之前,请确保已经使用yum安装了以下各类基础组件(如果系统已自带,还可以考虑yum update下基础组件): ...

  4. Centos安装桌面环境

    刚开始装系统的时候,没有选Gnome或者KDE,现在想装个玩玩. 简单的安装可以参考这个:http://huruxing159.iteye.com/blog/744750 centos安装是是使用li ...

  5. centos安装sass环境必看

    首先了解一下  sass是什么?! sass号称“世界上最成熟.最稳定.最强大的专业级css扩展语言” ,sass基于于Ruby语言开发而成,因此安装sass前需要安装Ruby, 1.安装ruby y ...

  6. 【CentOS】阿里云CentOS安装php环境

    本文在介绍安装php环境前,已安装了nginx.mysql. 一.安装 使用国内的搜狐镜像站下载php5.6安装包,执行: wget  http://mirrors.sohu.com/php/php- ...

  7. CentOS安装python3环境

    CentOS7.4安装python3环境 (Python 3.8.1) (stable version, Dec.18, 2019) # .从官网下载Python - Dec. , [stable v ...

  8. Centos安装lnmp环境

    1:查看环境: [root@10-4-14-168 html]# cat /etc/redhat-release CentOS release 6.5 (Final) 2:关掉防火墙 [root@10 ...

  9. Centos安装编译环境

    众所周知,在安装完Centos完了以后,是没有编译环境的,我自己挂上光盘,手动安装解决了几十的依赖关系,在配置些软件时,还是经常报些依赖软件包的缺失,很是头疼,后来百度了下centos需要装的编译环境 ...

  10. CentOS 安装开发环境 并安装coTurn

    从官网 https://www.centos.org/download/ 下载镜像文件 从163的镜像站点下载,速度较快 http://mirrors.163.com/centos/7/isos/x8 ...

随机推荐

  1. html css使用特殊自定义字体避免侵权

    一般系统支持的网页常见中文字体有:宋体.雅黑.黑体.但是大多网站使用电脑自带微软雅黑(方正的)可能侵权 p { font-family: Arial,sans-serif; } 可免费商用字体百度自行 ...

  2. 禁止所有搜索爬虫访问网站指定目录robots.txt

    禁止所有搜索爬虫访问网站指定目录 用自己私人的服务器来测试吧,99买阿里云 文件放置不让爬取的网站文件夹目录里 robots.txt User-agent: * Disallow: / User-Ag ...

  3. Qt开发经验小技巧121-130

    QLineEdit除了单纯的文本框以外,还可以做很多特殊的处理用途. 限制输入只能输入IP地址. 限制输入范围,强烈推荐使用 QRegExpValidator 正则表达式来处理. //正在表达式限制输 ...

  4. JavaScript设计模式与开发实践 PDF——带完整书签

    下载链接:JavaScript设计模式与开发实践 带完整书签:

  5. 让我看看有多少人不知道Vue3中也能实现高阶组件HOC

    前言 高阶组件HOC在React社区是非常常见的概念,但是在Vue社区中却是很少人使用.主要原因有两个:1.Vue中一般都是使用SFC,实现HOC比较困难.2.HOC能够实现的东西,在Vue2时代mi ...

  6. ADC温敏电阻测温

    一.ADC采样电路 使用热敏电阻与连续逼近型寄存器 (SAR) 模数转换器 (ADC) 直接监测温度的电路.温度检测电路使用负温度系数 (NTC) 热敏电阻与电阻串联构成分压器. 参考电压:VCC 分 ...

  7. 在SOUI中将自定义配置信息写到布局文件中

    SOUI的布局XML文件保存布局必须的信息.特定场合中,用户可能会需要在布局中指定业务需要处理的属性. 比如启程输入法的皮肤.有的皮肤支持高分屏,有的皮肤不支持.对于这个场景,比较理想的方案是直接在皮 ...

  8. LeetCode必刷100题:一份来自面试官的算法地图(题解持续更新中)

    大家好,我是忍者程序员.上一篇文章我们讨论了如何科学地刷题,今天我要带大家深入了解这100道精选题目背后的分类逻辑.作为一名面试官,我希望通过这篇文章,为大家绘制一张完整的算法知识地图. 为什么要按类 ...

  9. .Net Core 项目启动方式

    本文篇幅较小,讲解如何通过命令行启动项目 接着上一章的Core WebApi(https://www.cnblogs.com/zousc/p/12420998.html),我们已经有了Hello这个控 ...

  10. [JOI 2020 Final] 火事 题解

    给一篇题解.(下面这张图是从 luogu 上粘贴的,因为不太会画图) 其中纵坐标为 \(t\),横坐标为 \(a_i\). 发现同颜色块只有平行四边形和直角梯形(等腰直角三角形)两种情况. 可以将直角 ...