之前写过几次,使用lnmp,宝塔,源码编译等方式来进行PHP环境的搭建, 随着接触的越来越多, 这里做一个总结, 常用的搭建方式

1.编译安装

之前写个几次,可以参考之前的

这次记录下多个版本PHP的安装 (php7.4 + php8.1)

1)安装php7.4

安装编译环境

yum -y install gcc gcc-c++ autoconf automake build-essential zlib zlib-devel openssl openssl-devel pcre pcre-devel

a)下载并解压

cd /usr/local/src/
wget https://www.php.net/distributions/php-7.4.32.tar.gz tar -zxvf php-7.4.32.tar.gz

b)编译并安装

cd php-7.4.32/

./configure --prefix=/usr/local/php74 --with-mysql --with-mysqli --with-pdo_mysql --with-iconv-dir --with-zlib --with-libxml-dir --enable-xml --with-curl --enable-fpm --enable-mbstring --with-gd --with-openssl --with-mhash --enable-sockets --with-xmlrpc --enable-zip --enable-soap --enable-bcmath
make && make install -j 4

c)添加全局变量

vim /etc/bashrc

alias php7=/usr/local/php74/bin/php
alias phpfpm7=/usr/local/php74/sbin/php-fpm # 生效
source /etc/bashrc

d)查看加载的配置文件,并设置

php7 -i|grep php.ini

cp /usr/local/src/php-7.4.32/php.ini-development /usr/local/php74/lib/php.ini

e)添加nginx配置

server {
listen 8041;
server_name 127.0.0.1;
root /data/www/lx;
access_log /data/log/nginx/8041_access.log main;
error_log /data/log/nginx/8041_error.log warn; location / {
#try_files $uri $uri/ /index.php?$query_string;
index index.html index.htm;
} #location ~ .*\.(php|php5)?$ {
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
} }

f)扩展安装

1.进入源码包gd库目录
cd /usr/local/download/php-7.4.11/ext/gd  #这里是我的目录,需要改成你自己的目录 2.生成configure
/usr/local/php/bin/phpize  
#这里是我的目录,需要改成你自己的目录 3)编译
./configure --with-php-config=/usr/local/php/bin/php-config --with-jpeg-dir=/usr/local/jpeg/ 4)安装
make&&make install 5)添加配置php.ini
extension=/usr/local/php/lib/php/extensions/no-debug-non-zts-20190902/gd.so 查看安装的扩展文件:
/usr/local/php/include/php/ext

g)设置开机启动

vim /etc/rc.d/rc.local
添加:
/usr/local/php/sbin/php-fpm

常见问题:

1.FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream, client: 127.0.0.1, server: 127.0.0.1, request: "GET /index.php HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "127.0.0.1"

原因: 默认PHP配置中的fastcgi_param配置fastcgi_param配置,这个地方默认的是/Scripts$fastcgi_script_name

fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;

2.权限不足情况, 修改PHP的进程使用的用户

groupadd www

useradd -g www -s /sbin/nologin www

vim /usr/local/php74/etc/php-fpm.d/www.conf
user = www
group = www

2)安装PHP8.1

安装依赖

yum -y install wget vim pcre pcre-devel openssl openssl-devel libicu-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* libmcrypt libmcrypt-devel mcrypt mhash libxslt libxslt-devel readline readline-devel gmp gmp-devel libcurl libcurl-devel openjpeg-devel sqlite-devel
wget https://www.php.net/distributions/php-8.1.11.tar.gz
tar -zxvf php-8.1.11.tar.gz cd php-8.1.11/
./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php --enable-mbstring --enable-ftp --enable-gd --enable-gd-jis-conv --enable-mysqlnd --enable-pdo --enable-sockets --enable-fpm --enable-xml --enable-soap --enable-pcntl --enable-cli --with-openssl --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --enable-mysqlnd-compression-support --with-pear --with-zlib --with-iconv --with-curl --enable-bcmath make && make install -j 4 source /etc/bashrc
alias php=/usr/local/php/bin/php
alias phpfpm=/usr/local/php/sbin/php-fpm php -i|grep php.ini cp /usr/local/src/php-8.1.11/php.ini-production php.ini 生产环境
or
cp /usr/local/src/php-8.1.11/php.ini-development php.ini 开发环境 cp php-fpm.conf.default php-fpm.conf
cp php-fpm.d/www.conf.default php-fpm.d/www.conf

#Linux创建相关用户
groupadd www
useradd -g www www

groupadd nginx
useradd -g nginx nginx
# 使用Unix的方式链接
修改配置文件 www.conf
listen = /var/run/php-fpm/php7-fpm.sock user www ;
group www; listen.owner = nginx
listen.group = nginx
listen.mode = 0660

# nginx
location ~ \.php$ {
#fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php-fpm/php7-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}

注: php-fpm服务启动使用www用户, Nginx服务启动使用Nginx服务

# 添加启动文件
  1. cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
  2.  chmod +x /etc/init.d/php-fpm

# 添加权限, 指定配置文件

vim /etc/init.d/php-fpm

php_fpm_INI=${prefix}/etc/php.ini

php_opts="--fpm-config $php_fpm_CONF --pid $php_fpm_PID -c $php_fpm_INI -R"

# 将user group 改成 root


vim /usr/local/php/etc/php-fpm.d/www.conf

user = root
group = root


# 重新加载和重启php-fpm服务

systemctl daemon-reload

systemctl restart php-fpm



php-pm 相关配置项修改

/usr/local/php/etc/php-fpm.conf

配置错误日志:
error_log = /usr/local/php/var/php-fpm.log
配置pid文件:
pid = /usr/local/php/var/run/php-fpm.pid

更多操作

PHP5.33.之前
/usr/local/php/sbin/php-fpm{start|stop|quit|restart|reload|logrotate} --start 启动php的fastcgi进程 --stop 强制终止php的fastcgi进程 --quit 平滑终止php的fastcgi进程 --restart 重启php的fastcgi进程 --reload 重新平滑加载php的php.ini --logrotate 重新启用log文件 而新版本的操作变化了,因为直接操作进程就可以了。下面来看下指令: kill -USR2 `cat /usr/local/php/var/run/php-fpm.pid` INT, TERM 立刻终止 QUIT 平滑终止 USR1 重新打开日志文件 USR2 平滑重载所有worker进程并重新载入配置和二进制模块

参考:

2.宝塔

一键傻瓜式安装, 提供可视化界面,方便操作与维护

3.lnmp

一键安装包方式安装

4.OneinStack (https://oneinstack.com/)

自动安装

工具目录: ~/oneinstack

1)重置MySQL密码reset_db_root_password.sh执行密码修改

5.docker

PHP之环境搭建(php7.4 + php8.1)的更多相关文章

  1. LNMP环境搭建(<=PHP7.2)

    目录 准备工作 安装wget 安装net-tools 安装vim 配置显示行号 关闭防火墙 安装Nginx 安装依赖 编译安装Nginx 配置环境变量 Systemd管理 安装MySQL 安装依赖 下 ...

  2. LNMP环境搭建(PHP7.4.0)

    目录 准备工作 安装wget 安装net-tools 安装vim 配置显示行号 关闭防火墙 安装Nginx 安装依赖 编译安装Nginx 配置环境变量 Systemd管理 安装MySQL 安装依赖 下 ...

  3. Windows10搭建PHP7开发环境

    原文:Windows10搭建PHP7开发环境 3年前写了一篇<Windows下搭建PHP开发环境>之后就再也没有碰过PHP了,最近新发布了PHP7然后回去看了一下之前写的文章,发现很多配置 ...

  4. PHP7运行环境搭建(Windows7)

    注:本文来源于<    PHP7运行环境搭建(Windows7)   > php7号称能直追facebook的HHVM,为了体验一把传说中的高性能,我特意在本地电脑上尝试着安装了php7, ...

  5. CentOS 7 yum nginx MySQL PHP7 简易环境搭建(精)

    用centos自带的yum源来安装nginx,mysql和php,超级方便,省去编译的麻烦,省去自己配置的麻烦,还能节省非常多的时间. 我们先把yum源换成国内的阿里云镜像源(当然不换也可以),先备份 ...

  6. WIN7 环境下搭建 PHP7(64 位)操作步骤

    WIN7 环境下搭建 PHP7(64 位)操作步骤 一.安装与配置 Apache 1.下载 Apache下载地址:https://www.apachelounge.com/download/ 2.安装 ...

  7. lnmp环境搭建(centos6.9+mysql5.7+php7.1+nginx1.10)

    安装前准备:CentOS 6.9 64位 最小化安装 yum install -y make gcc gcc-c++ perl zlib-devel libaio libpng libpng-deve ...

  8. lamp环境搭建(centos6.9+apache2.4+mysql5.7+php7.1)

    lamp环境搭建(centos6.9+apache2.4+mysql5.7+php7.1) 安装前准备:CentOS 6.9 64位 最小化安装 yum install -y make gcc gcc ...

  9. CentOS7.3+MySQL5.7+Apache2.4+PHP7.1+phpMyAdmin4.7+JDK1.8+SVN1.6+Jenkins2.1环境搭建

    CentOS7.3+MySQL5.7+Apache2.4+PHP7.1+phpMyAdmin4.7+JDK1.8+SVN1.6+Jenkins2.1环境搭建 1.安装CentOS7.3虚拟机安装说明: ...

  10. DVWA安装,ALMP环境搭建以及php版本转换

    前言 本文记录DVWA(Damn Vulberability Web App)在虚拟机中安装配置,包括ALMP环境的搭建和php版本的转换. 目录 2. ALMP环境搭建 3. php版本切换 一. ...

随机推荐

  1. sentinel 的限流规则及流量控制

    sentinel 前方参考 计算QPS-Sentinel限流算法 https://www.cnblogs.com/yizhiamumu/p/16819497.html Sentinel 介绍与下载使用 ...

  2. webpack笔记-loader的详细使用介绍(四)

    loader 基本上都是第三方类库,使用时需要安装,有一些 loader 还需要安装额外的类库,例如 less-loader 需要 less,babel-loader 需要 babel 等. load ...

  3. DVI与VGA有什么区别?

    DVI接口:DVI(Digital Visual Interface),即数字视频接口.DVI接口速度快.画面清晰.支持HDCP协议. VGA接口:VGA(Video Graphics Array)即 ...

  4. CSIG青年科学家会议圆满举行,合合信息打造智能文档处理融合研究新范式

          近期,第十九届中国图象图形学学会青年科学家会议(简称"会议")在广州召开.会议由中国图象图形学学会(CSIG)主办,琶洲实验室.华南理工大学.中山大学.中国图象图形学学 ...

  5. IOI2000 邮局 加强版 题解

    [IOI2000] 邮局 加强版 题解 考虑动态规划,设 \(f_{i,j}\) 为经过了 \(i\) 个村庄,正在建第 \(j\)​ 个邮局的最优距离. 以及 \(w_{i,j}\) 表示区间 \( ...

  6. LoRaWAN网关价格干穿地板了

    废话不多说,不要998,不要688,以太网版本只要398,4G版本只要498. 先上图片 1.1 产品特点 ◆ 高性能嵌入式硬件平台 ◆ 使用工业级 Cat.1 4G 模块 ◆ 宽压输入 DC 9-2 ...

  7. 即刻报名 | Flutter Engage China 线上见!

    在刚刚过去的 Flutter Engage 活动上,我们正式发布了 Flutter 2: 为任何平台创建美观.快速且可移植应用的能力得以更上一层楼.通过 Flutter 2,开发者可以使用相同的代码库 ...

  8. Kubernetes DaemonSet 控制器(二十二)

    通过该控制器的名称我们可以看出它的用法:Daemon,就是用来部署守护进程的,DaemonSet用于在每个 Kubernetes 节点中将守护进程的副本作为后台进程运行,说白了就是在每个节点部署一个 ...

  9. 【赵渝强老师】使用Docker UI

    Docker提供一个平台来把应用程序当作容器来打包.分发.共享和运行,它已经通过节省工作时间来拯救了成千上万的系统管理员和开发人员.Docker不用关注主机上运行的操作系统是什么,它没有开发语言.框架 ...

  10. PHP面试,拼团

    如何设计数据库模型来支持拼团功能? 答案:拼团功能涉及到多个用户参与同一团的情况,可以设计以下表结构: Product 表: 存储商品信息,包括商品ID.名称.价格等字段. Group 表: 存储拼团 ...